summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_ai_script_commands.c26
-rw-r--r--src/battle_ai_switch_items.c14
-rw-r--r--src/battle_anim_effects_1.c39
-rwxr-xr-xsrc/battle_anim_effects_3.c28
-rw-r--r--src/battle_anim_mons.c4
-rwxr-xr-xsrc/battle_anim_special.c2
-rw-r--r--src/battle_controller_link_opponent.c2
-rw-r--r--src/battle_controller_link_partner.c2
-rw-r--r--src/battle_controller_opponent.c2
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_controller_player_partner.c2
-rw-r--r--src/battle_controller_recorded_opponent.c2
-rw-r--r--src/battle_controller_recorded_player.c2
-rw-r--r--src/battle_controller_wally.c2
-rw-r--r--src/battle_controllers.c33
-rw-r--r--src/battle_dome.c10
-rw-r--r--src/battle_factory.c8
-rw-r--r--src/battle_factory_screen.c10
-rw-r--r--src/battle_gfx_sfx_util.c28
-rw-r--r--src/battle_intro.c127
-rw-r--r--src/battle_main.c5
-rw-r--r--src/battle_pike.c20
-rw-r--r--src/battle_pyramid.c16
-rw-r--r--src/battle_pyramid_bag.c8
-rw-r--r--src/battle_script_commands.c22
-rw-r--r--src/battle_tent.c2
-rw-r--r--src/battle_transition.c8
-rw-r--r--src/berry_blender.c10
-rwxr-xr-xsrc/berry_crush.c200
-rw-r--r--src/berry_tag_screen.c18
-rw-r--r--src/bg.c21
-rw-r--r--src/braille_puzzles.c37
-rw-r--r--src/cable_car.c2
-rw-r--r--src/contest.c6
-rw-r--r--src/contest_link_80F57C4.c918
-rw-r--r--src/contest_painting.c17
-rwxr-xr-xsrc/data/.gitignore1
-rw-r--r--src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h320
-rw-r--r--src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h320
-rw-r--r--src/data/battle_frontier/trainer_hill.h384
-rw-r--r--src/data/graphics/berries.h8
-rw-r--r--src/data/pokemon/base_stats.h1161
-rw-r--r--src/data/pokemon/trainer_class_lookups.h5
-rw-r--r--src/data/region_map/city_map_entries.h113
-rw-r--r--src/data/region_map/city_map_tilemaps.h22
-rw-r--r--src/data/text/gift_ribbon_descriptions.h115
-rw-r--r--src/data/text/match_call_messages.h476
-rw-r--r--src/data/text/ribbon_descriptions.h48
-rw-r--r--src/data/text/trainer_class_names.h4
-rw-r--r--src/data/trainers.h3424
-rw-r--r--src/data/wild_encounters.h4573
-rwxr-xr-xsrc/data/wild_encounters.json12186
-rwxr-xr-xsrc/data/wild_encounters.json.txt67
-rw-r--r--src/decoration.c1
-rw-r--r--src/dma3_manager.c4
-rw-r--r--src/dodrio_berry_picking.c5086
-rw-r--r--src/egg_hatch.c2
-rwxr-xr-xsrc/ereader_helpers.c22
-rwxr-xr-xsrc/ereader_screen.c2
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/field_camera.c10
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_effect.c2
-rwxr-xr-xsrc/field_effect_helpers.c4
-rw-r--r--src/field_player_avatar.c19
-rw-r--r--src/field_special_scene.c16
-rw-r--r--src/field_specials.c344
-rw-r--r--src/field_tasks.c64
-rw-r--r--src/field_weather.c2
-rw-r--r--src/fire.c1
-rw-r--r--src/fldeff_cut.c205
-rw-r--r--src/fldeff_escalator.c63
-rw-r--r--src/fldeff_flash.c8
-rw-r--r--src/fldeff_misc.c15
-rw-r--r--src/fldeff_softboiled.c14
-rw-r--r--src/ghost.c3
-rw-r--r--src/gpu_regs.c6
-rw-r--r--src/graphics.c8
-rw-r--r--src/item.c3
-rwxr-xr-xsrc/item_menu.c782
-rw-r--r--src/item_menu_icons.c236
-rwxr-xr-xsrc/item_use.c32
-rw-r--r--src/librfu.c9
-rw-r--r--src/librfu_intr.c1
-rw-r--r--src/librfu_stwi.c2
-rw-r--r--src/link.c31
-rw-r--r--src/link_rfu.c74
-rw-r--r--src/load_save.c8
-rw-r--r--src/m4a.c1
-rw-r--r--src/main.c20
-rw-r--r--src/main_menu.c2
-rw-r--r--src/match_call.c2
-rw-r--r--src/mauville_old_man.c2
-rw-r--r--src/menu.c358
-rw-r--r--src/menu_helpers.c2
-rw-r--r--src/menu_specialized.c410
-rw-r--r--src/mirage_tower.c39
-rw-r--r--src/multiboot.c4
-rw-r--r--src/new_game.c3
-rw-r--r--src/overworld.c12
-rw-r--r--src/palette.c6
-rwxr-xr-xsrc/party_menu.c873
-rw-r--r--src/pokedex.c2
-rwxr-xr-xsrc/pokedex_area_screen.c10
-rw-r--r--src/pokemon.c104
-rw-r--r--src/pokemon_animation.c35
-rw-r--r--src/pokemon_icon.c2
-rwxr-xr-xsrc/pokemon_jump.c2642
-rw-r--r--src/pokemon_storage_system.c399
-rw-r--r--src/pokemon_summary_screen.c8
-rw-r--r--src/pokenav.c4
-rw-r--r--src/pokenav_main_menu.c44
-rw-r--r--src/pokenav_match_call_data.c236
-rw-r--r--src/pokenav_match_call_ui.c2
-rw-r--r--src/pokenav_unk_10.c1163
-rw-r--r--src/pokenav_unk_2.c279
-rwxr-xr-xsrc/pokenav_unk_3.c19
-rwxr-xr-xsrc/pokenav_unk_4.c232
-rwxr-xr-xsrc/pokenav_unk_5.c141
-rw-r--r--src/pokenav_unk_6.c625
-rw-r--r--src/pokenav_unk_7.c884
-rw-r--r--src/pokenav_unk_8.c189
-rw-r--r--src/pokenav_unk_9.c74
-rw-r--r--src/random.c4
-rw-r--r--src/record_mixing.c30
-rw-r--r--src/recorded_battle.c4
-rw-r--r--src/reset_rtc_screen.c2
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/rom_8034C54.c6
-rw-r--r--src/roulette.c8
-rwxr-xr-xsrc/roulette_util.c3
-rw-r--r--src/rtc.c8
-rw-r--r--src/save.c5
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/script.c12
-rw-r--r--src/script_menu.c4
-rw-r--r--src/secret_base.c4
-rwxr-xr-xsrc/shop.c10
-rw-r--r--src/slot_machine.c2
-rw-r--r--src/sound.c10
-rw-r--r--src/sprite.c8
-rw-r--r--src/starter_choose.c2
-rw-r--r--src/strings.c78
-rw-r--r--src/text.c105
-rw-r--r--src/trade.c9
-rwxr-xr-xsrc/trainer_card.c54
-rw-r--r--src/trainer_hill.c2
-rw-r--r--src/trainer_pokemon_sprites.c4
-rw-r--r--src/trainer_see.c2
-rw-r--r--src/tv.c15
-rw-r--r--src/union_room.c80
-rw-r--r--src/union_room_battle.c3
-rw-r--r--src/union_room_player_avatar.c11
-rw-r--r--src/use_pokeblock.c269
-rw-r--r--src/wild_encounter.c10
155 files changed, 29784 insertions, 11777 deletions
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 5e832aba0..3c07cc227 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -1364,24 +1364,24 @@ static void BattleAICmd_get_ability(void)
return;
}
- if (gBaseStats[gBattleMons[battlerId].species].ability1 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[0] != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[battlerId].species].ability2 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[1] != ABILITY_NONE)
{
// AI has no knowledge of opponent, so it guesses which ability.
if (Random() & 1)
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].ability1;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[0];
else
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].ability2;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[1];
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].ability1; // It's definitely ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[0]; // It's definitely ability 1.
}
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].ability2; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
}
}
else
@@ -1412,15 +1412,15 @@ static void BattleAICmd_check_ability(void)
{
ability = gBattleMons[battlerId].ability;
}
- else if (gBaseStats[gBattleMons[battlerId].species].ability1 != ABILITY_NONE)
+ else if (gBaseStats[gBattleMons[battlerId].species].abilities[0] != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[battlerId].species].ability2 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[1] != ABILITY_NONE)
{
u8 abilityDummyVariable = ability; // Needed to match.
- if (gBaseStats[gBattleMons[battlerId].species].ability1 != abilityDummyVariable
- && gBaseStats[gBattleMons[battlerId].species].ability2 != abilityDummyVariable)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[0] != abilityDummyVariable
+ && gBaseStats[gBattleMons[battlerId].species].abilities[1] != abilityDummyVariable)
{
- ability = gBaseStats[gBattleMons[battlerId].species].ability1;
+ ability = gBaseStats[gBattleMons[battlerId].species].abilities[0];
}
else
{
@@ -1429,12 +1429,12 @@ static void BattleAICmd_check_ability(void)
}
else
{
- ability = gBaseStats[gBattleMons[battlerId].species].ability1;
+ ability = gBaseStats[gBattleMons[battlerId].species].abilities[0];
}
}
else
{
- ability = gBaseStats[gBattleMons[battlerId].species].ability2; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
+ ability = gBaseStats[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
}
}
else
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index de798eee3..cd31293f8 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -93,7 +93,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
continue;
GetMonData(&party[i], MON_DATA_SPECIES); // Unused return value.
- GetMonData(&party[i], MON_DATA_ALT_ABILITY); // Unused return value.
+ GetMonData(&party[i], MON_DATA_ABILITY_NUM); // Unused return value.
for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < MAX_MON_MOVES; j++)
{
@@ -197,10 +197,10 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
continue;
species = GetMonData(&party[i], MON_DATA_SPECIES);
- if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
- monAbility = gBaseStats[species].ability2;
+ if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0)
+ monAbility = gBaseStats[species].abilities[1];
else
- monAbility = gBaseStats[species].ability1;
+ monAbility = gBaseStats[species].abilities[0];
if (absorbingTypeAbility == monAbility && Random() & 1)
{
@@ -392,10 +392,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
continue;
species = GetMonData(&party[i], MON_DATA_SPECIES);
- if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
- monAbility = gBaseStats[species].ability2;
+ if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0)
+ monAbility = gBaseStats[species].abilities[1];
else
- monAbility = gBaseStats[species].ability1;
+ monAbility = gBaseStats[species].abilities[0];
moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBattler], species, monAbility);
if (moveFlags & flags)
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 49bb0216b..b3a67a509 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -5315,21 +5315,19 @@ static void sub_8102D8C(s16 a, s16 b, s16* c, s16* d, s8 e)
static void sub_8102DE4(struct Sprite* sprite)
{
- int b;
- s16 a;
- int c;
+ s16 y, yDelta;
u8 index;
+
sprite->data[0]++;
- b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
+ yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
sprite->pos1.x = sprite->data[4] >> 4;
sprite->pos1.y = sprite->data[5] >> 4;
- sprite->pos2.y = Sin(b, 15);
- a = (u16)sprite->pos1.y;
- c = (u16)sprite->pos1.x;
+ sprite->pos2.y = Sin(yDelta, 15);
- if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
+ y = sprite->pos1.y;
+ if (sprite->pos1.x < -16 || sprite->pos1.x > 256 || y < -16 || y > 128)
{
DestroySpriteAndMatrix(sprite);
}
@@ -5350,12 +5348,8 @@ static void sub_8102DE4(struct Sprite* sprite)
void sub_8102EB0(struct Sprite* sprite)
{
- int a;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- {
- a = gBattleAnimArgs[1];
- (u16)gBattleAnimArgs[1] = -a;
- }
+ gBattleAnimArgs[1] *= -1;
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
@@ -5541,8 +5535,8 @@ static void sub_8103300(struct Sprite* sprite)
static void sub_8103320(struct Sprite* sprite)
{
- s16 temp;
- s16 temp2;
+ s16 x1, x2;
+
sprite->data[1] += 4;
if (sprite->data[1] > 254)
{
@@ -5564,20 +5558,21 @@ static void sub_8103320(struct Sprite* sprite)
if (sprite->data[1] > 0x9F)
sprite->subpriority = sprite->data[2];
- temp = gSineTable[sprite->data[1]];
- sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
+ x1 = gSineTable[sprite->data[1]];
+ x2 = x1 >> 3;
+ sprite->pos2.x = (x1 >> 3) + (x2 >> 1);
}
void sub_8103390(struct Sprite* sprite)
{
- u8 bank;
+ u8 battler;
if (gBattleAnimArgs[0] == 0)
- bank = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- bank = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- sub_810310C(bank, sprite);
- if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ sub_810310C(battler, sprite);
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 0);
sprite->data[0] = 2;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index ab765b8c1..5d79a9e6b 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -2504,13 +2504,10 @@ void sub_815BE04(struct Sprite *sprite)
static void sub_815BF44(struct Sprite *sprite)
{
- int var0;
- s8 var1;
-
- var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
+ s16 delta = sprite->data[3] + sprite->data[2];
+ sprite->pos2.y -= delta >> 8;
+ sprite->data[3] += sprite->data[2];
+ sprite->data[3] &= 0xFF;
if (sprite->data[4] == 0 && sprite->pos2.y < -8)
{
gSprites[sprite->data[6]].invisible = 0;
@@ -2543,19 +2540,12 @@ static void sub_815BFF4(struct Sprite *sprite)
static void sub_815C050(struct Sprite *sprite)
{
- u16 d2;
- register u16 d3 asm("r1");
- int var0;
- s8 var1;
-
if (!sprite->invisible)
{
- d2 = sprite->data[2];
- d3 = sprite->data[3];
- var0 = d2 + d3;
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
+ s16 delta = sprite->data[3] + sprite->data[2];
+ sprite->pos2.y -= delta >> 8;
+ sprite->data[3] += sprite->data[2];
+ sprite->data[3] &= 0xFF;
if (--sprite->data[1] == -1)
{
sprite->invisible = 1;
@@ -4322,7 +4312,7 @@ static void AnimSmellingSaltExclamationStep(struct Sprite *sprite)
// Claps a hand several times.
// arg 0: which hand
-// arg 1:
+// arg 1:
void AnimHelpingHandClap(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index c6058204d..a667daecf 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -2037,7 +2037,7 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
if (!isBackpic)
{
- LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->field_17C,
@@ -2053,7 +2053,7 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
}
else
{
- LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->field_17C,
diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c
index 740340d14..6780f0a32 100755
--- a/src/battle_anim_special.c
+++ b/src/battle_anim_special.c
@@ -2029,7 +2029,7 @@ void sub_8172EF0(u8 battler, struct Pokemon *mon)
if (IsBattlerSpriteVisible(battler))
{
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
- if (shinyValue < 8)
+ if (shinyValue < SHINY_ODDS)
isShiny = TRUE;
if (isShiny)
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 3fb5da9dc..d3842e416 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -602,7 +602,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gEnemyParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 6fc73a604..1c92aaaad 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -487,7 +487,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gPlayerParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 392811327..e096536c9 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -585,7 +585,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gEnemyParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index e4b5b5c18..b73bfc36f 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -1628,7 +1628,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gPlayerParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 0ec21fd22..e625f24de 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -672,7 +672,7 @@ static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gPlayerParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 69d840020..b21d8288c 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -584,7 +584,7 @@ static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gEnemyParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 95683225e..b59a4f25d 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -567,7 +567,7 @@ static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gPlayerParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 6a5b23e59..f7035540b 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -485,7 +485,7 @@ static u32 CopyWallyMonData(u8 monId, u8 *dst)
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
- battleMon.altAbility = GetMonData(&gPlayerParty[monId], MON_DATA_ALT_ABILITY);
+ battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
StringCopy10(battleMon.nickname, nickname);
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 29272c19a..4b5bb7a8a 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -819,15 +819,11 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
}
}
-// fix me
void sub_8033648(void)
{
u8 i;
s32 j;
- u16 r6;
u8 *recvBuffer;
- u8 *dest;
- u8 *src;
if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_20))
{
@@ -838,25 +834,24 @@ void sub_8033648(void)
{
ResetBlockReceivedFlag(i);
recvBuffer = (u8 *)gBlockRecvBuffer[i];
- #ifndef NONMATCHING
- asm("");
- recvBuffer = (u8 *)&gBlockRecvBuffer[i];
- #endif
- r6 = gBlockRecvBuffer[i][2];
-
- if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
{
- gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
- gTasks[sLinkReceiveTaskId].data[14] = 0;
- }
+ u8 *dest, *src;
+ u16 r6 = gBlockRecvBuffer[i][2];
+
+ if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
+ {
+ gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
+ gTasks[sLinkReceiveTaskId].data[14] = 0;
+ }
- dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
- src = recvBuffer;
+ dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
+ src = recvBuffer;
- for (j = 0; j < r6 + 8; j++)
- dest[j] = src[j];
+ for (j = 0; j < r6 + 8; j++)
+ dest[j] = src[j];
- gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
+ gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
+ }
}
}
}
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 95fce49a3..1c116467d 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -1024,13 +1024,13 @@ static const union AnimCmd gUnknown_0860D020[] =
static const union AnimCmd gUnknown_0860D028[] =
{
- ANIMCMD_FRAME(18, 129, .vFlip = TRUE),
+ ANIMCMD_FRAME(18, 1, .vFlip = TRUE),
ANIMCMD_END,
};
static const union AnimCmd gUnknown_0860D030[] =
{
- ANIMCMD_FRAME(16, 65, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
ANIMCMD_END,
};
@@ -2903,7 +2903,7 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
defType1 = gBaseStats[targetSpecies].type1;
defType2 = gBaseStats[targetSpecies].type2;
- defAbility = gBaseStats[targetSpecies].ability1;
+ defAbility = gBaseStats[targetSpecies].abilities[0];
moveType = gBattleMoves[move].type;
if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND)
@@ -5447,9 +5447,9 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].species;
if (var & 1)
- targetAbility = gBaseStats[targetSpecies].ability2;
+ targetAbility = gBaseStats[targetSpecies].abilities[1];
else
- targetAbility = gBaseStats[targetSpecies].ability1;
+ targetAbility = gBaseStats[targetSpecies].abilities[0];
var = AI_TypeCalc(moveIds[i * 4 + j], targetSpecies, targetAbility);
if (var & MOVE_RESULT_NOT_VERY_EFFECTIVE && var & MOVE_RESULT_SUPER_EFFECTIVE)
diff --git a/src/battle_factory.c b/src/battle_factory.c
index d08ffe6e6..6c249bccc 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -16,7 +16,7 @@
#include "constants/moves.h"
// IWRAM bss
-static IWRAM_DATA bool8 sPerformedRentalSwap;
+static bool8 sPerformedRentalSwap;
// This file's functions.
static void InitFactoryChallenge(void);
@@ -373,7 +373,7 @@ static void SetRentalsToOpponentParty(void)
gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId = gUnknown_03006298[i];
gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityBit = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ALT_ABILITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityNum = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ABILITY_NUM, NULL);
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gUnknown_03006298[i]].itemTableId]);
}
}
@@ -439,7 +439,7 @@ static void SetPlayerAndOpponentParties(void)
SetMonMoveAvoidReturn(&gPlayerParty[i], gFacilityTrainerMons[monSetId].moves[k], k);
SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &friendship);
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
- SetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit);
+ SetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i].abilityNum);
}
}
@@ -478,7 +478,7 @@ static void SetPlayerAndOpponentParties(void)
for (k = 0; k < MAX_MON_MOVES; k++)
SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monSetId].moves[k], k);
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
- SetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityBit);
+ SetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityNum);
}
break;
}
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 02804ba0b..f56442432 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -227,9 +227,9 @@ static EWRAM_DATA u8 *sSwapMenuTilemapBuffer = NULL;
static EWRAM_DATA u8 *sSwapMonCardBgTilemapBuffer = NULL;
// IWRAM bss
-static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
-static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
-static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
+static struct FactorySelectMonsStruct *sFactorySelectScreen;
+static void (*sSwap_CurrentTableFunc)(u8 taskId);
+static struct FactorySwapMonsStruct *sFactorySwapScreen;
// IWRAM common
u8 (*gUnknown_030062E8)(void);
@@ -1742,7 +1742,7 @@ static void Select_CopyMonsToPlayerParty(void)
gPlayerParty[i] = sFactorySelectScreen->mons[j].monData;
gSaveBlock2Ptr->frontier.rentalMons[i].monId = sFactorySelectScreen->mons[j].monSetId;
gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i].abilityNum = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ABILITY_NUM, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL);
break;
}
@@ -2266,7 +2266,7 @@ static void CopySwappedMonData(void)
gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].monId;
gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].ivs;
gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].personality = GetMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId], MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].abilityBit = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ALT_ABILITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].abilityNum = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ABILITY_NUM, NULL);
}
static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index d6b1b6dee..cdd7e8158 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -534,7 +534,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
- lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
+ lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
@@ -597,7 +597,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
- lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
+ lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
@@ -918,7 +918,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + battlerAtk * 16;
- lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
+ lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 32);
@@ -945,10 +945,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
{
- u8 position;
- s32 i;
- u32 var;
- const void *substitutePal;
+ s32 i, position, palOffset;
if (!loadMonSprite)
{
@@ -964,19 +961,16 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
else
LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
- i = 1;
- var = battlerId * 16;
- substitutePal = gSubstituteDollPal;
- for (; i < 4; i++)
+ for (i = 1; i < 4; i++)
{
- register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position];
- void *dmaDst = (i * 0x800) + dmaSrc;
- u32 dmaSize = 0x800;
- DmaCopy32(3, dmaSrc, dmaDst, dmaSize);
- i++;i--;
+ u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position];
+ ptr++;ptr--; // Needed to match.
+
+ DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800);
}
- LoadCompressedPalette(substitutePal, 0x100 + var, 32);
+ palOffset = (battlerId * 16) + 0x100;
+ LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
}
else
{
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 043cf855a..6964428a3 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -205,7 +205,7 @@ static void BattleIntroSlide1(u8 taskId)
if (gBattle_WIN0V & 0xFF00)
gBattle_WIN0V -= 0x3FC;
-
+
if (gTasks[taskId].data[2])
gTasks[taskId].data[2] -= 2;
@@ -314,7 +314,7 @@ static void BattleIntroSlide2(u8 taskId)
if (gBattle_WIN0V & 0xFF00)
gBattle_WIN0V -= 0x3FC;
-
+
if (gTasks[taskId].data[2])
gTasks[taskId].data[2] -= 2;
@@ -402,7 +402,7 @@ static void BattleIntroSlide3(u8 taskId)
if (gBattle_WIN0V & 0xFF00)
gBattle_WIN0V -= 0x3FC;
-
+
if (gTasks[taskId].data[2])
gTasks[taskId].data[2] -= 2;
@@ -484,7 +484,7 @@ static void BattleIntroSlideLink(u8 taskId)
case 3:
if (gBattle_WIN0V & 0xFF00)
gBattle_WIN0V -= 0x3FC;
-
+
if (gTasks[taskId].data[2])
gTasks[taskId].data[2] -= 2;
@@ -537,7 +537,7 @@ static void BattleIntroSlidePartner(u8 taskId)
gBattle_WIN0V += 0x100;
if ((gBattle_WIN0V & 0xFF00) != 0x100)
gBattle_WIN0V--;
-
+
if ((gBattle_WIN0V & 0xFF00) == 0x2000)
{
gTasks[taskId].data[0]++;
@@ -600,129 +600,18 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar
LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
}
-#ifdef NONMATCHING
void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
{
- int i, j;
- int offset;
+ int i, j, offset;
+
DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
offset = (arg5 >> 5) - (arg7 << 9);
for (i = arg1; i < arg1 + 8; i++)
{
for (j = arg0; j < arg0 + 8; j++)
{
- ((u16 *)BG_VRAM)[i * 32 + j + (arg6 * 0x400) + arg0] = offset | (arg4 << 12);
+ *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (arg4 << 12);
offset++;
}
}
}
-#else
-NAKED
-void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- ldr r4, [sp, 0x24]\n\
- ldr r5, [sp, 0x28]\n\
- mov r8, r5\n\
- ldr r5, [sp, 0x2C]\n\
- ldr r6, [sp, 0x30]\n\
- mov r9, r6\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r12, r0\n\
- lsls r1, 24\n\
- lsls r2, 24\n\
- lsls r3, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r10, r4\n\
- mov r7, r8\n\
- lsls r7, 16\n\
- lsrs r6, r7, 16\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- mov r0, r9\n\
- lsls r0, 24\n\
- mov r9, r0\n\
- ldr r4, =0x040000d4\n\
- ldr r0, =gMonSpritesGfxPtr\n\
- ldr r0, [r0]\n\
- lsrs r2, 22\n\
- adds r0, 0x4\n\
- adds r0, r2\n\
- lsrs r3, 13\n\
- ldr r0, [r0]\n\
- adds r0, r3\n\
- str r0, [r4]\n\
- movs r0, 0xC0\n\
- lsls r0, 19\n\
- adds r6, r0\n\
- str r6, [r4, 0x4]\n\
- ldr r0, =0x80000400\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r2, r7, 0\n\
- lsrs r2, 21\n\
- mov r6, r9\n\
- lsrs r6, 15\n\
- subs r4, r2, r6\n\
- lsrs r0, r1, 24\n\
- adds r1, r0, 0\n\
- adds r1, 0x8\n\
- cmp r0, r1\n\
- bge _08119148\n\
- mov r9, r1\n\
- mov r7, r12\n\
- lsls r7, 1\n\
- mov r8, r7\n\
- lsls r5, 11\n\
- str r5, [sp]\n\
-_08119110:\n\
- mov r2, r12\n\
- adds r3, r2, 0\n\
- adds r3, 0x8\n\
- adds r5, r0, 0x1\n\
- cmp r2, r3\n\
- bge _08119142\n\
- mov r1, r10\n\
- lsls r6, r1, 12\n\
- lsls r0, 6\n\
- movs r7, 0xC0\n\
- lsls r7, 19\n\
- adds r0, r7\n\
- ldr r1, [sp]\n\
- adds r0, r1, r0\n\
- mov r7, r8\n\
- adds r1, r7, r0\n\
- subs r2, r3, r2\n\
-_08119132:\n\
- adds r0, r4, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r4, 0x1\n\
- adds r1, 0x2\n\
- subs r2, 0x1\n\
- cmp r2, 0\n\
- bne _08119132\n\
-_08119142:\n\
- adds r0, r5, 0\n\
- cmp r0, r9\n\
- blt _08119110\n\
-_08119148:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif
diff --git a/src/battle_main.c b/src/battle_main.c
index 76bd6d877..61b6a5a12 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -72,6 +72,9 @@ extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
// this file's functions
+#if !defined(NONMATCHING) && MODERN
+#define static
+#endif
static void CB2_InitBattleInternal(void);
static void CB2_PreInitMultiBattle(void);
static void CB2_PreInitIngamePlayerPartnerBattle(void);
@@ -3390,7 +3393,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
- gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum);
hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)];
*hpOnSwitchout = gBattleMons[gActiveBattler].hp;
for (i = 0; i < NUM_BATTLE_STATS; i++)
diff --git a/src/battle_pike.c b/src/battle_pike.c
index cc58b81bb..8846e2d1a 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -53,11 +53,11 @@ struct PikeWildMon
};
// IWRAM bss
-static IWRAM_DATA u8 sRoomType;
-static IWRAM_DATA u8 sStatusMon;
-static IWRAM_DATA bool8 sUnknown_0300128E;
-static IWRAM_DATA u32 sStatusFlags;
-static IWRAM_DATA u8 sNpcId;
+static u8 sRoomType;
+static u8 sStatusMon;
+static bool8 sUnknown_0300128E;
+static u32 sStatusFlags;
+static u8 sNpcId;
// This file's functions.
static void SetRoomType(void);
@@ -1122,7 +1122,7 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate)
u8 headerId = GetBattlePikeWildMonHeaderId();
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
const struct PikeWildMon *const *const wildMons = sWildMons[lvlMode];
- u32 abilityBit;
+ u32 abilityNum;
s32 pikeMonId = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
pikeMonId = SpeciesToPikeMonId(pikeMonId);
@@ -1152,11 +1152,11 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate)
MON_DATA_EXP,
&gExperienceTables[gBaseStats[wildMons[headerId][pikeMonId].species].growthRate][monLevel]);
- if (gBaseStats[wildMons[headerId][pikeMonId].species].ability2)
- abilityBit = Random() % 2;
+ if (gBaseStats[wildMons[headerId][pikeMonId].species].abilities[1])
+ abilityNum = Random() % 2;
else
- abilityBit = 0;
- SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &abilityBit);
+ abilityNum = 0;
+ SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &abilityNum);
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(&gEnemyParty[0], wildMons[headerId][pikeMonId].moves[i], i);
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 34da3a25d..cc722da8d 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -76,7 +76,7 @@ struct PyramidWildMon
{
u16 species;
u8 lvl;
- u8 abilityBit;
+ u8 abilityNum;
u16 moves[4];
};
@@ -129,6 +129,8 @@ static bool8 TrySetPyramidEventObjectPositionInSquare(u8 arg0, u8 *floorLayoutOf
static bool8 TrySetPyramidEventObjectPositionAtCoords(bool8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 eventObjectId);
// Const rom data.
+#define ABILITY_RANDOM 2 // For wild mons data.
+
#include "data/battle_frontier/battle_pyramid_level_50_wild_mons.h"
#include "data/battle_frontier/battle_pyramid_open_level_wild_mons.h"
@@ -1401,23 +1403,23 @@ void GenerateBattlePyramidWildMon(void)
MON_DATA_EXP,
&gExperienceTables[gBaseStats[wildMons[id].species].growthRate][lvl]);
- switch (wildMons[id].abilityBit)
+ switch (wildMons[id].abilityNum)
{
case 0:
case 1:
- SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &wildMons[id].abilityBit);
+ SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &wildMons[id].abilityNum);
break;
- case 2:
+ case ABILITY_RANDOM:
default:
- if (gBaseStats[wildMons[id].species].ability2)
+ if (gBaseStats[wildMons[id].species].abilities[1])
{
i = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL) % 2;
- SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &i);
+ SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i);
}
else
{
i = 0;
- SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &i);
+ SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i);
}
break;
}
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index ee35ed45b..b4ec6cd62 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -324,7 +324,7 @@ static const union AffineAnimCmd * const gSpriteAffineAnimTable_861F3C4[] =
gSpriteAffineAnim_861F39C,
};
-static const struct CompressedSpriteSheet gUnknown_0861F3CC = {gBattleFrontierGfx_PyramidBag, 0x0800, 0x1024};
+static const struct CompressedSpriteSheet gPyramidBagSpriteSheet = {gBattleFrontierGfx_PyramidBag, 0x0800, 0x1024};
static const struct SpriteTemplate gUnknown_0861F3D4 =
{
@@ -538,7 +538,7 @@ static bool8 sub_81C5238(void)
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9AE04, gPyramidBagResources->tilemapBuffer);
+ LZDecompressWram(gBattleFrontierGfx_PyramidBagTileMap, gPyramidBagResources->tilemapBuffer);
gPyramidBagResources->state++;
}
break;
@@ -547,7 +547,7 @@ static bool8 sub_81C5238(void)
gPyramidBagResources->state++;
break;
case 3:
- LoadCompressedSpriteSheet(&gUnknown_0861F3CC);
+ LoadCompressedSpriteSheet(&gPyramidBagSpriteSheet);
gPyramidBagResources->state++;
break;
case 4:
@@ -1489,7 +1489,7 @@ static void sub_81C6E98(void)
struct SpritePalette spritePalette;
u16 *palPtr = Alloc(0x40);
- LZDecompressWram(gUnknown_08D9ADD0, palPtr);
+ LZDecompressWram(gBattleFrontierGfx_PyramidBag_Pal, palPtr);
spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16);
spritePalette.tag = ITEM_IMAGE_TAG;
LoadSpritePalette(&spritePalette);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 7e783bef5..5016a3a58 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1276,8 +1276,8 @@ static void atk04_critcalc(void)
+ 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY)
+ 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD);
- if (critChance > 4)
- critChance = 4;
+ if (critChance >= ARRAY_COUNT(sCriticalHitChance))
+ critChance = ARRAY_COUNT(sCriticalHitChance) - 1;
if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR)
&& !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT)
@@ -4906,7 +4906,7 @@ static void atk4D_switchindataupdate(void)
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
- gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum);
// check knocked off item
i = GetBattlerSide(gActiveBattler);
@@ -8622,7 +8622,7 @@ static void atkAE_healpartystatus(void)
for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
- u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY);
+ u8 abilityNum = GetMonData(&party[i], MON_DATA_ABILITY_NUM);
if (species != SPECIES_NONE && species != SPECIES_EGG)
{
@@ -8635,7 +8635,7 @@ static void atkAE_healpartystatus(void)
&& !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
ability = gBattleMons[gActiveBattler].ability;
else
- ability = GetAbilityBySpecies(species, abilityBit);
+ ability = GetAbilityBySpecies(species, abilityNum);
if (ability != ABILITY_SOUNDPROOF)
toHeal |= (1 << i);
@@ -9844,10 +9844,10 @@ static void atkE5_pickup(void)
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
- ability = gBaseStats[species].ability2;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM))
+ ability = gBaseStats[species].abilities[1];
else
- ability = gBaseStats[species].ability1;
+ ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
&& species != 0
@@ -9867,10 +9867,10 @@ static void atkE5_pickup(void)
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
- ability = gBaseStats[species].ability2;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM))
+ ability = gBaseStats[species].abilities[1];
else
- ability = gBaseStats[species].ability1;
+ ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
&& species != 0
diff --git a/src/battle_tent.c b/src/battle_tent.c
index 85194417f..34e3e9628 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -44,7 +44,7 @@ static void sub_81BA040(void);
static void sub_81B9EC0(void);
// IWRAM bss
-static IWRAM_DATA u16 sRandMonSetId;
+static u16 sRandMonSetId;
// const rom data
void static (*const gUnknown_086160B4[])(void) =
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 7edb1bd93..3e86fcf51 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -262,10 +262,10 @@ static bool8 sub_814842C(struct Sprite *sprite);
static bool8 sub_8148458(struct Sprite *sprite);
// iwram bss vars
-IWRAM_DATA static s16 sUnusedRectangularSpiralVar;
-IWRAM_DATA static u8 sTestingTransitionId;
-IWRAM_DATA static u8 sTestingTransitionState;
-IWRAM_DATA static struct StructRectangularSpiral sRectangularSpiralTransition[4];
+static s16 sUnusedRectangularSpiralVar;
+static u8 sTestingTransitionId;
+static u8 sTestingTransitionState;
+static struct StructRectangularSpiral sRectangularSpiralTransition[4];
// ewram vars
EWRAM_DATA static struct TransitionData *sTransitionStructPtr = NULL;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index c1c664c1a..03764b2f8 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -194,10 +194,10 @@ EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
EWRAM_DATA static u32 sUnknown_020322D0 = 0;
// IWRAM bss
-IWRAM_DATA static s16 sUnknown_03000DE8[8];
-IWRAM_DATA static s16 sUnknown_03000DF8[6];
-IWRAM_DATA static s16 sUnknown_03000E04;
-IWRAM_DATA static s16 sUnknown_03000E06;
+static s16 sUnknown_03000DE8[8];
+static s16 sUnknown_03000DF8[6];
+static s16 sUnknown_03000E04;
+static s16 sUnknown_03000E06;
// IWRAM common
u8 gInGameOpponentsNo;
@@ -1078,7 +1078,7 @@ static void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s
static void sub_807FD90(u16 a0, u8 a1)
{
- u8 spriteId = sub_80D511C(a0 + 123, 0, 80, a1 & 1);
+ u8 spriteId = LoadSpinningBerryPicGfx(a0 + 123, 0, 80, a1 & 1);
sub_807FD64(&gSprites[spriteId], sUnknown_08339C78[a1][0], sUnknown_08339C78[a1][1], sUnknown_08339C78[a1][2], sUnknown_08339C78[a1][3], sUnknown_08339C78[a1][4]);
}
diff --git a/src/berry_crush.c b/src/berry_crush.c
index a5d964cc9..6259e0a41 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -55,7 +55,10 @@ struct BerryCrushGame_138_C
struct BerryCrushGame_138
{
- u8 filler0[0xC];
+ u8 filler0[0x4];
+ u16 unk4;
+ u16 unk6;
+ u16 unk8;
struct BerryCrushGame_138_C *unkC[5];
u8 filler1C[0x4];
struct Sprite *unk24[5];
@@ -105,7 +108,7 @@ struct BerryCrushGame
u8 filler26[0x2];
u16 unk28;
u16 unk2A;
- u16 unk2C;
+ s16 unk2C;
u8 filler2E[0x8];
u8 unk36[0xA];
struct BerryCrushGame_40 unk40;
@@ -149,6 +152,8 @@ extern const struct SpriteTemplate gUnknown_082F436C;
extern const u16 gUnknown_082F41E8[];
extern const s8 gUnknown_082F41CC[][2];
extern const s8 gUnknown_082F41D2[][2];
+extern const u32 gUnknown_082F334C[];
+extern const u8 gUnknown_082F32D8[][3];
struct BerryCrushGame *sub_8020C00(void)
{
@@ -700,76 +705,121 @@ void sub_80216A8(struct BerryCrushGame *arg0)
}
}
-// void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
-// {
-// u8 sp4;
-// struct BerryCrushGame_4E *var4E;
-// u8 i;
-// u16 var0;
-
-// sp4 = 0;
-// var4E = &arg0->unk40.unkE;
-// for (i = 0; i < arg0->unk9; i++)
-// {
-// var0 = var4E->unkA >> (i * 3);
-// var0 &= 7;
-// if (var0)
-// {
-// int offset;
-// sp4++;
-// if (var0 & 0x4)
-// StartSpriteAnim(arg1->unk24[i], 1);
-// else
-// StartSpriteAnim(arg1->unk24[i], 0);
-
-// arg1->unk24[i]->invisible = 0;
-// arg1->unk24[i]->animPaused = 0;
-// offset = (var0 % 4) - 1;
-// arg1->unk24[i]->pos2.x = gUnknown_082F41CC[offset][0];
-// arg1->unk24[i]->pos2.y = gUnknown_082F41CC[offset][1];
-// }
-// }
-
-// if (sp4 == 0)
-// {
-// arg0->unk25_2 = 0;
-// }
-// else
-// {
-// u8 var3 = arg0->unk28 % 3;
-// u16 var2 = var3;
-// for (i = 0; i < var4E->unkC * 2 + 3; i++)
-// {
-// if (arg1->unk4C[i]->invisible)
-// {
-// arg1->unk4C[i]->callback = sub_8022B28;
-// arg1->unk4C[i]->pos1.x = gUnknown_082F41D2[i][0] + 120;
-// arg1->unk4C[i]->pos1.y = gUnknown_082F41D2[i][1] + (136 - var2 * 4);
-// arg1->unk4C[i]->pos2.x = gUnknown_082F41D2[i][0] / (var3 * 4);
-// arg1->unk4C[i]->pos2.y = gUnknown_082F41D2[i][1];
-// if (var4E->unk4 & 0x2)
-// StartSpriteAnim(arg1->unk4C[i], 1);
-// else
-// StartSpriteAnim(arg1->unk4C[i], 0);
-
-// var2++;
-// if (var2 > 3)
-// var2 = 0;
-// }
-// }
-
-// if (arg0->unk25_2)
-// {
-// arg0->unk25_2 = 0;
-// }
-// else
-// {
-// if (sp4 == 1)
-// PlaySE(SE_TOY_DANGO);
-// else
-// PlaySE(SE_TOY_KABE);
-
-// arg0->unk25_2 = 1;
-// }
-// }
-// }
+void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
+{
+ u8 sp4;
+ struct BerryCrushGame_4E *var4E;
+ u8 i;
+ u16 var, var2;
+
+ sp4 = 0;
+ var4E = &arg0->unk40.unkE;
+ for (i = 0; i < arg0->unk9; i++)
+ {
+ var = var4E->unkA >> (i * 3);
+ var &= 7;
+ if (var)
+ {
+ sp4++;
+ if (var & 0x4)
+ StartSpriteAnim(arg1->unk24[i], 1);
+ else
+ StartSpriteAnim(arg1->unk24[i], 0);
+
+ arg1->unk24[i]->invisible = 0;
+ arg1->unk24[i]->animPaused = 0;
+ arg1->unk24[i]->pos2.x = gUnknown_082F41CC[(var % 4) - 1][0];
+ arg1->unk24[i]->pos2.y = gUnknown_082F41CC[(var % 4) - 1][1];
+ }
+ }
+
+ if (sp4 == 0)
+ {
+ arg0->unk25_2 = 0;
+ }
+ else
+ {
+ var = (u8)(arg0->unk28 % 3);
+ var2 = var;
+ for (i = 0; i < var4E->unkC * 2 + 3; i++)
+ {
+ if (arg1->unk4C[i]->invisible)
+ {
+ arg1->unk4C[i]->callback = sub_8022B28;
+ arg1->unk4C[i]->pos1.x = gUnknown_082F41D2[i][0] + 120;
+ arg1->unk4C[i]->pos1.y = gUnknown_082F41D2[i][1] + 136 - (var * 4);
+ arg1->unk4C[i]->pos2.x = gUnknown_082F41D2[i][0] + (gUnknown_082F41D2[i][0] / (var2 * 4));
+ arg1->unk4C[i]->pos2.y = gUnknown_082F41D2[i][1];
+ if (var4E->unk4 & 0x2)
+ StartSpriteAnim(arg1->unk4C[i], 1);
+ else
+ StartSpriteAnim(arg1->unk4C[i], 0);
+
+ var++;
+ if (var > 3)
+ var = 0;
+ }
+ }
+
+ if (arg0->unk25_2)
+ {
+ arg0->unk25_2 = 0;
+ }
+ else
+ {
+ if (sp4 == 1)
+ PlaySE(SE_TOY_DANGO);
+ else
+ PlaySE(SE_TOY_KABE);
+
+ arg0->unk25_2 = 1;
+ }
+ }
+}
+
+bool32 sub_80218D4(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
+{
+ u8 i;
+
+ for (i = 0; i < arg0->unk9; i++)
+ {
+ if (!arg1->unk24[i]->invisible)
+ return FALSE;
+ }
+
+ for (i = 0; i < 11; i++)
+ {
+ if (!arg1->unk4C[i]->invisible)
+ return FALSE;
+ }
+
+ if (arg0->unk2C != 0)
+ arg0->unk2C = 0;
+
+ return TRUE;
+}
+
+void sub_8021944(struct BerryCrushGame_138 *arg0, u16 arg1)
+{
+ u8 i = 0;
+ u32 r7 = 0;
+ s16 r3 = 0;
+
+ arg0->unk4 = arg1 / 3600;
+ arg0->unk6 = (arg1 % 3600) / 60;
+ r3 = sub_8151534((arg1 % 60) << 8, 4);
+
+ for (i = 0; i < 8; i++)
+ {
+ if ((r3 >> (7 - i)) & 1)
+ r7 += gUnknown_082F334C[i];
+ }
+
+ arg0->unk8 = r7 / 1000000;
+}
+
+void sub_80219C8(u8 windowId, u8 left, u8 colorId, const u8 *string)
+{
+ left = (left * 4) - (GetStringWidth(2, string, -1) / 2u);
+ AddTextPrinterParameterized3(windowId, 2, left, 0, gUnknown_082F32D8[colorId], 0, string);
+}
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index d0f89ab8a..c3eac783d 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -318,18 +318,18 @@ static bool8 LoadBerryTagGfx(void)
{
case 0:
reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(2, gUnknown_08D9BB44, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gBerryCheck_Gfx, 0, 0, 0);
sBerryTag->gfxState++;
break;
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9BF98, sBerryTag->tilemapBuffers[0]);
+ LZDecompressWram(gBerryTag_Gfx, sBerryTag->tilemapBuffers[0]);
sBerryTag->gfxState++;
}
break;
case 2:
- LZDecompressWram(gUnknown_08D9C13C, sBerryTag->tilemapBuffers[2]);
+ LZDecompressWram(gBerryTag_Pal, sBerryTag->tilemapBuffers[2]);
sBerryTag->gfxState++;
break;
case 3:
@@ -346,15 +346,15 @@ static bool8 LoadBerryTagGfx(void)
sBerryTag->gfxState++;
break;
case 4:
- LoadCompressedPalette(gUnknown_08D9BEF0, 0, 0xC0);
+ LoadCompressedPalette(gBerryCheck_Pal, 0, 0xC0);
sBerryTag->gfxState++;
break;
case 5:
- LoadCompressedSpriteSheet(&gUnknown_0857FDEC);
+ LoadCompressedSpriteSheet(&gBerryCheckCircleSpriteSheet);
sBerryTag->gfxState++;
break;
default:
- LoadCompressedSpritePalette(&gUnknown_0857FDF4);
+ LoadCompressedSpritePalette(&gBerryCheckCirclePaletteTable);
return TRUE; // done
}
@@ -548,7 +548,7 @@ static void Task_HandleInput(u8 taskId)
static void TryChangeDisplayedBerry(u8 taskId, s8 toMove)
{
s16 *data = gTasks[taskId].data;
- s16 currPocketPosition = gUnknown_0203CE58.scrollPosition[3] + gUnknown_0203CE58.cursorPosition[3];
+ s16 currPocketPosition = gBagPositionStruct.scrollPosition[3] + gBagPositionStruct.cursorPosition[3];
u32 newPocketPosition = currPocketPosition + toMove;
if (newPocketPosition < 46 && BagGetItemIdByPocketPosition(POCKET_BERRIES, newPocketPosition) != 0)
{
@@ -566,8 +566,8 @@ static void TryChangeDisplayedBerry(u8 taskId, s8 toMove)
static void HandleBagCursorPositionChange(s8 toMove)
{
- u16 *scrollPos = &gUnknown_0203CE58.scrollPosition[3];
- u16 *cursorPos = &gUnknown_0203CE58.cursorPosition[3];
+ u16 *scrollPos = &gBagPositionStruct.scrollPosition[3];
+ u16 *cursorPos = &gBagPositionStruct.cursorPosition[3];
if (toMove > 0)
{
if (*cursorPos < 4 || BagGetItemIdByPocketPosition(POCKET_BERRIES, *scrollPos + 8) == 0)
diff --git a/src/bg.c b/src/bg.c
index 1826f9a28..1678f4023 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -37,9 +37,9 @@ struct BgConfig2
s32 bg_y;
};
-static IWRAM_DATA struct BgControl sGpuBgConfigs;
-static IWRAM_DATA struct BgConfig2 sGpuBgConfigs2[4];
-static IWRAM_DATA u32 sDmaBusyBitfield[4];
+static struct BgControl sGpuBgConfigs;
+static struct BgConfig2 sGpuBgConfigs2[4];
+static u32 sDmaBusyBitfield[4];
u32 gUnneededFireRedVariable;
@@ -220,7 +220,7 @@ static void ShowBgInternal(u8 bg)
(sGpuBgConfigs.configs[bg].wraparound << 13) |
(sGpuBgConfigs.configs[bg].screenSize << 14);
- SetGpuReg((bg << 1) + 0x8, value);
+ SetGpuReg((bg << 1) + REG_OFFSET_BG0CNT, value);
sGpuBgConfigs.bgVisibilityAndMode |= 1 << (bg + 8);
sGpuBgConfigs.bgVisibilityAndMode &= DISPCNT_ALL_BG_AND_MODE_BITS;
@@ -914,7 +914,6 @@ void CopyBgTilemapBufferToVram(u8 bg)
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
{
- const void *srcCopy;
u16 destX16;
u16 destY16;
u16 mode;
@@ -924,27 +923,31 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
switch (GetBgType(bg))
{
case 0:
- srcCopy = src;
+ {
+ const u16 * srcCopy = src;
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++;
+ ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
}
}
break;
+ }
case 1:
- srcCopy = src;
+ {
+ const u8 * srcCopy = src;
mode = GetBgMetricAffineMode(bg, 0x1);
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++;
+ ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
}
}
break;
}
+ }
}
}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 659f8682e..c00be82ad 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -10,6 +10,7 @@
#include "constants/maps.h"
#include "constants/songs.h"
#include "constants/species.h"
+#include "constants/metatile_labels.h"
#include "fieldmap.h"
#include "party_menu.h"
#include "fldeff.h"
@@ -86,12 +87,12 @@ bool8 ShouldDoBrailleDigEffect(void)
void DoBrailleDigEffect(void)
{
- MapGridSetMetatileIdAt(16, 8, 0x22A);
- MapGridSetMetatileIdAt(17, 8, 0x22B);
- MapGridSetMetatileIdAt(18, 8, 0x22C);
- MapGridSetMetatileIdAt(16, 9, 0xE32);
- MapGridSetMetatileIdAt(17, 9, 0x233);
- MapGridSetMetatileIdAt(18, 9, 0xE34);
+ MapGridSetMetatileIdAt(16, 8, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
+ MapGridSetMetatileIdAt(17, 8, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
+ MapGridSetMetatileIdAt(18, 8, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
+ MapGridSetMetatileIdAt(16, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(17, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
+ MapGridSetMetatileIdAt(18, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_DIG);
@@ -279,12 +280,12 @@ void UseRegirockHm_Callback(void)
void DoBrailleRegirockEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, 0x22A);
- MapGridSetMetatileIdAt(15, 26, 0x22B);
- MapGridSetMetatileIdAt(16, 26, 0x22C);
- MapGridSetMetatileIdAt(14, 27, 0xE32);
- MapGridSetMetatileIdAt(15, 27, 0x233);
- MapGridSetMetatileIdAt(16, 27, 0xE34);
+ MapGridSetMetatileIdAt(14, 26, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
+ MapGridSetMetatileIdAt(15, 26, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
+ MapGridSetMetatileIdAt(16, 26, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
+ MapGridSetMetatileIdAt(14, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(15, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
+ MapGridSetMetatileIdAt(16, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
@@ -318,12 +319,12 @@ void UseRegisteelHm_Callback(void)
void DoBrailleRegisteelEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, 0x22A);
- MapGridSetMetatileIdAt(15, 26, 0x22B);
- MapGridSetMetatileIdAt(16, 26, 0x22C);
- MapGridSetMetatileIdAt(14, 27, 0xE32);
- MapGridSetMetatileIdAt(15, 27, 0x233);
- MapGridSetMetatileIdAt(16, 27, 0xE34);
+ MapGridSetMetatileIdAt(14, 26, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
+ MapGridSetMetatileIdAt(15, 26, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
+ MapGridSetMetatileIdAt(16, 26, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
+ MapGridSetMetatileIdAt(14, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(15, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
+ MapGridSetMetatileIdAt(16, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
diff --git a/src/cable_car.c b/src/cable_car.c
index d44c9a241..adeee2647 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -245,7 +245,7 @@ static void CableCarMainCallback_Setup(void)
{
u16 imebak;
u8 i = 0;
- int sizeOut = 0;
+ u32 sizeOut = 0;
switch (gMain.state)
{
diff --git a/src/contest.c b/src/contest.c
index eb3252f72..662a27060 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -269,8 +269,6 @@ extern const u8 gText_Contest_Fear[];
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern const u8 *const gUnknown_08587E10[];
-extern const struct SpriteTemplate gSpriteTemplate_8587AD0;
-extern const struct SpriteTemplate gSpriteTemplate_8587B18[];
extern void (*const gContestEffectFuncs[])(void);
static const u8 gUnknown_08587A6C[] =
@@ -1268,7 +1266,7 @@ static void sub_80D8108(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- (s16)gBattle_BG1_Y += 7;
+ *(s16*)&gBattle_BG1_Y += 7;
if ((s16)gBattle_BG1_Y <= 160)
break;
gTasks[taskId].data[0]++;
@@ -2975,7 +2973,7 @@ static u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index)
else
HandleLoadSpecialPokePic_DontHandleDeoxys(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality);
- LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
SetMultiuseSpriteTemplateToPokemon(species, 0);
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30);
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index bae7859b5..a0a29f0ad 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -71,15 +71,10 @@ struct ContestLinkUnk14
u8 unk12;
};
-struct ContestLinkUnk4
-{
- struct ContestLinkUnk14 unk0[4];
-};
-
struct ContestLink80F57C4
{
struct ContestLinkUnk0 *unk0;
- struct ContestLinkUnk4 *unk4;
+ struct ContestLinkUnk14 (*unk4)[4];
u8 *unk8;
u8 *unkC[4];
u8 *unk1C;
@@ -205,9 +200,7 @@ void sub_80F57C4(void)
void sub_80F591C(void)
{
int i, j;
- s8 var0;
- s8 var1;
- int var2;
+ s8 var0, var1;
u16 tile1, tile2;
LZDecompressVram(gUnknown_08C19588, (void *)BG_CHAR_ADDR(0));
@@ -228,11 +221,7 @@ void sub_80F591C(void)
if (j < var0)
tile1 += 2;
- var2 = var1;
- if (var1 < 0)
- var2 = -var2;
-
- if (j < var2)
+ if (j < abs(var1))
{
tile2 = 0x60A4;
if (var1 < 0)
@@ -719,7 +708,7 @@ static void sub_80F6404(u8 taskId)
if (top > 80)
top = 80;
- gBattle_WIN0V = (top << 8) | (160 - top);;
+ gBattle_WIN0V = (top << 8) | (160 - top);
if (top == 80)
gTasks[taskId].data[0]++;
}
@@ -737,8 +726,7 @@ static void sub_80F6404(u8 taskId)
static void sub_80F66B4(u8 taskId)
{
- int i;
- u16 nationalDexNum;
+ int i, nationalDexNum;
if (gMain.newKeys & A_BUTTON)
{
@@ -859,13 +847,13 @@ static void sub_80F68F0(u8 taskId)
void sub_80F69B8(u16 species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
{
- u8 frameNum;
const u8 *iconPtr;
- u16 var0;
- u16 var1;
+ u16 var0, var1, frameNum;
- u8 *contestPlayerMonIndex = &gContestPlayerMonIndex; // fake match
- frameNum = (monIndex == *contestPlayerMonIndex) ? 1 : 0;
+ if (monIndex == gContestPlayerMonIndex)
+ frameNum = 1;
+ else
+ frameNum = 0;
iconPtr = GetMonIconPtr(species, personality, frameNum);
iconPtr += srcOffset * 0x200 + 0x80;
@@ -892,13 +880,12 @@ static void LoadAllContestMonIcons(u8 srcOffset, u8 useDmaNow)
static void sub_80F6A9C(void)
{
- int i;
- register u16 species asm("r0");
+ int i, species;
for (i = 0; i < 4; i++)
{
- species = GetIconSpecies(gContestMons[i].species, 0);
- LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[species]], i * 0x10 + 0xA0, 0x20);
+ species = gContestMons[i].species;
+ LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[GetIconSpecies(species, 0)]], i * 0x10 + 0xA0, 0x20);
}
}
@@ -1335,11 +1322,11 @@ static void sub_80F6F40(struct Sprite *sprite)
static void sub_80F6F68(struct Sprite *sprite)
{
int i;
- s16 var0;
- var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
- sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
+ s16 delta = sprite->data[7] + sprite->data[6];
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[7] += sprite->data[6];
+ sprite->data[7] &= 0xFF;
if (sprite->pos1.x < sprite->data[4])
sprite->pos1.x = sprite->data[4];
@@ -1366,11 +1353,12 @@ static void sub_80F6FDC(struct Sprite *sprite)
static void sub_80F7014(struct Sprite *sprite)
{
int i;
- s16 var0;
+ s16 delta;
- var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
- sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
+ delta = sprite->data[7] + sprite->data[6];
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[7] += sprite->data[6];
+ sprite->data[7] &= 0xFF;
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
@@ -1487,14 +1475,11 @@ static void sub_80F71C8(void)
CopyToBgTilemapBufferRect_ChangePalette(2, gUnknown_0203A034->unkC[2], 0, 0, 32, 4, palette);
}
-// fakematching?
u8 sub_80F7310(u8 monIndex, u8 arg1)
{
- u32 var0;
- u32 var1;
+ u32 var0 = gContestMonConditions[monIndex] << 16;
+ u32 var1 = var0 / 0x3F;
- var0 = gContestMonConditions[monIndex] << 16;
- var1 = var0 / 0x3F;
if (var1 & 0xFFFF)
var1 += 0x10000;
@@ -1510,8 +1495,7 @@ u8 sub_80F7310(u8 monIndex, u8 arg1)
s8 sub_80F7364(u8 arg0, u8 arg1)
{
- u32 r4;
- u32 r2;
+ u32 r4, r2;
s16 val;
s8 ret;
@@ -1607,9 +1591,10 @@ static void sub_80F75A8(struct Sprite *sprite)
}
else
{
- s16 delta = (u16)sprite->data[1] + 0x600;
+ s16 delta = sprite->data[1] + 0x600;
sprite->pos1.x -= delta >> 8;
- sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ sprite->data[1] += 0x600;
+ sprite->data[1] &= 0xFF;
if (sprite->pos1.x < 120)
sprite->pos1.x = 120;
@@ -1624,9 +1609,10 @@ static void sub_80F75A8(struct Sprite *sprite)
static void sub_80F7620(struct Sprite *sprite)
{
- s16 delta = (u16)sprite->data[1] + 0x600;
+ s16 delta = sprite->data[1] + 0x600;
sprite->pos1.x -= delta >> 8;
- sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ sprite->data[1] += + 0x600;
+ sprite->data[1] &= 0xFF;
if (sprite->pos1.x < -32)
{
sprite->callback = SpriteCallbackDummy;
@@ -1657,14 +1643,15 @@ static void sub_80F7670(u8 taskId)
void sub_80F7768(struct Sprite *sprite)
{
- register s16 var0 asm("r1");
+ s16 delta;
sprite->data[3] += sprite->data[0];
sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
- var0 = sprite->data[4] + sprite->data[2];
- sprite->pos1.x += var0 >> 8;
- var0 = var0 & 0xFF;
- sprite->data[4] = var0;
+ delta = sprite->data[4] + sprite->data[2];
+ sprite->pos1.x += delta >> 8;
+ sprite->data[4] += sprite->data[2];
+ sprite->data[4] &= 0xff;
+
sprite->pos1.y++;
if (gUnknown_0203A034->unk0->unk9)
sprite->invisible = 1;
@@ -1695,705 +1682,145 @@ static void sub_80F7824(u8 taskId)
}
}
-// static void sub_80F7880(void)
-// {
-// int i;
-// int var0;
-// int var1;
-// int var2;
-// int var3;
-// u32 var4;
-// int var5;
-// int var6;
-// s16 var7;
-// s16 var8;
-// s16 r2;
-
-// r2 = gUnknown_02039F08[0];
-// for (i = 1; i < 4; i++)
-// {
-// if (r2 < gUnknown_02039F08[i])
-// r2 = gUnknown_02039F08[i];
-// }
-
-// if (r2 < 0)
-// {
-// r2 = gUnknown_02039F08[0];
-// for (i = 1; i < 4; i++)
-// {
-// if (r2 > gUnknown_02039F08[i])
-// r2 = gUnknown_02039F08[i];
-// }
-// }
-
-// // _080F78E4
-// for (i = 0; i < 4; i++)
-// {
-// var0 = gContestMonConditions[i] * 1000;
-// var1 = r2;
-// if (r2 < 0)
-// var1 = -var1;
-
-// var2 = var0 / var1;
-// if (var2 % 10 > 4)
-// var2 += 10;
-
-// gUnknown_0203A034->unk4->unk0[i].unk0 = var2 / 10;
-// var3 = gUnknown_02039F18[i];
-// if (var3 < 0)
-// var3 = -var3;
-
-// var0 = var3 * 1000;
-// var1 = r2;
-// if (r2 < 0)
-// var1 = -var1;
-
-// var2 = var0 / var1;
-// if (var2 % 10 > 4)
-// var2 += 10;
-
-// // _080F7966
-// gUnknown_0203A034->unk4->unk0[i].unk4 = var2 / 10;
-// if (gUnknown_02039F18[i] < 0)
-// gUnknown_0203A034->unk4->unk0[i].unk10 = 1;
-
-// var4 = gUnknown_0203A034->unk4->unk0[i].unk0 * 22528 / 100;
-// if ((var4 & 0xFF) > 0x7F)
-// var4 += 0x100;
-
-// gUnknown_0203A034->unk4->unk0[i].unk8 = var4 >> 8;
-// var4 = gUnknown_0203A034->unk4->unk0[i].unk4 * 22528 / 100;
-// if ((var4 & 0xFF) > 0x7F)
-// var4 += 0x100;
-
-// gUnknown_0203A034->unk4->unk0[i].unkC = var4 >> 8;
-// gUnknown_0203A034->unk4->unk0[i].unk11 = sub_80F7310(i, 1);
-// var5 = sub_80F7364(i, 1);
-// if (var5 < 0)
-// var5 = -var5;
-
-// gUnknown_0203A034->unk4->unk0[i].unk12 = var5;
-// if (gContestFinalStandings[i])
-// {
-// var7 = gUnknown_0203A034->unk4->unk0[i].unk8;
-// var8 = gUnknown_0203A034->unk4->unk0[i].unkC;
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// var8 = -var8;
-
-// if (var7 + var8 == 88)
-// {
-// if (var8 > 0)
-// gUnknown_0203A034->unk4->unk0[i].unkC--;
-// else if (var7 > 0)
-// gUnknown_0203A034->unk4->unk0[i].unk8--;
-// }
-// }
-// }
-// }
-
-NAKED
static void sub_80F7880(void)
{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- ldr r0, =gUnknown_02039F08\n\
- ldrh r2, [r0]\n\
- adds r4, r0, 0\n\
- adds r3, r4, 0x2\n\
- movs r0, 0x2\n\
- mov r8, r0\n\
-_080F7898:\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- movs r5, 0\n\
- ldrsh r1, [r3, r5]\n\
- cmp r0, r1\n\
- bge _080F78A6\n\
- ldrh r2, [r3]\n\
-_080F78A6:\n\
- adds r3, 0x2\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0\n\
- bge _080F7898\n\
- lsls r0, r2, 16\n\
- str r0, [sp]\n\
- cmp r0, 0\n\
- bge _080F78E4\n\
- ldrh r2, [r4]\n\
- adds r3, r4, 0x2\n\
- movs r4, 0x2\n\
- mov r8, r4\n\
-_080F78C4:\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- movs r5, 0\n\
- ldrsh r1, [r3, r5]\n\
- cmp r0, r1\n\
- ble _080F78D2\n\
- ldrh r2, [r3]\n\
-_080F78D2:\n\
- adds r3, 0x2\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- lsls r1, r2, 16\n\
- str r1, [sp]\n\
- mov r4, r8\n\
- cmp r4, 0\n\
- bge _080F78C4\n\
-_080F78E4:\n\
- movs r5, 0\n\
- mov r8, r5\n\
- mov r10, r5\n\
-_080F78EA:\n\
- ldr r0, =gContestMonConditions\n\
- mov r1, r8\n\
- lsls r7, r1, 1\n\
- adds r0, r7, r0\n\
- movs r2, 0\n\
- ldrsh r1, [r0, r2]\n\
- lsls r0, r1, 5\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- ldr r4, [sp]\n\
- asrs r5, r4, 16\n\
- adds r1, r5, 0\n\
- cmp r5, 0\n\
- bge _080F790C\n\
- negs r1, r5\n\
-_080F790C:\n\
- bl __divsi3\n\
- adds r4, r0, 0\n\
- movs r1, 0xA\n\
- bl __modsi3\n\
- cmp r0, 0x4\n\
- ble _080F791E\n\
- adds r4, 0xA\n\
-_080F791E:\n\
- ldr r0, =gUnknown_0203A034\n\
- mov r9, r0\n\
- ldr r0, [r0]\n\
- ldr r0, [r0, 0x4]\n\
- mov r1, r10\n\
- adds r6, r1, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- str r0, [r6]\n\
- ldr r0, =gUnknown_02039F18\n\
- adds r7, r0\n\
- movs r2, 0\n\
- ldrsh r1, [r7, r2]\n\
- cmp r1, 0\n\
- bge _080F7942\n\
- negs r1, r1\n\
-_080F7942:\n\
- lsls r0, r1, 5\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r1, r5, 0\n\
- cmp r1, 0\n\
- bge _080F7954\n\
- negs r1, r1\n\
-_080F7954:\n\
- bl __divsi3\n\
- adds r4, r0, 0\n\
- movs r1, 0xA\n\
- bl __modsi3\n\
- cmp r0, 0x4\n\
- ble _080F7966\n\
- adds r4, 0xA\n\
-_080F7966:\n\
- adds r0, r4, 0\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- str r0, [r6, 0x4]\n\
- movs r4, 0\n\
- ldrsh r0, [r7, r4]\n\
- cmp r0, 0\n\
- bge _080F797C\n\
- movs r0, 0x1\n\
- strb r0, [r6, 0x10]\n\
-_080F797C:\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x4]\n\
- mov r1, r10\n\
- adds r4, r1, r0\n\
- ldr r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- subs r0, r1\n\
- lsls r0, 11\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- movs r5, 0xFF\n\
- ands r0, r5\n\
- cmp r0, 0x7F\n\
- bls _080F79A8\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r2\n\
-_080F79A8:\n\
- lsrs r0, r1, 8\n\
- str r0, [r4, 0x8]\n\
- ldr r1, [r4, 0x4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- subs r0, r1\n\
- lsls r0, 11\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- ands r0, r5\n\
- cmp r0, 0x7F\n\
- bls _080F79CC\n\
- movs r5, 0x80\n\
- lsls r5, 1\n\
- adds r1, r5\n\
-_080F79CC:\n\
- lsrs r0, r1, 8\n\
- str r0, [r4, 0xC]\n\
- mov r0, r8\n\
- lsls r4, r0, 24\n\
- lsrs r4, 24\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_80F7310\n\
- mov r2, r9\n\
- ldr r1, [r2]\n\
- ldr r1, [r1, 0x4]\n\
- add r1, r10\n\
- strb r0, [r1, 0x11]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_80F7364\n\
- mov r4, r9\n\
- ldr r1, [r4]\n\
- ldr r1, [r1, 0x4]\n\
- add r1, r10\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0\n\
- bge _080F7A02\n\
- negs r0, r0\n\
-_080F7A02:\n\
- strb r0, [r1, 0x12]\n\
- ldr r0, =gContestFinalStandings\n\
- add r0, r8\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F7A60\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x4]\n\
- mov r2, r10\n\
- adds r1, r2, r0\n\
- ldr r5, [r1, 0x8]\n\
- ldrh r3, [r1, 0x8]\n\
- ldr r4, [r1, 0xC]\n\
- ldrh r2, [r1, 0xC]\n\
- ldrb r0, [r1, 0x10]\n\
- cmp r0, 0\n\
- beq _080F7A2C\n\
- lsls r0, r2, 16\n\
- negs r0, r0\n\
- lsrs r2, r0, 16\n\
-_080F7A2C:\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- lsls r0, r2, 16\n\
- asrs r2, r0, 16\n\
- adds r0, r3, r2\n\
- cmp r0, 0x58\n\
- bne _080F7A60\n\
- cmp r2, 0\n\
- ble _080F7A58\n\
- subs r0, r4, 0x1\n\
- str r0, [r1, 0xC]\n\
- b _080F7A60\n\
- .pool\n\
-_080F7A58:\n\
- cmp r3, 0\n\
- ble _080F7A60\n\
- subs r0, r5, 0x1\n\
- str r0, [r1, 0x8]\n\
-_080F7A60:\n\
- movs r4, 0x14\n\
- add r10, r4\n\
- movs r5, 0x1\n\
- add r8, r5\n\
- mov r0, r8\n\
- cmp r0, 0x3\n\
- bgt _080F7A70\n\
- b _080F78EA\n\
-_080F7A70:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
-}
-
-// static void sub_80F7A80(u8 arg0, u8 arg1)
-// {
-// int i;
-// u8 taskId;
-// u8 sp8, spC;
-
-// sp8 = 0;
-// spC = 0;
-// if (!arg0)
-// {
-// u32 var0;
-// for (i = 0; i < 4; i++)
-// {
-// int var1 = gUnknown_0203A034->unk4->unk0[i].unk11;
-// if (arg1 < var1)
-// {
-// int x = var1 + 19;
-// x -= arg1;
-// x--;
-// FillBgTilemapBufferRect_Palette0(1, 0x60B3, x, i * 3 + 5, 1, 1);
-// taskId = CreateTask(sub_80F7CA8, 10);
-// var0 = ((gUnknown_0203A034->unk4->unk0[i].unk8 << 16) / gUnknown_0203A034->unk4->unk0[i].unk11) * (arg1 + 1);
-// var0 &= 0xFFFF;
-// if (var0 > 0x7FFF)
-// var0 += 0x10000;
-
-// gTasks[taskId].data[0] = i;
-// gTasks[taskId].data[1] = var0 >> 16;
-// gUnknown_0203A034->unk0->unk14++;
-// sp8++;
-// }
-// }
-// }
-// else
-// {
-// u32 var0;
-// for (i = 0; i < 4; i++)
-// {
-// int tile;
-// s8 var1 = gUnknown_0203A034->unk4->unk0[i].unk12;
-// tile = gUnknown_0203A034->unk4->unk0[i].unk10 ? 0x60A5 : 0x60A3;
-// if (arg1 < var1)
-// {
-// int thing = ((s8)arg1 - 19);
-// int x = var1 - thing;
-// x--;
-// FillBgTilemapBufferRect_Palette0(1, tile, x, i * 3 + 6, 1, 1);
-// taskId = CreateTask(sub_80F7CA8, 10);
-// var0 = ((gUnknown_0203A034->unk4->unk0[i].unkC << 16) / gUnknown_0203A034->unk4->unk0[i].unk12) * (arg1 + 1);
-// var0 &= 0xFFFF;
-// if (var0 > 0x7FFF)
-// var0 += 0x10000;
-
-// gTasks[taskId].data[0] = i;
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// {
-// gTasks[taskId].data[2] = 1;
-// spC++;
-// }
-// else
-// {
-// sp8++;
-// }
-
-// if (gUnknown_0203A034->unk4->unk0[i].unk10)
-// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 - (var0 >> 16);
-// else
-// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 + (var0 >> 16);
-
-// gUnknown_0203A034->unk0->unk14++;
-// }
-// }
-// }
-
-// if (spC)
-// PlaySE(SE_PIN);
-
-// if (sp8)
-// PlaySE(SE_BAN);
-// }
+ int i, r4;
+ u32 r1;
+ s16 r2;
+ s8 var;
+
+ r2 = gUnknown_02039F08[0];
+ for (i = 1; i < 4; i++)
+ {
+ if (r2 < gUnknown_02039F08[i])
+ r2 = gUnknown_02039F08[i];
+ }
+
+ if (r2 < 0)
+ {
+ r2 = gUnknown_02039F08[0];
+ for (i = 1; i < 4; i++)
+ {
+ if (r2 > gUnknown_02039F08[i])
+ r2 = gUnknown_02039F08[i];
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ r4 = (gContestMonConditions[i] * 1000) / abs(r2);
+ if (r4 % 10 > 4)
+ r4 += 10;
+ (*gUnknown_0203A034->unk4)[i].unk0 = r4 / 10;
+
+ r4 = (abs(gUnknown_02039F18[i]) * 1000) / abs(r2);
+ if (r4 % 10 > 4)
+ r4 += 10;
+ (*gUnknown_0203A034->unk4)[i].unk4 = r4 / 10;
+
+ if (gUnknown_02039F18[i] < 0)
+ (*gUnknown_0203A034->unk4)[i].unk10 = 1;
+
+ r1 = ((*gUnknown_0203A034->unk4)[i].unk0 * 22528) / 100;
+ if ((r1 & 0xFF) > 0x7F)
+ r1 += 0x100;
+ (*gUnknown_0203A034->unk4)[i].unk8 = r1 >> 8;
+
+ r1 = ((*gUnknown_0203A034->unk4)[i].unk4 * 22528) / 100;
+ if ((r1 & 0xFF) > 0x7F)
+ r1 += 0x100;
+ (*gUnknown_0203A034->unk4)[i].unkC = r1 >> 8;
+
+ (*gUnknown_0203A034->unk4)[i].unk11 = sub_80F7310(i, 1);
+ var = sub_80F7364(i, 1);
+ (*gUnknown_0203A034->unk4)[i].unk12 = abs(var);
+
+ if (gContestFinalStandings[i])
+ {
+ s16 var1 = (*gUnknown_0203A034->unk4)[i].unk8;
+ s16 var2 = (*gUnknown_0203A034->unk4)[i].unkC;
+
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ var2 *= -1;
+
+ if (var1 + var2 == 88)
+ {
+ if (var2 > 0)
+ (*gUnknown_0203A034->unk4)[i].unkC--;
+ else if (var1 > 0)
+ (*gUnknown_0203A034->unk4)[i].unk8--;
+ }
+ }
+ }
+}
-NAKED
static void sub_80F7A80(u8 arg0, u8 arg1)
{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- lsls r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r8, r1\n\
- movs r1, 0\n\
- str r1, [sp, 0x8]\n\
- movs r3, 0\n\
- str r3, [sp, 0xC]\n\
- cmp r0, 0\n\
- bne _080F7B5C\n\
- mov r9, r3\n\
- ldr r4, =gUnknown_0203A034\n\
- mov r10, r4\n\
- movs r7, 0xA0\n\
- lsls r7, 19\n\
- movs r6, 0\n\
-_080F7AAC:\n\
- mov r1, r10\n\
- ldr r0, [r1]\n\
- ldr r0, [r0, 0x4]\n\
- adds r0, r6, r0\n\
- ldrb r2, [r0, 0x11]\n\
- cmp r8, r2\n\
- bcs _080F7B2E\n\
- adds r2, 0x13\n\
- mov r3, r8\n\
- subs r2, r3\n\
- subs r2, 0x1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsrs r3, r7, 24\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- str r0, [sp, 0x4]\n\
- ldr r1, =0x000060b3\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- ldr r0, =sub_80F7CA8\n\
- movs r1, 0xA\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- mov r0, r10\n\
- ldr r4, [r0]\n\
- ldr r1, [r4, 0x4]\n\
- adds r1, r6, r1\n\
- ldr r0, [r1, 0x8]\n\
- lsls r0, 16\n\
- ldrb r1, [r1, 0x11]\n\
- bl __udivsi3\n\
- mov r1, r8\n\
- adds r1, 0x1\n\
- adds r3, r0, 0\n\
- muls r3, r1\n\
- ldr r0, =0x0000ffff\n\
- ands r0, r3\n\
- ldr r1, =0x00007fff\n\
- cmp r0, r1\n\
- bls _080F7B0A\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r3, r1\n\
-_080F7B0A:\n\
- ldr r1, =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- mov r1, r9\n\
- strh r1, [r0, 0x8]\n\
- lsrs r1, r3, 16\n\
- strh r1, [r0, 0xA]\n\
- ldr r1, [r4]\n\
- ldrb r0, [r1, 0x14]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x14]\n\
- ldr r0, [sp, 0x8]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x8]\n\
-_080F7B2E:\n\
- movs r3, 0xC0\n\
- lsls r3, 18\n\
- adds r7, r3\n\
- adds r6, 0x14\n\
- movs r4, 0x1\n\
- add r9, r4\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- ble _080F7AAC\n\
- b _080F7C7E\n\
- .pool\n\
-_080F7B5C:\n\
- movs r1, 0\n\
- mov r9, r1\n\
- mov r10, r1\n\
- movs r3, 0xC0\n\
- lsls r3, 19\n\
- str r3, [sp, 0x10]\n\
-_080F7B68:\n\
- ldr r4, =gUnknown_0203A034\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x4]\n\
- add r0, r10\n\
- ldrb r2, [r0, 0x12]\n\
- ldrb r0, [r0, 0x10]\n\
- ldr r1, =0x000060a3\n\
- cmp r0, 0\n\
- beq _080F7B7C\n\
- adds r1, 0x2\n\
-_080F7B7C:\n\
- lsls r0, r2, 24\n\
- asrs r0, 24\n\
- cmp r8, r0\n\
- bge _080F7C64\n\
- mov r3, r8\n\
- lsls r2, r3, 24\n\
- asrs r2, 24\n\
- subs r2, 0x13\n\
- subs r2, r0, r2\n\
- subs r2, 0x1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r4, [sp, 0x10]\n\
- lsrs r3, r4, 24\n\
- movs r7, 0x1\n\
- str r7, [sp]\n\
- str r7, [sp, 0x4]\n\
- movs r0, 0x1\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- ldr r0, =sub_80F7CA8\n\
- movs r1, 0xA\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, =gUnknown_0203A034\n\
- ldr r6, [r0]\n\
- ldr r1, [r6, 0x4]\n\
- add r1, r10\n\
- ldr r0, [r1, 0xC]\n\
- lsls r0, 16\n\
- ldrb r1, [r1, 0x12]\n\
- bl __udivsi3\n\
- mov r1, r8\n\
- adds r1, 0x1\n\
- adds r3, r0, 0\n\
- muls r3, r1\n\
- ldr r0, =0x0000ffff\n\
- ands r0, r3\n\
- ldr r1, =0x00007fff\n\
- cmp r0, r1\n\
- bls _080F7BDA\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r3, r1\n\
-_080F7BDA:\n\
- ldr r1, =gTasks\n\
- lsls r2, r5, 2\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r1\n\
- mov r0, r9\n\
- strh r0, [r4, 0x8]\n\
- ldr r0, [r6, 0x4]\n\
- add r0, r10\n\
- ldrb r0, [r0, 0x10]\n\
- adds r6, r1, 0\n\
- cmp r0, 0\n\
- beq _080F7C1C\n\
- strh r7, [r4, 0xC]\n\
- ldr r0, [sp, 0xC]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0xC]\n\
- b _080F7C26\n\
- .pool\n\
-_080F7C1C:\n\
- ldr r0, [sp, 0x8]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x8]\n\
-_080F7C26:\n\
- ldr r1, =gUnknown_0203A034\n\
- ldr r0, [r1]\n\
- ldr r0, [r0, 0x4]\n\
- mov r4, r10\n\
- adds r1, r4, r0\n\
- ldrb r0, [r1, 0x10]\n\
- ldr r4, =gUnknown_0203A034\n\
- cmp r0, 0\n\
- beq _080F7C4C\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- lsrs r2, r3, 16\n\
- ldr r1, [r1, 0x8]\n\
- subs r1, r2\n\
- b _080F7C58\n\
- .pool\n\
-_080F7C4C:\n\
- adds r0, r2, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- lsrs r2, r3, 16\n\
- ldr r1, [r1, 0x8]\n\
- adds r1, r2\n\
-_080F7C58:\n\
- strh r1, [r0, 0xA]\n\
- ldr r0, [r4]\n\
- ldr r1, [r0]\n\
- ldrb r0, [r1, 0x14]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x14]\n\
-_080F7C64:\n\
- movs r0, 0x14\n\
- add r10, r0\n\
- ldr r1, [sp, 0x10]\n\
- movs r3, 0xC0\n\
- lsls r3, 18\n\
- adds r1, r3\n\
- str r1, [sp, 0x10]\n\
- movs r4, 0x1\n\
- add r9, r4\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- bgt _080F7C7E\n\
- b _080F7B68\n\
-_080F7C7E:\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0\n\
- beq _080F7C8A\n\
- movs r0, 0x16\n\
- bl PlaySE\n\
-_080F7C8A:\n\
- ldr r3, [sp, 0x8]\n\
- cmp r3, 0\n\
- beq _080F7C96\n\
- movs r0, 0x15\n\
- bl PlaySE\n\
-_080F7C96:\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
+ int i, taskId;
+ u32 var0;
+ u8 sp8 = 0, spC = 0;
+
+ if (!arg0)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ u8 unk = (*gUnknown_0203A034->unk4)[i].unk11;
+ if (arg1 < unk)
+ {
+ FillBgTilemapBufferRect_Palette0(1, 0x60B3, ((19 + unk) - arg1) - 1, i * 3 + 5, 1, 1);
+ taskId = CreateTask(sub_80F7CA8, 10);
+
+ var0 = (((*gUnknown_0203A034->unk4)[i].unk8 << 16) / (*gUnknown_0203A034->unk4)[i].unk11) * (arg1 + 1);
+ if ((var0 & 0xFFFF) > 0x7FFF)
+ var0 += 0x10000;
+
+ gTasks[taskId].data[0] = i;
+ gTasks[taskId].data[1] = var0 >> 16;
+ gUnknown_0203A034->unk0->unk14++;
+ sp8++;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ s8 unk = (*gUnknown_0203A034->unk4)[i].unk12;
+ u32 tile = (*gUnknown_0203A034->unk4)[i].unk10 ? 0x60A5 : 0x60A3;
+ if (arg1 < unk)
+ {
+ FillBgTilemapBufferRect_Palette0(1, tile, ((19 + unk) - arg1) - 1, i * 3 + 6, 1, 1);
+ taskId = CreateTask(sub_80F7CA8, 10);
+
+ var0 = (((*gUnknown_0203A034->unk4)[i].unkC << 16) / (*gUnknown_0203A034->unk4)[i].unk12) * (arg1 + 1);
+ if ((var0 & 0xFFFF) > 0x7FFF)
+ var0 += 0x10000;
+
+ gTasks[taskId].data[0] = i;
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ {
+ gTasks[taskId].data[2] = 1;
+ spC++;
+ }
+ else
+ {
+ sp8++;
+ }
+
+ if ((*gUnknown_0203A034->unk4)[i].unk10)
+ gTasks[taskId].data[1] = -(var0 >> 16) + (*gUnknown_0203A034->unk4)[i].unk8 ;
+ else
+ gTasks[taskId].data[1] = (var0 >> 16) + (*gUnknown_0203A034->unk4)[i].unk8;
+
+ gUnknown_0203A034->unk0->unk14++;
+ }
+ }
+ }
+
+ if (spC)
+ PlaySE(SE_BOO);
+ if (sp8)
+ PlaySE(SE_PIN);
}
void sub_80F7CA8(u8 taskId)
@@ -2624,8 +2051,7 @@ void sub_80F8290(void)
void sub_80F82B4(void)
{
- u8 i;
- u8 count;
+ u8 i, count;
for (i = 0, count = 0; i < 4; i++)
{
diff --git a/src/contest_painting.c b/src/contest_painting.c
index b43923c7b..66127cbbc 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -28,11 +28,11 @@ struct ContestWinner *gUnknown_030061C0;
u16 *gContestPaintingMonPalette;
// IWRAM bss
-IWRAM_DATA u8 gContestPaintingState;
-IWRAM_DATA u16 gContestPaintingMosaicVal;
-IWRAM_DATA u16 gContestPaintingFadeCounter;
-IWRAM_DATA bool8 gUnknown_030011F6;
-IWRAM_DATA u8 gContestPaintingWindowId;
+static u8 gContestPaintingState;
+static u16 gContestPaintingMosaicVal;
+static u16 gContestPaintingFadeCounter;
+static bool8 gUnknown_030011F6;
+static u8 gContestPaintingWindowId;
static void ShowContestPainting(void);
static void HoldContestPainting(void);
@@ -250,8 +250,7 @@ static void HoldContestPainting(void)
case 1:
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
- u8 two = 2; //needed to make the asm match
- gContestPaintingState = two;
+ gContestPaintingState++;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
@@ -363,7 +362,7 @@ static void VBlankCB_ContestPainting(void)
void sub_81302E8(u16 species, u8 arg1)
{
- const void *pal = GetFrontSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
+ const void *pal = GetMonSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
LZDecompressVram(pal, gContestPaintingMonPalette);
if (!arg1)
{
@@ -685,7 +684,7 @@ static void sub_8130760(u8 contestResult)
gUnknown_030061A0.var_16 = 2;
gUnknown_030061A0.var_0 = contestResult;
- gUnknown_030061A0.var_10 = 0x6010000;
+ gUnknown_030061A0.var_10 = OBJ_VRAM0;
sub_8124F2C(&gUnknown_030061A0);
sub_81261A4(&gUnknown_030061A0);
diff --git a/src/data/.gitignore b/src/data/.gitignore
new file mode 100755
index 000000000..eaf9e1f6d
--- /dev/null
+++ b/src/data/.gitignore
@@ -0,0 +1 @@
+wild_encounters.h
diff --git a/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h
index 108b3a3b0..d706aafee 100644
--- a/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h
+++ b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h
@@ -3,49 +3,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round1[] =
{
.species = SPECIES_PLUSLE,
.lvl = 35,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_ENCORE, MOVE_NONE}
},
{
.species = SPECIES_MINUN,
.lvl = 35,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_NONE}
},
{
.species = SPECIES_PIKACHU,
.lvl = 37,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_SLAM, MOVE_NONE}
},
{
.species = SPECIES_ELECTABUZZ,
.lvl = 37,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_SWIFT, MOVE_SCREECH, MOVE_NONE}
},
{
.species = SPECIES_VILEPLUME,
.lvl = 39,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STUN_SPORE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_MANECTRIC,
.lvl = 39,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_NONE}
},
{
.species = SPECIES_BRELOOM,
.lvl = 40,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STUN_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_MACH_PUNCH}
},
{
.species = SPECIES_JOLTEON,
.lvl = 40,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PIN_MISSILE, MOVE_QUICK_ATTACK}
}
};
@@ -55,49 +55,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round2[] =
{
.species = SPECIES_GULPIN,
.lvl = 36,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SLUDGE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_ROSELIA,
.lvl = 36,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_PETAL_DANCE}
},
{
.species = SPECIES_BUTTERFREE,
.lvl = 38,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_POISON_POWDER, MOVE_GUST, MOVE_PSYBEAM, MOVE_NONE}
},
{
.species = SPECIES_SEVIPER,
.lvl = 38,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_TAIL}
},
{
.species = SPECIES_SKARMORY,
.lvl = 40,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_FLY, MOVE_STEEL_WING, MOVE_NONE}
},
{
.species = SPECIES_LUDICOLO,
.lvl = 40,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_DIVE, MOVE_RAIN_DANCE}
},
{
.species = SPECIES_CROBAT,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_BITE}
},
{
.species = SPECIES_GENGAR,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SHADOW_PUNCH, MOVE_NIGHT_SHADE, MOVE_NONE}
}
};
@@ -107,49 +107,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round3[] =
{
.species = SPECIES_GROWLITHE,
.lvl = 37,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAME_WHEEL, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_VULPIX,
.lvl = 37,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_MAGCARGO,
.lvl = 39,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 39,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_NONE}
},
{
.species = SPECIES_MEDICHAM,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_WEEZING,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_SHADOW_PUNCH}
},
{
.species = SPECIES_HOUNDOOM,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SOLAR_BEAM, MOVE_OVERHEAT}
}
};
@@ -159,49 +159,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round4[] =
{
.species = SPECIES_DUNSPARCE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SPITE, MOVE_TOXIC, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_BANETTE,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_NONE}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_OVERHEAT, MOVE_NONE}
},
{
.species = SPECIES_ABSOL,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BITE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_TOXIC, MOVE_SHADOW_BALL}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_TOXIC, MOVE_SPITE, MOVE_NONE}
},
{
.species = SPECIES_GENGAR,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_NIGHT_SHADE, MOVE_NONE}
}
};
@@ -211,49 +211,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round5[] =
{
.species = SPECIES_HAUNTER,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_NONE}
},
{
.species = SPECIES_CHIMECHO,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYCHIC, MOVE_PROTECT}
},
{
.species = SPECIES_SOLROCK,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_TOXIC}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT}
},
{
.species = SPECIES_CLAYDOL,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SELF_DESTRUCT, MOVE_PSYCHIC}
},
{
.species = SPECIES_WEEZING,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SLUDGE_BOMB, MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_FLYGON,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW, MOVE_DRAGON_BREATH}
},
{
.species = SPECIES_GENGAR,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_NIGHT_SHADE}
}
};
@@ -263,49 +263,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round6[] =
{
.species = SPECIES_DIGLETT,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_SLASH, MOVE_DIG, MOVE_NONE}
},
{
.species = SPECIES_TRAPINCH,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_NONE}
},
{
.species = SPECIES_WYNAUT,
.lvl = 42,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_DESTINY_BOND, MOVE_SPLASH, MOVE_COUNTER, MOVE_MIRROR_COAT}
},
{
.species = SPECIES_DIGLETT,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_MAGNITUDE, MOVE_TOXIC}
},
{
.species = SPECIES_TRAPINCH,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_PROTECT}
},
{
.species = SPECIES_WYNAUT,
.lvl = 44,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
},
{
.species = SPECIES_WOBBUFFET,
.lvl = 45,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
},
{
.species = SPECIES_DUGTRIO,
.lvl = 45,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_ROCK_SLIDE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_PROTECT}
}
};
@@ -315,49 +315,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round7[] =
{
.species = SPECIES_GLALIE,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_SNEASEL,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_CRUSH_CLAW, MOVE_SPITE, MOVE_NONE}
},
{
.species = SPECIES_DEWGONG,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_PILOSWINE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_NONE}
},
{
.species = SPECIES_JYNX,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_LOVELY_KISS, MOVE_PSYCHIC, MOVE_NONE}
},
{
.species = SPECIES_CLOYSTER,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_WALREIN,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_BODY_SLAM, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_LAPRAS,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SING, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_PSYCHIC}
}
};
@@ -367,49 +367,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round8[] =
{
.species = SPECIES_WEEZING,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_ELECTRODE,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_THUNDERBOLT, MOVE_ROLLOUT, MOVE_NONE}
},
{
.species = SPECIES_GENGAR,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_DESTINY_BOND, MOVE_LICK, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_GOLEM,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_PINECO,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_GIGA_DRAIN, MOVE_NONE}
},
{
.species = SPECIES_SOLROCK,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_FIRE_SPIN, MOVE_PSYWAVE, MOVE_NONE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_SHIFTRY,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_PROTECT}
}
};
@@ -419,49 +419,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round9[] =
{
.species = SPECIES_WOBBUFFET,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND}
},
{
.species = SPECIES_METANG,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_PSYCHIC}
},
{
.species = SPECIES_EXEGGUTOR,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EGG_BOMB, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NONE}
},
{
.species = SPECIES_SLOWKING,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}
},
{
.species = SPECIES_XATU,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_STEEL_WING}
},
{
.species = SPECIES_ALAKAZAM,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_TOXIC}
},
{
.species = SPECIES_STARMIE,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}
},
{
.species = SPECIES_ESPEON,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_DIG, MOVE_SHADOW_BALL, MOVE_NONE}
}
};
@@ -471,49 +471,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round10[] =
{
.species = SPECIES_GOLEM,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_STEELIX,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_IRON_TAIL, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_OMASTAR,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SURF, MOVE_MUD_SHOT, MOVE_ANCIENT_POWER, MOVE_NONE}
},
{
.species = SPECIES_LUNATONE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPNOSIS, MOVE_PSYWAVE, MOVE_EXPLOSION, MOVE_NONE}
},
{
.species = SPECIES_SHUCKLE,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WRAP, MOVE_NONE}
},
{
.species = SPECIES_ARMALDO,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ANCIENT_POWER, MOVE_PROTECT, MOVE_AERIAL_ACE, MOVE_NONE}
},
{
.species = SPECIES_CRADILY,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_NONE}
},
{
.species = SPECIES_AERODACTYL,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_ROCK_SLIDE, MOVE_BITE, MOVE_NONE}
}
};
@@ -523,49 +523,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round11[] =
{
.species = SPECIES_POLIWRATH,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUBMISSION, MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_HARIYAMA,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FAKE_OUT, MOVE_SURF, MOVE_FOCUS_PUNCH, MOVE_NONE}
},
{
.species = SPECIES_BRELOOM,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_MEDICHAM,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
},
{
.species = SPECIES_HITMONCHAN,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
},
{
.species = SPECIES_HITMONLEE,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_HERACROSS,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE}
},
{
.species = SPECIES_MACHAMP,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_SEISMIC_TOSS}
}
};
@@ -575,49 +575,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round12[] =
{
.species = SPECIES_QUAGSIRE,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_TROPIUS,
.lvl = 41,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_PUPITAR,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SANDSTORM, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_LAPRAS,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_CACTURNE,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SANDSTORM, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_NONE}
},
{
.species = SPECIES_FLAREON,
.lvl = 44,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_WALREIN,
.lvl = 45,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_GYARADOS,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_RAIN_DANCE, MOVE_THUNDER, MOVE_HYDRO_PUMP, MOVE_NONE}
}
};
@@ -627,49 +627,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round13[] =
{
.species = SPECIES_PINECO,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_SHUCKLE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_VENOMOTH,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SILVER_WIND, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_PSYCHIC}
},
{
.species = SPECIES_SCIZOR,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_QUICK_ATTACK, MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_PURSUIT}
},
{
.species = SPECIES_HERACROSS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_ARMALDO,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_TOXIC, MOVE_SPITE, MOVE_GRUDGE}
}
};
@@ -679,49 +679,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round14[] =
{
.species = SPECIES_SABLEYE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_PSYCHIC, MOVE_AERIAL_ACE, MOVE_NONE}
},
{
.species = SPECIES_SNEASEL,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK}
},
{
.species = SPECIES_CRAWDAUNT,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CRABHAMMER, MOVE_ICE_BEAM, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_SHIFTRY,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_GIGA_DRAIN}
},
{
.species = SPECIES_CACTURNE,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_NEEDLE_ARM, MOVE_NONE}
},
{
.species = SPECIES_ABSOL,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BITE, MOVE_PROTECT, MOVE_SLASH, MOVE_NONE}
},
{
.species = SPECIES_HOUNDOOM,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_OVERHEAT, MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_UMBREON,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_IRON_TAIL, MOVE_QUICK_ATTACK}
}
};
@@ -731,49 +731,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round15[] =
{
.species = SPECIES_OCTILLERY,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_DEWGONG,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_ICE_BEAM, MOVE_HEADBUTT, MOVE_NONE}
},
{
.species = SPECIES_PELIPPER,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PROTECT, MOVE_SUPERSONIC, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_QUAGSIRE,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_LUDICOLO,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_TOXIC, MOVE_ICE_BEAM}
},
{
.species = SPECIES_SLOWKING,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_HEADBUTT, MOVE_SWAGGER, MOVE_NONE}
},
{
.species = SPECIES_STARMIE,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_BLIZZARD}
},
{
.species = SPECIES_BLASTOISE,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_ICE_BEAM, MOVE_NONE}
}
};
@@ -783,49 +783,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round16[] =
{
.species = SPECIES_DUSKULL,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_HAUNTER,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SPITE, MOVE_HYPNOSIS, MOVE_SHADOW_BALL}
},
{
.species = SPECIES_BANETTE,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_WILL_O_WISP, MOVE_NONE}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PERISH_SONG, MOVE_SPITE, MOVE_MEAN_LOOK, MOVE_NONE}
},
{
.species = SPECIES_SABLEYE,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_MEAN_LOOK, MOVE_DIG, MOVE_NIGHT_SHADE}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_TOXIC, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_GRUDGE, MOVE_PROTECT}
},
{
.species = SPECIES_GENGAR,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_DESTINY_BOND, MOVE_SPITE, MOVE_NIGHT_SHADE}
}
};
@@ -835,49 +835,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round17[] =
{
.species = SPECIES_MAWILE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CRUNCH, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
},
{
.species = SPECIES_MAGNETON,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_STEELIX,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_THROW, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_SCIZOR,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_METAL_CLAW, MOVE_SLASH, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_SKARMORY,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STEEL_WING, MOVE_TOXIC, MOVE_FLY, MOVE_PROTECT}
},
{
.species = SPECIES_AGGRON,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_TAKE_DOWN, MOVE_SURF, MOVE_ICE_BEAM}
},
{
.species = SPECIES_METAGROSS,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}
}
};
@@ -887,49 +887,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round18[] =
{
.species = SPECIES_DRAGONAIR,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
},
{
.species = SPECIES_VIBRAVA,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_CRUNCH, MOVE_STEEL_WING}
},
{
.species = SPECIES_ALTARIA,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_SING, MOVE_PROTECT}
},
{
.species = SPECIES_FLYGON,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_AERODACTYL,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_CLAW, MOVE_NONE}
},
{
.species = SPECIES_GYARADOS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_THRASH, MOVE_BITE}
},
{
.species = SPECIES_KINGDRA,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_CHARIZARD,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_FIRE_BLAST, MOVE_IRON_TAIL}
}
};
@@ -939,49 +939,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round19[] =
{
.species = SPECIES_ARCANINE,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FIRE_BLAST, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_POLIWRATH,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_RAICHU,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_SLAM, MOVE_NONE}
},
{
.species = SPECIES_VAPOREON,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_JOLTEON,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_PIN_MISSILE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_FLAREON,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_STARMIE,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_PSYCHIC}
}
};
@@ -991,49 +991,49 @@ static const struct PyramidWildMon sLevel50WildMons_Round20[] =
{
.species = SPECIES_KANGASKHAN,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_SURF, MOVE_DIZZY_PUNCH}
},
{
.species = SPECIES_SWELLOW,
.lvl = 42,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_AERIAL_ACE, MOVE_HYPER_BEAM, MOVE_TOXIC, MOVE_NONE}
},
{
.species = SPECIES_URSARING,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_PROTECT}
},
{
.species = SPECIES_PORYGON2,
.lvl = 46,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYBEAM, MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
},
{
.species = SPECIES_TAUROS,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF, MOVE_THUNDERBOLT}
},
{
.species = SPECIES_FEAROW,
.lvl = 48,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_PROTECT}
},
{
.species = SPECIES_SNORLAX,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}
},
{
.species = SPECIES_SLAKING,
.lvl = 50,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
}
};
diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h
index 10435d767..8738b0de6 100644
--- a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h
+++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h
@@ -3,49 +3,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round1[] =
{
.species = SPECIES_PLUSLE,
.lvl = 15,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_ENCORE, MOVE_NONE}
},
{
.species = SPECIES_MINUN,
.lvl = 15,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_NONE}
},
{
.species = SPECIES_PIKACHU,
.lvl = 13,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_SLAM, MOVE_NONE}
},
{
.species = SPECIES_ELECTABUZZ,
.lvl = 13,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_SWIFT, MOVE_SCREECH, MOVE_NONE}
},
{
.species = SPECIES_VILEPLUME,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STUN_SPORE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_MANECTRIC,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_NONE}
},
{
.species = SPECIES_BRELOOM,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STUN_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_MACH_PUNCH}
},
{
.species = SPECIES_JOLTEON,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PIN_MISSILE, MOVE_QUICK_ATTACK}
}
};
@@ -55,49 +55,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round2[] =
{
.species = SPECIES_GULPIN,
.lvl = 14,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SLUDGE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_ROSELIA,
.lvl = 14,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_PETAL_DANCE}
},
{
.species = SPECIES_BUTTERFREE,
.lvl = 12,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_POISON_POWDER, MOVE_GUST, MOVE_PSYBEAM, MOVE_NONE}
},
{
.species = SPECIES_SEVIPER,
.lvl = 12,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_TAIL}
},
{
.species = SPECIES_SKARMORY,
.lvl = 7,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_FLY, MOVE_STEEL_WING, MOVE_NONE}
},
{
.species = SPECIES_LUDICOLO,
.lvl = 7,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_DIVE, MOVE_RAIN_DANCE}
},
{
.species = SPECIES_CROBAT,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_BITE}
},
{
.species = SPECIES_GENGAR,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SHADOW_PUNCH, MOVE_NIGHT_SHADE, MOVE_NONE}
}
};
@@ -107,49 +107,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round3[] =
{
.species = SPECIES_GROWLITHE,
.lvl = 13,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAME_WHEEL, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_VULPIX,
.lvl = 13,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_MAGCARGO,
.lvl = 11,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 11,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_NONE}
},
{
.species = SPECIES_MEDICHAM,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_WEEZING,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_SHADOW_PUNCH}
},
{
.species = SPECIES_HOUNDOOM,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SOLAR_BEAM, MOVE_OVERHEAT}
}
};
@@ -159,49 +159,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round4[] =
{
.species = SPECIES_DUNSPARCE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SPITE, MOVE_TOXIC, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_BANETTE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_NONE}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_OVERHEAT, MOVE_NONE}
},
{
.species = SPECIES_ABSOL,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BITE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_TOXIC, MOVE_SHADOW_BALL}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_TOXIC, MOVE_SPITE, MOVE_NONE}
},
{
.species = SPECIES_GENGAR,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_NIGHT_SHADE, MOVE_NONE}
}
};
@@ -211,49 +211,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round5[] =
{
.species = SPECIES_HAUNTER,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_NONE}
},
{
.species = SPECIES_CHIMECHO,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYCHIC, MOVE_PROTECT}
},
{
.species = SPECIES_SOLROCK,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_TOXIC}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT}
},
{
.species = SPECIES_CLAYDOL,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SELF_DESTRUCT, MOVE_PSYCHIC}
},
{
.species = SPECIES_WEEZING,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SLUDGE_BOMB, MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_FLYGON,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW, MOVE_DRAGON_BREATH}
},
{
.species = SPECIES_GENGAR,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_NIGHT_SHADE}
}
};
@@ -263,49 +263,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round6[] =
{
.species = SPECIES_DIGLETT,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_SLASH, MOVE_DIG, MOVE_NONE}
},
{
.species = SPECIES_TRAPINCH,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_NONE}
},
{
.species = SPECIES_WYNAUT,
.lvl = 8,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_DESTINY_BOND, MOVE_SPLASH, MOVE_COUNTER, MOVE_MIRROR_COAT}
},
{
.species = SPECIES_DIGLETT,
.lvl = 8,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_MAGNITUDE, MOVE_TOXIC}
},
{
.species = SPECIES_TRAPINCH,
.lvl = 6,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_PROTECT}
},
{
.species = SPECIES_WYNAUT,
.lvl = 6,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
},
{
.species = SPECIES_WOBBUFFET,
.lvl = 5,
- .abilityBit = 0,
+ .abilityNum = 0,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
},
{
.species = SPECIES_DUGTRIO,
.lvl = 5,
- .abilityBit = 1,
+ .abilityNum = 1,
.moves = {MOVE_ROCK_SLIDE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_PROTECT}
}
};
@@ -315,49 +315,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round7[] =
{
.species = SPECIES_GLALIE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_SNEASEL,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_CRUSH_CLAW, MOVE_SPITE, MOVE_NONE}
},
{
.species = SPECIES_DEWGONG,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_PILOSWINE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_NONE}
},
{
.species = SPECIES_JYNX,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_LOVELY_KISS, MOVE_PSYCHIC, MOVE_NONE}
},
{
.species = SPECIES_CLOYSTER,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_WALREIN,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BLIZZARD, MOVE_BODY_SLAM, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_LAPRAS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SING, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_PSYCHIC}
}
};
@@ -367,49 +367,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round8[] =
{
.species = SPECIES_WEEZING,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_ELECTRODE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_THUNDERBOLT, MOVE_ROLLOUT, MOVE_NONE}
},
{
.species = SPECIES_GENGAR,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_DESTINY_BOND, MOVE_LICK, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_GOLEM,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_PINECO,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_GIGA_DRAIN, MOVE_NONE}
},
{
.species = SPECIES_SOLROCK,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_FIRE_SPIN, MOVE_PSYWAVE, MOVE_NONE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_SHIFTRY,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_PROTECT}
}
};
@@ -419,49 +419,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round9[] =
{
.species = SPECIES_WOBBUFFET,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND}
},
{
.species = SPECIES_METANG,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_PSYCHIC}
},
{
.species = SPECIES_EXEGGUTOR,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EGG_BOMB, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NONE}
},
{
.species = SPECIES_SLOWKING,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}
},
{
.species = SPECIES_XATU,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_STEEL_WING}
},
{
.species = SPECIES_ALAKAZAM,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_TOXIC}
},
{
.species = SPECIES_STARMIE,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}
},
{
.species = SPECIES_ESPEON,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_DIG, MOVE_SHADOW_BALL, MOVE_NONE}
}
};
@@ -471,49 +471,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round10[] =
{
.species = SPECIES_GOLEM,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SELF_DESTRUCT, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_STEELIX,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_IRON_TAIL, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_OMASTAR,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SURF, MOVE_MUD_SHOT, MOVE_ANCIENT_POWER, MOVE_NONE}
},
{
.species = SPECIES_LUNATONE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPNOSIS, MOVE_PSYWAVE, MOVE_EXPLOSION, MOVE_NONE}
},
{
.species = SPECIES_SHUCKLE,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WRAP, MOVE_NONE}
},
{
.species = SPECIES_ARMALDO,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ANCIENT_POWER, MOVE_PROTECT, MOVE_AERIAL_ACE, MOVE_NONE}
},
{
.species = SPECIES_CRADILY,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_NONE}
},
{
.species = SPECIES_AERODACTYL,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_ROCK_SLIDE, MOVE_BITE, MOVE_NONE}
}
};
@@ -523,49 +523,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round11[] =
{
.species = SPECIES_POLIWRATH,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUBMISSION, MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_HARIYAMA,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FAKE_OUT, MOVE_SURF, MOVE_FOCUS_PUNCH, MOVE_NONE}
},
{
.species = SPECIES_BRELOOM,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_MEDICHAM,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
},
{
.species = SPECIES_HITMONCHAN,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
},
{
.species = SPECIES_HITMONLEE,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_HERACROSS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE}
},
{
.species = SPECIES_MACHAMP,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_SEISMIC_TOSS}
}
};
@@ -575,49 +575,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round12[] =
{
.species = SPECIES_QUAGSIRE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_TROPIUS,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_PUPITAR,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SANDSTORM, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_LAPRAS,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_CACTURNE,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SANDSTORM, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_NONE}
},
{
.species = SPECIES_FLAREON,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_WALREIN,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_GYARADOS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_RAIN_DANCE, MOVE_THUNDER, MOVE_HYDRO_PUMP, MOVE_NONE}
}
};
@@ -627,49 +627,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round13[] =
{
.species = SPECIES_PINECO,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_SHUCKLE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_VENOMOTH,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SILVER_WIND, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_PSYCHIC}
},
{
.species = SPECIES_SCIZOR,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_QUICK_ATTACK, MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_PURSUIT}
},
{
.species = SPECIES_HERACROSS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_ARMALDO,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_NONE}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_TOXIC, MOVE_SPITE, MOVE_GRUDGE}
}
};
@@ -679,49 +679,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round14[] =
{
.species = SPECIES_SABLEYE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_PSYCHIC, MOVE_AERIAL_ACE, MOVE_NONE}
},
{
.species = SPECIES_SNEASEL,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK}
},
{
.species = SPECIES_CRAWDAUNT,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CRABHAMMER, MOVE_ICE_BEAM, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_SHIFTRY,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_GIGA_DRAIN}
},
{
.species = SPECIES_CACTURNE,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_NEEDLE_ARM, MOVE_NONE}
},
{
.species = SPECIES_ABSOL,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_BITE, MOVE_PROTECT, MOVE_SLASH, MOVE_NONE}
},
{
.species = SPECIES_HOUNDOOM,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_OVERHEAT, MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_UMBREON,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_IRON_TAIL, MOVE_QUICK_ATTACK}
}
};
@@ -731,49 +731,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round15[] =
{
.species = SPECIES_OCTILLERY,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_DEWGONG,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_ICE_BEAM, MOVE_HEADBUTT, MOVE_NONE}
},
{
.species = SPECIES_PELIPPER,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PROTECT, MOVE_SUPERSONIC, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_QUAGSIRE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_NONE}
},
{
.species = SPECIES_LUDICOLO,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_TOXIC, MOVE_ICE_BEAM}
},
{
.species = SPECIES_SLOWKING,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_HEADBUTT, MOVE_SWAGGER, MOVE_NONE}
},
{
.species = SPECIES_STARMIE,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WATER_PULSE, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_BLIZZARD}
},
{
.species = SPECIES_BLASTOISE,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_ICE_BEAM, MOVE_NONE}
}
};
@@ -783,49 +783,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round16[] =
{
.species = SPECIES_DUSKULL,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_PROTECT}
},
{
.species = SPECIES_HAUNTER,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_TOXIC, MOVE_SPITE, MOVE_HYPNOSIS, MOVE_SHADOW_BALL}
},
{
.species = SPECIES_BANETTE,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_WILL_O_WISP, MOVE_NONE}
},
{
.species = SPECIES_MISDREAVUS,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PERISH_SONG, MOVE_SPITE, MOVE_MEAN_LOOK, MOVE_NONE}
},
{
.species = SPECIES_SABLEYE,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_MEAN_LOOK, MOVE_DIG, MOVE_NIGHT_SHADE}
},
{
.species = SPECIES_DUSCLOPS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_WILL_O_WISP, MOVE_TOXIC, MOVE_SHADOW_BALL, MOVE_NONE}
},
{
.species = SPECIES_SHEDINJA,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_GRUDGE, MOVE_PROTECT}
},
{
.species = SPECIES_GENGAR,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYCHIC, MOVE_DESTINY_BOND, MOVE_SPITE, MOVE_NIGHT_SHADE}
}
};
@@ -835,49 +835,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round17[] =
{
.species = SPECIES_MAWILE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_CRUNCH, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
},
{
.species = SPECIES_MAGNETON,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_STEELIX,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ROCK_THROW, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_NONE}
},
{
.species = SPECIES_SCIZOR,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_METAL_CLAW, MOVE_SLASH, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_FORRETRESS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_SKARMORY,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_STEEL_WING, MOVE_TOXIC, MOVE_FLY, MOVE_PROTECT}
},
{
.species = SPECIES_AGGRON,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_TAKE_DOWN, MOVE_SURF, MOVE_ICE_BEAM}
},
{
.species = SPECIES_METAGROSS,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}
}
};
@@ -887,49 +887,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round18[] =
{
.species = SPECIES_DRAGONAIR,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
},
{
.species = SPECIES_VIBRAVA,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_CRUNCH, MOVE_STEEL_WING}
},
{
.species = SPECIES_ALTARIA,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_SING, MOVE_PROTECT}
},
{
.species = SPECIES_FLYGON,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST, MOVE_NONE}
},
{
.species = SPECIES_AERODACTYL,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_CLAW, MOVE_NONE}
},
{
.species = SPECIES_GYARADOS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_THRASH, MOVE_BITE}
},
{
.species = SPECIES_KINGDRA,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_CHARIZARD,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_FIRE_BLAST, MOVE_IRON_TAIL}
}
};
@@ -939,49 +939,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round19[] =
{
.species = SPECIES_ARCANINE,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FIRE_BLAST, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_POLIWRATH,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_RAICHU,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_SLAM, MOVE_NONE}
},
{
.species = SPECIES_VAPOREON,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_JOLTEON,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_THUNDERBOLT, MOVE_PIN_MISSILE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_FLAREON,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_NONE, MOVE_NONE}
},
{
.species = SPECIES_NINETALES,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_NONE}
},
{
.species = SPECIES_STARMIE,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_PSYCHIC}
}
};
@@ -991,49 +991,49 @@ static const struct PyramidWildMon sOpenLevelWildMons_Round20[] =
{
.species = SPECIES_KANGASKHAN,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_SURF, MOVE_DIZZY_PUNCH}
},
{
.species = SPECIES_SWELLOW,
.lvl = 10,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_AERIAL_ACE, MOVE_HYPER_BEAM, MOVE_TOXIC, MOVE_NONE}
},
{
.species = SPECIES_URSARING,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_PROTECT}
},
{
.species = SPECIES_PORYGON2,
.lvl = 8,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_PSYBEAM, MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
},
{
.species = SPECIES_TAUROS,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF, MOVE_THUNDERBOLT}
},
{
.species = SPECIES_FEAROW,
.lvl = 6,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_PROTECT}
},
{
.species = SPECIES_SNORLAX,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}
},
{
.species = SPECIES_SLAKING,
.lvl = 5,
- .abilityBit = 2,
+ .abilityNum = ABILITY_RANDOM,
.moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
}
};
diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h
index ca0d623e9..64d216e4b 100644
--- a/src/data/battle_frontier/trainer_hill.h
+++ b/src/data/battle_frontier/trainer_hill.h
@@ -45,7 +45,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("MISDREAVUS"),
.friendship = 255,
@@ -68,7 +68,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("SOLROCK"),
.friendship = 255,
@@ -90,7 +90,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xC,
.nickname = _("CLAYDOL"),
.friendship = 255,
@@ -112,7 +112,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("WEEZING"),
.friendship = 0,
@@ -135,7 +135,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("LUNATONE"),
.friendship = 255,
@@ -157,7 +157,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 24,
.spAttackIV = 24,
.spDefenseIV = 24,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x83,
.nickname = _("FLYGON"),
.friendship = 255,
@@ -191,7 +191,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("SEALEO"),
.friendship = 255,
@@ -212,7 +212,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("AMPHAROS"),
.friendship = 255,
@@ -233,7 +233,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x4E,
.nickname = _("MACHOKE"),
.friendship = 255,
@@ -254,7 +254,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("FLAREON"),
.friendship = 255,
@@ -275,7 +275,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("MAGNETON"),
.friendship = 255,
@@ -297,7 +297,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x85,
.nickname = _("PINSIR"),
.friendship = 255,
@@ -345,7 +345,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("MEDITITE"),
.friendship = 255,
@@ -367,7 +367,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x80,
.nickname = _("HERACROSS"),
.friendship = 255,
@@ -389,7 +389,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("HITMONTOP"),
.friendship = 255,
@@ -411,7 +411,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x4E,
.nickname = _("MACHOP"),
.friendship = 255,
@@ -433,7 +433,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("PINSIR"),
.friendship = 255,
@@ -455,7 +455,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 20,
.spAttackIV = 20,
.spDefenseIV = 20,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("HITMONCHAN"),
.friendship = 255,
@@ -490,7 +490,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("VULPIX"),
.friendship = 255,
@@ -512,7 +512,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("MINUN"),
.friendship = 255,
@@ -534,7 +534,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("ROSELIA"),
.friendship = 255,
@@ -556,7 +556,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x82,
.nickname = _("MR. MIME"),
.friendship = 255,
@@ -578,7 +578,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x5,
.nickname = _("PLUSLE"),
.friendship = 255,
@@ -600,7 +600,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x37,
.nickname = _("TOGEPI"),
.friendship = 255,
@@ -648,7 +648,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x37,
.nickname = _("VAPOREON"),
.friendship = 0,
@@ -670,7 +670,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x8A,
.nickname = _("DODRIO"),
.friendship = 0,
@@ -692,7 +692,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x14,
.nickname = _("OMASTAR"),
.friendship = 255,
@@ -714,7 +714,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8,
.nickname = _("LICKITUNG"),
.friendship = 255,
@@ -736,7 +736,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x94,
.nickname = _("SLOWBRO"),
.friendship = 0,
@@ -758,7 +758,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8,
.nickname = _("LINOONE"),
.friendship = 255,
@@ -792,7 +792,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xCB,
.nickname = _("SKITTY"),
.friendship = 255,
@@ -814,7 +814,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("MEDICHAM"),
.friendship = 0,
@@ -836,7 +836,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("STANTLER"),
.friendship = 0,
@@ -858,7 +858,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("NIDOQUEEN"),
.friendship = 0,
@@ -880,7 +880,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD7,
.nickname = _("NINETALES"),
.friendship = 255,
@@ -902,7 +902,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("CHARIZARD"),
.friendship = 255,
@@ -949,7 +949,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x41,
.nickname = _("ALAKAZAM"),
.friendship = 255,
@@ -971,7 +971,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("BLISSEY"),
.friendship = 255,
@@ -993,7 +993,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("GRUMPIG"),
.friendship = 255,
@@ -1014,7 +1014,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("GARDEVOIR"),
.friendship = 255,
@@ -1035,7 +1035,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("VENOMOTH"),
.friendship = 255,
@@ -1056,7 +1056,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("ESPEON"),
.friendship = 255,
@@ -1090,7 +1090,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("WEEZING"),
.friendship = 255,
@@ -1111,7 +1111,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("GLOOM"),
.friendship = 255,
@@ -1132,7 +1132,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("MUK"),
.friendship = 255,
@@ -1154,7 +1154,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x83,
.nickname = _("TROPIUS"),
.friendship = 255,
@@ -1175,7 +1175,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x6,
.nickname = _("BELLOSSOM"),
.friendship = 255,
@@ -1197,7 +1197,7 @@ static const struct TrHillTag sDataTagNormal =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x1F,
.nickname = _("MEGANIUM"),
.friendship = 255,
@@ -1257,7 +1257,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x8A,
.nickname = _("DELIBIRD"),
.friendship = 255,
@@ -1278,7 +1278,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("CLEFAIRY"),
.friendship = 255,
@@ -1299,7 +1299,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("PIKACHU"),
.friendship = 255,
@@ -1320,7 +1320,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x8A,
.nickname = _("MARILL"),
.friendship = 255,
@@ -1341,7 +1341,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("JIGGLYPUFF"),
.friendship = 255,
@@ -1362,7 +1362,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x26,
.nickname = _("TOGETIC"),
.friendship = 255,
@@ -1396,7 +1396,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xC1,
.nickname = _("WIGGLYTUFF"),
.friendship = 255,
@@ -1417,7 +1417,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x87,
.nickname = _("SABLEYE"),
.friendship = 255,
@@ -1438,7 +1438,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("GRUMPIG"),
.friendship = 255,
@@ -1459,7 +1459,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x12,
.nickname = _("CORSOLA"),
.friendship = 255,
@@ -1480,7 +1480,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("CLAMPERL"),
.friendship = 255,
@@ -1501,7 +1501,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("STARMIE"),
.friendship = 255,
@@ -1552,7 +1552,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("JIGGLYPUFF"),
.friendship = 255,
@@ -1577,7 +1577,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("JYNX"),
.friendship = 255,
@@ -1602,7 +1602,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x96,
.nickname = _("EXPLOUD"),
.friendship = 255,
@@ -1627,7 +1627,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x96,
.nickname = _("ABSOL"),
.friendship = 255,
@@ -1652,7 +1652,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x96,
.nickname = _("PIDGEOTTO"),
.friendship = 255,
@@ -1677,7 +1677,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("ALTARIA"),
.friendship = 255,
@@ -1712,7 +1712,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("CHIMECHO"),
.friendship = 255,
@@ -1734,7 +1734,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("WHISMUR"),
.friendship = 255,
@@ -1756,7 +1756,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8A,
.nickname = _("YANMA"),
.friendship = 255,
@@ -1778,7 +1778,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("ILLUMISE"),
.friendship = 255,
@@ -1800,7 +1800,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("SPHEAL"),
.friendship = 255,
@@ -1822,7 +1822,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x87,
.nickname = _("VIGOROTH"),
.friendship = 255,
@@ -1870,7 +1870,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("WOOPER"),
.friendship = 255,
@@ -1892,7 +1892,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x3,
.nickname = _("POLIWAG"),
.friendship = 255,
@@ -1914,7 +1914,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("PSYDUCK"),
.friendship = 255,
@@ -1936,7 +1936,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x96,
.nickname = _("RHYDON"),
.friendship = 0,
@@ -1958,7 +1958,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("RHYHORN"),
.friendship = 0,
@@ -1980,7 +1980,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x80,
.nickname = _("CUBONE"),
.friendship = 0,
@@ -2015,7 +2015,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("MAGNEMITE"),
.friendship = 255,
@@ -2037,7 +2037,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x41,
.nickname = _("ELECTABUZZ"),
.friendship = 255,
@@ -2058,7 +2058,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("FLAAFFY"),
.friendship = 255,
@@ -2080,7 +2080,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("BALTOY"),
.friendship = 0,
@@ -2102,7 +2102,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("PINECO"),
.friendship = 0,
@@ -2124,7 +2124,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("VOLTORB"),
.friendship = 0,
@@ -2171,7 +2171,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 31,
.spAttackIV = 30,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x202,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2192,7 +2192,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 30,
.spAttackIV = 30,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x10001,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2213,7 +2213,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 30,
.spAttackIV = 30,
.spDefenseIV = 30,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x102,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2235,7 +2235,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x88FE980F,
.nickname = _("SPINDA"),
.friendship = 255,
@@ -2256,7 +2256,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("PLUSLE"),
.friendship = 255,
@@ -2277,7 +2277,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("VOLBEAT"),
.friendship = 255,
@@ -2312,7 +2312,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xE2880098,
.nickname = _("SPINDA"),
.friendship = 255,
@@ -2333,7 +2333,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("MINUN"),
.friendship = 255,
@@ -2354,7 +2354,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("ILLUMISE"),
.friendship = 255,
@@ -2375,7 +2375,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 30,
.spAttackIV = 30,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x302,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2396,7 +2396,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 31,
.spAttackIV = 30,
.spDefenseIV = 30,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x203,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2417,7 +2417,7 @@ static const struct TrHillTag sDataTagVariety =
.speedIV = 30,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x301,
.nickname = _("UNOWN"),
.friendship = 255,
@@ -2478,7 +2478,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("SUNFLORA"),
.friendship = 255,
@@ -2499,7 +2499,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x91,
.nickname = _("TANGELA"),
.friendship = 255,
@@ -2523,7 +2523,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x1F,
.nickname = _("VENUSAUR"),
.friendship = 255,
@@ -2544,7 +2544,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("LANTURN"),
.friendship = 255,
@@ -2565,7 +2565,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("MANECTRIC"),
.friendship = 255,
@@ -2586,7 +2586,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("RAIKOU"),
.friendship = 255,
@@ -2621,7 +2621,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x2F,
.nickname = _("RELICANTH"),
.friendship = 255,
@@ -2642,7 +2642,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("GOLDUCK"),
.friendship = 255,
@@ -2663,7 +2663,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("BLASTOISE"),
.friendship = 255,
@@ -2684,7 +2684,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x93,
.nickname = _("MAGCARGO"),
.friendship = 255,
@@ -2705,7 +2705,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("RAPIDASH"),
.friendship = 255,
@@ -2726,7 +2726,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("MOLTRES"),
.friendship = 255,
@@ -2774,7 +2774,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8A,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2796,7 +2796,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x87,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2818,7 +2818,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2840,7 +2840,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2862,7 +2862,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2884,7 +2884,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8A,
.nickname = _("SMEARGLE"),
.friendship = 255,
@@ -2919,7 +2919,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xA,
.nickname = _("STARYU"),
.friendship = 255,
@@ -2941,7 +2941,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD,
.nickname = _("MEOWTH"),
.friendship = 255,
@@ -2963,7 +2963,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("BLAZIKEN"),
.friendship = 255,
@@ -2985,7 +2985,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x16,
.nickname = _("CUBONE"),
.friendship = 255,
@@ -3006,7 +3006,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8A,
.nickname = _("BEEDRILL"),
.friendship = 255,
@@ -3028,7 +3028,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 5,
.spAttackIV = 5,
.spDefenseIV = 5,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xD,
.nickname = _("RATICATE"),
.friendship = 255,
@@ -3076,7 +3076,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 25,
.spAttackIV = 25,
.spDefenseIV = 25,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x32,
.nickname = _("CHARMELEON"),
.friendship = 100,
@@ -3097,7 +3097,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 25,
.spAttackIV = 25,
.spDefenseIV = 25,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("WARTORTLE"),
.friendship = 100,
@@ -3119,7 +3119,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 25,
.spAttackIV = 25,
.spDefenseIV = 25,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("IVYSAUR"),
.friendship = 100,
@@ -3141,7 +3141,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 25,
.spAttackIV = 25,
.spDefenseIV = 25,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x32,
.nickname = _("BAYLEEF"),
.friendship = 100,
@@ -3163,7 +3163,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 25,
.spAttackIV = 25,
.spDefenseIV = 25,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("CROCONAW"),
.friendship = 100,
@@ -3185,7 +3185,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("QUILAVA"),
.friendship = 100,
@@ -3220,7 +3220,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x32,
.nickname = _("SMOOCHUM"),
.friendship = 50,
@@ -3242,7 +3242,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xC8,
.nickname = _("AZURILL"),
.friendship = 50,
@@ -3264,7 +3264,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("ELEKID"),
.friendship = 50,
@@ -3286,7 +3286,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("CLEFFA"),
.friendship = 50,
@@ -3308,7 +3308,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x84,
.nickname = _("WYNAUT"),
.friendship = 50,
@@ -3330,7 +3330,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("MAGBY"),
.friendship = 50,
@@ -3378,7 +3378,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("SUDOWOODO"),
.friendship = 255,
@@ -3399,7 +3399,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x8C,
.nickname = _("SLOWKING"),
.friendship = 255,
@@ -3420,7 +3420,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("ENTEI"),
.friendship = 255,
@@ -3441,7 +3441,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("HITMONCHAN"),
.friendship = 255,
@@ -3462,7 +3462,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x6,
.nickname = _("MANTINE"),
.friendship = 255,
@@ -3483,7 +3483,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x18,
.nickname = _("ZAPDOS"),
.friendship = 255,
@@ -3517,7 +3517,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("HITMONLEE"),
.friendship = 255,
@@ -3538,7 +3538,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("PORYGON2"),
.friendship = 255,
@@ -3559,7 +3559,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("SUICUNE"),
.friendship = 255,
@@ -3580,7 +3580,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("HOUNDOOM"),
.friendship = 255,
@@ -3601,7 +3601,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("STANTLER"),
.friendship = 255,
@@ -3622,7 +3622,7 @@ static const struct TrHillTag sDataTagUnique =
.speedIV = 15,
.spAttackIV = 15,
.spDefenseIV = 15,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("ARTICUNO"),
.friendship = 255,
@@ -3683,7 +3683,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x35,
.nickname = _("SNORLAX"),
.friendship = 255,
@@ -3705,7 +3705,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("MILTANK"),
.friendship = 255,
@@ -3727,7 +3727,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x7F,
.nickname = _("URSARING"),
.friendship = 255,
@@ -3749,7 +3749,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("SLAKING"),
.friendship = 255,
@@ -3771,7 +3771,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("KANGASKHAN"),
.friendship = 255,
@@ -3793,7 +3793,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("ZANGOOSE"),
.friendship = 255,
@@ -3828,7 +3828,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("SLOWKING"),
.friendship = 255,
@@ -3850,7 +3850,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x28,
.nickname = _("ESPEON"),
.friendship = 255,
@@ -3872,7 +3872,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xF,
.nickname = _("STARMIE"),
.friendship = 255,
@@ -3894,7 +3894,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("GENGAR"),
.friendship = 255,
@@ -3916,7 +3916,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("GARDEVOIR"),
.friendship = 255,
@@ -3938,7 +3938,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("ALAKAZAM"),
.friendship = 255,
@@ -3986,7 +3986,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("SWELLOW"),
.friendship = 255,
@@ -4008,7 +4008,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("MACHAMP"),
.friendship = 255,
@@ -4030,7 +4030,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("URSARING"),
.friendship = 255,
@@ -4052,7 +4052,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("KINGLER"),
.friendship = 255,
@@ -4074,7 +4074,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("TYRANITAR"),
.friendship = 255,
@@ -4096,7 +4096,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x80,
.nickname = _("DRAGONITE"),
.friendship = 255,
@@ -4131,7 +4131,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("JOLTEON"),
.friendship = 255,
@@ -4153,7 +4153,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xA,
.nickname = _("ALAKAZAM"),
.friendship = 255,
@@ -4175,7 +4175,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xA,
.nickname = _("STARMIE"),
.friendship = 255,
@@ -4197,7 +4197,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x82,
.nickname = _("DUSCLOPS"),
.friendship = 255,
@@ -4219,7 +4219,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xD2,
.nickname = _("NINETALES"),
.friendship = 255,
@@ -4241,7 +4241,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x85,
.nickname = _("BANETTE"),
.friendship = 255,
@@ -4289,7 +4289,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x94,
.nickname = _("WOBBUFFET"),
.friendship = 255,
@@ -4311,7 +4311,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x85,
.nickname = _("EXPLOUD"),
.friendship = 0,
@@ -4333,7 +4333,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("CROBAT"),
.friendship = 255,
@@ -4355,7 +4355,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xD,
.nickname = _("DUGTRIO"),
.friendship = 255,
@@ -4377,7 +4377,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x5,
.nickname = _("ELECTRODE"),
.friendship = 0,
@@ -4399,7 +4399,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x14,
.nickname = _("GENGAR"),
.friendship = 255,
@@ -4434,7 +4434,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x82,
.nickname = _("LAPRAS"),
.friendship = 0,
@@ -4456,7 +4456,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8A,
.nickname = _("ABSOL"),
.friendship = 0,
@@ -4478,7 +4478,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x0,
.nickname = _("ALTARIA"),
.friendship = 0,
@@ -4500,7 +4500,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x14,
.nickname = _("DEWGONG"),
.friendship = 0,
@@ -4522,7 +4522,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x14,
.nickname = _("POLITOED"),
.friendship = 0,
@@ -4544,7 +4544,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0x17,
.nickname = _("MAROWAK"),
.friendship = 0,
@@ -4592,7 +4592,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("FORRETRESS"),
.friendship = 255,
@@ -4613,7 +4613,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 1,
+ .abilityNum = 1,
.personality = 0xC,
.nickname = _("ELECTRODE"),
.friendship = 255,
@@ -4634,7 +4634,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x7F,
.nickname = _("EXEGGUTOR"),
.friendship = 255,
@@ -4656,7 +4656,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x93,
.nickname = _("DUSCLOPS"),
.friendship = 255,
@@ -4677,7 +4677,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0xF,
.nickname = _("NINETALES"),
.friendship = 255,
@@ -4698,7 +4698,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x96,
.nickname = _("BANETTE"),
.friendship = 255,
@@ -4732,7 +4732,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x95,
.nickname = _("SALAMENCE"),
.friendship = 255,
@@ -4753,7 +4753,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x8C,
.nickname = _("GENGAR"),
.friendship = 255,
@@ -4774,7 +4774,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("GYARADOS"),
.friendship = 255,
@@ -4795,7 +4795,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x3,
.nickname = _("GENGAR"),
.friendship = 255,
@@ -4817,7 +4817,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x14,
.nickname = _("DUSCLOPS"),
.friendship = 255,
@@ -4839,7 +4839,7 @@ static const struct TrHillTag sDataTagExpert =
.speedIV = 31,
.spAttackIV = 31,
.spDefenseIV = 31,
- .altAbility = 0,
+ .abilityNum = 0,
.personality = 0x85,
.nickname = _("MISDREAVUS"),
.friendship = 255,
diff --git a/src/data/graphics/berries.h b/src/data/graphics/berries.h
index 326bd1c5b..eb3f9f4dc 100644
--- a/src/data/graphics/berries.h
+++ b/src/data/graphics/berries.h
@@ -1,8 +1,8 @@
-const u32 gUnknown_08D9BB44[] = INCBIN_U32("graphics/interface/check_berry.4bpp.lz");
-const u32 gUnknown_08D9BEF0[] = INCBIN_U32("graphics/interface/check_berry.gbapal.lz");
+const u32 gBerryCheck_Gfx[] = INCBIN_U32("graphics/interface/check_berry.4bpp.lz");
+const u32 gBerryCheck_Pal[] = INCBIN_U32("graphics/interface/check_berry.gbapal.lz");
-const u32 gUnknown_08D9BF98[] = INCBIN_U32("graphics/interface/berry_tag.bin.lz");
-const u32 gUnknown_08D9C13C[] = INCBIN_U32("graphics/interface/berry_tag_title.bin.lz");
+const u32 gBerryTag_Gfx[] = INCBIN_U32("graphics/interface/berry_tag.bin.lz");
+const u32 gBerryTag_Pal[] = INCBIN_U32("graphics/interface/berry_tag_title.bin.lz");
const u32 gBerryCheckCircle_Gfx[] = INCBIN_U32("graphics/interface/check_berry_circle.4bpp.lz");
diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h
index 86ebb620b..17e677967 100644
--- a/src/data/pokemon/base_stats.h
+++ b/src/data/pokemon/base_stats.h
@@ -28,8 +28,7 @@
.growthRate = GROWTH_MEDIUM_FAST, \
.eggGroup1 = EGG_GROUP_UNDISCOVERED,\
.eggGroup2 = EGG_GROUP_UNDISCOVERED,\
- .ability1 = ABILITY_NONE, \
- .ability2 = ABILITY_NONE, \
+ .abilities = {0, 0}, \
.safariZoneFleeRate = 0, \
.bodyColor = BODY_COLOR_BLACK, \
.noFlip = FALSE, \
@@ -65,8 +64,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -98,8 +96,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -131,8 +128,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -164,8 +160,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -197,8 +192,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -230,8 +224,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -263,8 +256,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -296,8 +288,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -329,8 +320,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -362,8 +352,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHIELD_DUST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -395,8 +384,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -428,8 +416,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_COMPOUND_EYES,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -461,8 +448,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHIELD_DUST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -494,8 +480,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -527,8 +512,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -560,8 +544,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -593,8 +576,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -626,8 +608,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -659,8 +640,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_GUTS,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -692,8 +672,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_GUTS,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -725,8 +704,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -758,8 +736,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -791,8 +768,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_SHED_SKIN,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -824,8 +800,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_SHED_SKIN,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -857,8 +832,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 6,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -890,8 +864,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -923,8 +896,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -956,8 +928,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -989,8 +960,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1022,8 +992,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1055,8 +1024,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1088,8 +1056,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1121,8 +1088,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1154,8 +1120,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1187,8 +1152,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -1220,8 +1184,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -1253,8 +1216,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_FLASH_FIRE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1286,8 +1248,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_FLASH_FIRE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -1319,8 +1280,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -1352,8 +1312,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -1385,8 +1344,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1418,8 +1376,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1451,8 +1408,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1484,8 +1440,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 6,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1517,8 +1472,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -1550,8 +1504,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_EFFECT_SPORE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -1583,8 +1536,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_EFFECT_SPORE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -1616,8 +1568,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_COMPOUND_EYES,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1649,8 +1600,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHIELD_DUST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -1682,8 +1632,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_ARENA_TRAP,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1715,8 +1664,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_ARENA_TRAP,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1748,8 +1696,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PICKUP,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PICKUP, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -1781,8 +1728,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_LIMBER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LIMBER, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -1814,8 +1760,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_DAMP,
- .ability2 = ABILITY_CLOUD_NINE,
+ .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE},
.safariZoneFleeRate = 6,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -1847,8 +1792,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_DAMP,
- .ability2 = ABILITY_CLOUD_NINE,
+ .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE},
.safariZoneFleeRate = 8,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -1880,8 +1824,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_VITAL_SPIRIT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1913,8 +1856,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_VITAL_SPIRIT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1946,8 +1888,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -1979,8 +1920,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2012,8 +1952,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_DAMP,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = TRUE,
@@ -2045,8 +1984,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_DAMP,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = TRUE,
@@ -2078,8 +2016,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_DAMP,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = TRUE,
@@ -2111,8 +2048,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_INNER_FOCUS,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2144,8 +2080,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_INNER_FOCUS,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2177,8 +2112,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_INNER_FOCUS,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2210,8 +2144,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -2243,8 +2176,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -2276,8 +2208,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -2309,8 +2240,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -2342,8 +2272,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -2375,8 +2304,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -2408,8 +2336,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_LIQUID_OOZE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -2441,8 +2368,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_LIQUID_OOZE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -2474,8 +2400,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2507,8 +2432,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2540,8 +2464,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2573,8 +2496,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -2606,8 +2528,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -2639,8 +2560,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_OWN_TEMPO,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -2672,8 +2592,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_OWN_TEMPO,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -2705,8 +2624,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_MAGNET_PULL,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -2738,8 +2656,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_MAGNET_PULL,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -2771,8 +2688,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_INNER_FOCUS,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2804,8 +2720,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 8,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2837,8 +2752,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 10,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -2870,8 +2784,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -2903,8 +2816,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -2936,8 +2848,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_STENCH,
- .ability2 = ABILITY_STICKY_HOLD,
+ .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -2969,8 +2880,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_STENCH,
- .ability2 = ABILITY_STICKY_HOLD,
+ .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3002,8 +2912,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SHELL_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3035,8 +2944,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SHELL_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3068,8 +2976,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3101,8 +3008,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3134,8 +3040,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3167,8 +3072,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -3200,8 +3104,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -3233,8 +3136,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -3266,8 +3168,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -3299,8 +3200,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = TRUE,
@@ -3332,8 +3232,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_STATIC,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -3365,8 +3264,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_STATIC,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -3398,8 +3296,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -3431,8 +3328,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -3464,8 +3360,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_LIGHTNING_ROD,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -3497,8 +3392,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_LIGHTNING_ROD,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -3530,8 +3424,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_LIMBER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LIMBER, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -3563,8 +3456,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -3596,8 +3488,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_OWN_TEMPO,
- .ability2 = ABILITY_OBLIVIOUS,
+ .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -3629,8 +3520,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3662,8 +3552,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -3695,8 +3584,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_LIGHTNING_ROD,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -3728,8 +3616,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_LIGHTNING_ROD,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -3761,8 +3648,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_SERENE_GRACE,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -3794,8 +3680,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -3827,8 +3712,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_EARLY_BIRD,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_EARLY_BIRD, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -3860,8 +3744,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -3893,8 +3776,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -3926,8 +3808,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_WATER_VEIL,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -3959,8 +3840,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_WATER_VEIL,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL},
.safariZoneFleeRate = 6,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -3992,8 +3872,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_ILLUMINATE,
- .ability2 = ABILITY_NATURAL_CURE,
+ .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4025,8 +3904,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_ILLUMINATE,
- .ability2 = ABILITY_NATURAL_CURE,
+ .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -4058,8 +3936,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -4091,8 +3968,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -4124,8 +4000,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -4157,8 +4032,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = TRUE,
@@ -4190,8 +4064,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_FLAME_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -4223,8 +4096,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_NONE},
.safariZoneFleeRate = 8,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4256,8 +4128,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4289,8 +4160,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -4322,8 +4192,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4355,8 +4224,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4388,8 +4256,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_DITTO,
.eggGroup2 = EGG_GROUP_DITTO,
- .ability1 = ABILITY_LIMBER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LIMBER, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -4421,8 +4288,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4454,8 +4320,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4487,8 +4352,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_VOLT_ABSORB,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -4520,8 +4384,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_FLASH_FIRE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -4553,8 +4416,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_TRACE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TRACE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -4586,8 +4448,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4619,8 +4480,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4652,8 +4512,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_BATTLE_ARMOR,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4685,8 +4544,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_BATTLE_ARMOR,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4718,8 +4576,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_PRESSURE,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_PRESSURE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -4751,8 +4608,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_IMMUNITY,
- .ability2 = ABILITY_THICK_FAT,
+ .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -4784,8 +4640,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4817,8 +4672,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -4850,8 +4704,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -4883,8 +4736,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4916,8 +4768,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -4949,8 +4800,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -4982,8 +4832,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -5015,8 +4864,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -5048,8 +4896,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5081,8 +4928,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5114,8 +4960,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5147,8 +4992,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -5180,8 +5024,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -5213,8 +5056,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -5246,8 +5088,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -5279,8 +5120,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = TRUE,
@@ -5312,8 +5152,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -5345,8 +5184,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_KEEN_EYE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -5378,8 +5216,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_KEEN_EYE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -5411,8 +5248,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_KEEN_EYE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -5444,8 +5280,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_KEEN_EYE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -5477,8 +5312,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -5510,8 +5344,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -5543,8 +5376,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_INSOMNIA,
+ .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5576,8 +5408,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_INSOMNIA,
+ .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -5609,8 +5440,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -5642,8 +5472,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_VOLT_ABSORB,
- .ability2 = ABILITY_ILLUMINATE,
+ .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -5675,8 +5504,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_VOLT_ABSORB,
- .ability2 = ABILITY_ILLUMINATE,
+ .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -5708,8 +5536,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -5741,8 +5568,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -5774,8 +5600,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = TRUE,
@@ -5807,8 +5632,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_HUSTLE,
- .ability2 = ABILITY_SERENE_GRACE,
+ .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -5840,8 +5664,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_HUSTLE,
- .ability2 = ABILITY_SERENE_GRACE,
+ .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -5873,8 +5696,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 6,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5906,8 +5728,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 8,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -5939,8 +5760,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -5972,8 +5792,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -6005,8 +5824,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -6038,8 +5856,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -6071,8 +5888,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_HUGE_POWER,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6104,8 +5920,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_HUGE_POWER,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6137,8 +5952,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -6170,8 +5984,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_WATER_ABSORB,
- .ability2 = ABILITY_DAMP,
+ .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = TRUE,
@@ -6203,8 +6016,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -6236,8 +6048,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -6269,8 +6080,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6302,8 +6112,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_PICKUP,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -6335,8 +6144,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -6368,8 +6176,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -6401,8 +6208,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SPEED_BOOST,
- .ability2 = ABILITY_COMPOUND_EYES,
+ .abilities = {ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -6434,8 +6240,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_DAMP,
- .ability2 = ABILITY_WATER_ABSORB,
+ .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6467,8 +6272,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_DAMP,
- .ability2 = ABILITY_WATER_ABSORB,
+ .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6500,8 +6304,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -6533,8 +6336,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -6566,8 +6368,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -6599,8 +6400,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_OWN_TEMPO,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -6632,8 +6432,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -6665,8 +6464,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = TRUE,
@@ -6698,8 +6496,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_SHADOW_TAG,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -6731,8 +6528,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 4,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -6764,8 +6560,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STURDY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -6797,8 +6592,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STURDY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -6830,8 +6624,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SERENE_GRACE,
- .ability2 = ABILITY_RUN_AWAY,
+ .abilities = {ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -6863,8 +6656,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_SAND_VEIL,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -6896,8 +6688,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -6929,8 +6720,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_RUN_AWAY,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_RUN_AWAY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -6962,8 +6752,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_INTIMIDATE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_INTIMIDATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -6995,8 +6784,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_POISON_POINT,
- .ability2 = ABILITY_SWIFT_SWIM,
+ .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -7028,8 +6816,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7061,8 +6848,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STURDY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -7094,8 +6880,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_GUTS,
+ .abilities = {ABILITY_SWARM, ABILITY_GUTS},
.safariZoneFleeRate = 8,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -7127,8 +6912,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_KEEN_EYE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = TRUE,
@@ -7160,8 +6944,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PICKUP,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PICKUP, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = TRUE,
@@ -7193,8 +6976,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -7226,8 +7008,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_MAGMA_ARMOR,
- .ability2 = ABILITY_FLAME_BODY,
+ .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7259,8 +7040,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_MAGMA_ARMOR,
- .ability2 = ABILITY_FLAME_BODY,
+ .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7292,8 +7072,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -7325,8 +7104,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -7358,8 +7136,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_HUSTLE,
- .ability2 = ABILITY_NATURAL_CURE,
+ .abilities = {ABILITY_HUSTLE, ABILITY_NATURAL_CURE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -7391,8 +7168,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_HUSTLE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_HUSTLE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -7424,8 +7200,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_SUCTION_CUPS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7457,8 +7232,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_VITAL_SPIRIT,
- .ability2 = ABILITY_HUSTLE,
+ .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7490,8 +7264,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_WATER_ABSORB,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -7523,8 +7296,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_STURDY,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_STURDY},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -7556,8 +7328,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_EARLY_BIRD,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -7589,8 +7360,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_EARLY_BIRD,
- .ability2 = ABILITY_FLASH_FIRE,
+ .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -7622,8 +7392,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -7655,8 +7424,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PICKUP,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PICKUP, ABILITY_NONE},
.safariZoneFleeRate = 10,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -7688,8 +7456,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STURDY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -7721,8 +7488,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_TRACE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TRACE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7754,8 +7520,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -7787,8 +7552,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_OWN_TEMPO,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OWN_TEMPO, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -7820,8 +7584,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -7853,8 +7616,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -7886,8 +7648,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -7919,8 +7680,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_STATIC, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = TRUE,
@@ -7952,8 +7712,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_FLAME_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -7985,8 +7744,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -8018,8 +7776,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_SERENE_GRACE,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -8051,8 +7808,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -8084,8 +7840,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -8117,8 +7872,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -8150,8 +7904,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8183,8 +7936,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -8216,8 +7968,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_SAND_STREAM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8249,8 +8000,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -8282,8 +8032,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -8315,8 +8064,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8398,8 +8146,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8431,8 +8178,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8464,8 +8210,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_OVERGROW,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OVERGROW, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8497,8 +8242,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -8530,8 +8274,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -8563,8 +8306,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_BLAZE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BLAZE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -8596,8 +8338,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -8629,8 +8370,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -8662,8 +8402,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_TORRENT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TORRENT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -8695,8 +8434,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_RUN_AWAY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_RUN_AWAY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -8728,8 +8466,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -8761,8 +8498,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PICKUP,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PICKUP, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -8794,8 +8530,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PICKUP,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PICKUP, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -8827,8 +8562,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHIELD_DUST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -8860,8 +8594,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -8893,8 +8626,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -8926,8 +8658,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -8959,8 +8690,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SHIELD_DUST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -8992,8 +8722,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_RAIN_DISH,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -9025,8 +8754,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_RAIN_DISH,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -9058,8 +8786,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_RAIN_DISH,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -9091,8 +8818,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9124,8 +8850,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9157,8 +8882,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_EARLY_BIRD,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9190,8 +8914,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_COMPOUND_EYES,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -9223,8 +8946,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SPEED_BOOST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SPEED_BOOST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -9256,8 +8978,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_WONDER_GUARD,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_WONDER_GUARD, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9289,8 +9010,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9322,8 +9042,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_GUTS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_GUTS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9355,8 +9074,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_EFFECT_SPORE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9388,8 +9106,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_EFFECT_SPORE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -9421,8 +9138,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_OWN_TEMPO,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OWN_TEMPO, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = TRUE,
@@ -9454,8 +9170,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -9487,8 +9202,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FLYING,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -9520,8 +9234,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9553,8 +9266,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9586,8 +9298,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_WATER_VEIL,
- .ability2 = ABILITY_OBLIVIOUS,
+ .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9619,8 +9330,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_WATER_VEIL,
- .ability2 = ABILITY_OBLIVIOUS,
+ .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9652,8 +9362,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -9685,8 +9394,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_CUTE_CHARM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CUTE_CHARM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -9718,8 +9426,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_COLOR_CHANGE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_COLOR_CHANGE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -9751,8 +9458,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9784,8 +9490,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -9817,8 +9522,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_MAGNET_PULL,
+ .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -9850,8 +9554,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_WHITE_SMOKE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_WHITE_SMOKE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -9883,8 +9586,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_KEEN_EYE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -9916,8 +9618,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -9949,8 +9650,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -9982,8 +9682,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -10015,8 +9714,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -10048,8 +9746,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_SHELL_ARMOR,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -10081,8 +9778,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -10114,8 +9810,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_MARVEL_SCALE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_MARVEL_SCALE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -10147,8 +9842,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_ROUGH_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -10180,8 +9874,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_2,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_ROUGH_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -10213,8 +9906,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_ARENA_TRAP,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -10246,8 +9938,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_LEVITATE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -10279,8 +9970,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_BUG,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_LEVITATE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -10312,8 +10002,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_GUTS,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10345,8 +10034,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_GUTS,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -10378,8 +10066,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_LIGHTNING_ROD,
+ .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -10411,8 +10098,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_STATIC,
- .ability2 = ABILITY_LIGHTNING_ROD,
+ .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10444,8 +10130,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10477,8 +10162,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_MAGMA_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -10510,8 +10194,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -10543,8 +10226,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -10576,8 +10258,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -10609,8 +10290,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -10642,8 +10322,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_GRASS,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_SAND_VEIL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -10675,8 +10354,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -10708,8 +10386,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_INNER_FOCUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -10741,8 +10418,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10774,8 +10450,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -10807,8 +10482,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_HUGE_POWER,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -10840,8 +10514,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_OWN_TEMPO,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -10873,8 +10546,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_THICK_FAT,
- .ability2 = ABILITY_OWN_TEMPO,
+ .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -10906,8 +10578,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_PLUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PLUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10939,8 +10610,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_MINUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_MINUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -10972,8 +10642,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FAIRY,
- .ability1 = ABILITY_HYPER_CUTTER,
- .ability2 = ABILITY_INTIMIDATE,
+ .abilities = {ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -11005,8 +10674,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_PURE_POWER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PURE_POWER, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11038,8 +10706,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_HUMAN_LIKE,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_PURE_POWER,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PURE_POWER, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -11071,8 +10738,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11104,8 +10770,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11137,8 +10802,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_SHADOW_TAG,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11170,8 +10834,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -11203,8 +10866,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -11236,8 +10898,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_NATURAL_CURE,
- .ability2 = ABILITY_POISON_POINT,
+ .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = TRUE,
@@ -11269,8 +10930,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_TRUANT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TRUANT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -11302,8 +10962,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_VITAL_SPIRIT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -11335,8 +10994,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_TRUANT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_TRUANT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -11368,8 +11026,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LIQUID_OOZE,
- .ability2 = ABILITY_STICKY_HOLD,
+ .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -11401,8 +11058,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LIQUID_OOZE,
- .ability2 = ABILITY_STICKY_HOLD,
+ .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -11434,8 +11090,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_GRASS,
- .ability1 = ABILITY_CHLOROPHYLL,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -11467,8 +11122,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -11500,8 +11154,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11533,8 +11186,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_SOUNDPROOF,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11566,8 +11218,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_SHELL_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11599,8 +11250,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -11632,8 +11282,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_1,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PINK,
.noFlip = FALSE,
@@ -11665,8 +11314,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_SLOW,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = TRUE,
@@ -11698,8 +11346,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -11731,8 +11378,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_INSOMNIA,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = FALSE,
@@ -11764,8 +11410,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_SHED_SKIN,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLACK,
.noFlip = TRUE,
@@ -11797,8 +11442,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_FIELD,
.eggGroup2 = EGG_GROUP_FIELD,
- .ability1 = ABILITY_IMMUNITY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_IMMUNITY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = TRUE,
@@ -11830,8 +11474,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_WATER_1,
.eggGroup2 = EGG_GROUP_WATER_2,
- .ability1 = ABILITY_SWIFT_SWIM,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -11863,8 +11506,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -11896,8 +11538,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -11929,8 +11570,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MONSTER,
.eggGroup2 = EGG_GROUP_MONSTER,
- .ability1 = ABILITY_STURDY,
- .ability2 = ABILITY_ROCK_HEAD,
+ .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -11962,8 +11602,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_MEDIUM_FAST,
.eggGroup1 = EGG_GROUP_FAIRY,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_FORECAST,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_FORECAST, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -11995,8 +11634,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_ILLUMINATE,
- .ability2 = ABILITY_SWARM,
+ .abilities = {ABILITY_ILLUMINATE, ABILITY_SWARM},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -12028,8 +11666,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FLUCTUATING,
.eggGroup1 = EGG_GROUP_BUG,
.eggGroup2 = EGG_GROUP_HUMAN_LIKE,
- .ability1 = ABILITY_OBLIVIOUS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_OBLIVIOUS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -12061,8 +11698,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SUCTION_CUPS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_PURPLE,
.noFlip = FALSE,
@@ -12094,8 +11730,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_SUCTION_CUPS,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -12127,8 +11762,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_BATTLE_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -12160,8 +11794,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_ERRATIC,
.eggGroup1 = EGG_GROUP_WATER_3,
.eggGroup2 = EGG_GROUP_WATER_3,
- .ability1 = ABILITY_BATTLE_ARMOR,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -12193,8 +11826,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_TRACE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -12226,8 +11858,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_TRACE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -12259,8 +11890,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_SYNCHRONIZE,
- .ability2 = ABILITY_TRACE,
+ .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -12292,8 +11922,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_DRAGON,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12325,8 +11954,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_DRAGON,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_ROCK_HEAD,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_WHITE,
.noFlip = FALSE,
@@ -12358,8 +11986,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_DRAGON,
.eggGroup2 = EGG_GROUP_DRAGON,
- .ability1 = ABILITY_INTIMIDATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12391,8 +12018,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12424,8 +12050,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12457,8 +12082,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_MINERAL,
.eggGroup2 = EGG_GROUP_MINERAL,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12490,8 +12114,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BROWN,
.noFlip = FALSE,
@@ -12523,8 +12146,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12556,8 +12178,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_CLEAR_BODY,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE,
@@ -12589,8 +12210,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_DRIZZLE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_DRIZZLE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12622,8 +12242,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_DROUGHT,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_DROUGHT, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -12655,8 +12274,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_AIR_LOCK,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_AIR_LOCK, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE,
@@ -12688,8 +12306,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = FALSE,
@@ -12721,8 +12338,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
@@ -12754,8 +12370,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_SERENE_GRACE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_YELLOW,
.noFlip = FALSE,
@@ -12787,8 +12402,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_UNDISCOVERED,
.eggGroup2 = EGG_GROUP_UNDISCOVERED,
- .ability1 = ABILITY_PRESSURE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_PRESSURE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_RED,
.noFlip = TRUE,
@@ -12820,8 +12434,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_FAST,
.eggGroup1 = EGG_GROUP_AMORPHOUS,
.eggGroup2 = EGG_GROUP_AMORPHOUS,
- .ability1 = ABILITY_LEVITATE,
- .ability2 = ABILITY_NONE,
+ .abilities = {ABILITY_LEVITATE, ABILITY_NONE},
.safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_BLUE,
.noFlip = FALSE,
diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h
index 04c7ab3c4..0f2b53a18 100644
--- a/src/data/pokemon/trainer_class_lookups.h
+++ b/src/data/pokemon/trainer_class_lookups.h
@@ -166,7 +166,6 @@ const u8 gFacilityClassToTrainerClass[] =
[FACILITY_CLASS_DOME_ACE_TUCKER] = TRAINER_CLASS_DOME_ACE,
[FACILITY_CLASS_RED] = TRAINER_CLASS_PKMN_TRAINER_3,
[FACILITY_CLASS_LEAF] = TRAINER_CLASS_PKMN_TRAINER_3,
- [FACILITY_CLASS_RS_BRENDAN] = TRAINER_CLASS_PKMN_TRAINER_4,
- [FACILITY_CLASS_RS_MAY] = TRAINER_CLASS_PKMN_TRAINER_4,
+ [FACILITY_CLASS_RS_BRENDAN] = TRAINER_CLASS_RS_PROTAG,
+ [FACILITY_CLASS_RS_MAY] = TRAINER_CLASS_RS_PROTAG,
};
-
diff --git a/src/data/region_map/city_map_entries.h b/src/data/region_map/city_map_entries.h
new file mode 100644
index 000000000..7b8361a7c
--- /dev/null
+++ b/src/data/region_map/city_map_entries.h
@@ -0,0 +1,113 @@
+const struct CityMapEntry gPokenavCityMaps[] =
+{
+ {
+ .mapSecId = 0,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Littleroot_0,
+ },
+ {
+ .mapSecId = 1,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Oldale_0,
+ },
+ {
+ .mapSecId = 2,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Dewford_0,
+ },
+ {
+ .mapSecId = 3,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lavarige_0,
+ },
+ {
+ .mapSecId = 4,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fallarbor_0,
+ },
+ {
+ .mapSecId = 5,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Verdanturf_0,
+ },
+ {
+ .mapSecId = 6,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Pacifidlog_0,
+ },
+ {
+ .mapSecId = 7,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Petalburg_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Slateport_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Slateport_1,
+ },
+ {
+ .mapSecId = 9,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mauville_0,
+ },
+ {
+ .mapSecId = 9,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mauville_1,
+ },
+ {
+ .mapSecId = 10,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Rustboro_0,
+ },
+ {
+ .mapSecId = 10,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Rustboro_1,
+ },
+ {
+ .mapSecId = 11,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fortree_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lilycove_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Lilycove_1,
+ },
+ {
+ .mapSecId = 13,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mossdeep_0,
+ },
+ {
+ .mapSecId = 13,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mossdeep_1,
+ },
+ {
+ .mapSecId = 14,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Sootopolis_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 0,
+ .tilemap = gPokenavCityMap_EverGrande_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 1,
+ .tilemap = gPokenavCityMap_EverGrande_1,
+ },
+};
diff --git a/src/data/region_map/city_map_tilemaps.h b/src/data/region_map/city_map_tilemaps.h
new file mode 100644
index 000000000..8a8a931f9
--- /dev/null
+++ b/src/data/region_map/city_map_tilemaps.h
@@ -0,0 +1,22 @@
+const u32 gPokenavCityMap_Lavarige_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
+const u32 gPokenavCityMap_Fallarbor_0[] = INCBIN_U32("graphics/pokenav/city_maps/fallarbor_0.bin.lz");
+const u32 gPokenavCityMap_Fortree_0[] = INCBIN_U32("graphics/pokenav/city_maps/fortree_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_0[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_1[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_1.bin.lz");
+const u32 gPokenavCityMap_Rustboro_0[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_0.bin.lz");
+const u32 gPokenavCityMap_Rustboro_1[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_1.bin.lz");
+const u32 gPokenavCityMap_Pacifidlog_0[] = INCBIN_U32("graphics/pokenav/city_maps/pacifidlog_0.bin.lz");
+const u32 gPokenavCityMap_Mauville_1[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_1.bin.lz");
+const u32 gPokenavCityMap_Mauville_0[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_0.bin.lz");
+const u32 gPokenavCityMap_Oldale_0[] = INCBIN_U32("graphics/pokenav/city_maps/oldale_0.bin.lz");
+const u32 gPokenavCityMap_Lilycove_1[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_1.bin.lz");
+const u32 gPokenavCityMap_Lilycove_0[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_0.bin.lz");
+const u32 gPokenavCityMap_Littleroot_0[] = INCBIN_U32("graphics/pokenav/city_maps/littleroot_0.bin.lz");
+const u32 gPokenavCityMap_Dewford_0[] = INCBIN_U32("graphics/pokenav/city_maps/dewford_0.bin.lz");
+const u32 gPokenavCityMap_Sootopolis_0[] = INCBIN_U32("graphics/pokenav/city_maps/sootopolis_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_0[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_1[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_1.bin.lz");
+const u32 gPokenavCityMap_Verdanturf_0[] = INCBIN_U32("graphics/pokenav/city_maps/verdanturf_0.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_1[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_1.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_0[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_0.bin.lz");
+const u32 gPokenavCityMap_Petalburg_0[] = INCBIN_U32("graphics/pokenav/city_maps/petalburg_0.bin.lz");
diff --git a/src/data/text/gift_ribbon_descriptions.h b/src/data/text/gift_ribbon_descriptions.h
new file mode 100644
index 000000000..ea108be18
--- /dev/null
+++ b/src/data/text/gift_ribbon_descriptions.h
@@ -0,0 +1,115 @@
+const u8 gGiftRibbonDescriptionPart1_2003RegionalTourney[] = _("2003 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart2_Champion[] = _("CHAMPION RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2003NationalTourney[] = _("2003 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2003GlobalCup[] = _("2003 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart2_RunnerUp[] = _("Runner-up RIBBON");
+const u8 gGiftRibbonDescriptionPart2_Semifinalist[] = _("Semifinalist RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2004RegionalTourney[] = _("2004 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004NationalTourney[] = _("2004 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004GlobalCup[] = _("2004 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_2005RegionalTourney[] = _("2005 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005NationalTourney[] = _("2005 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005GlobalCup[] = _("2005 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonBattleCup[] = _("POKéMON BATTLE CUP");
+const u8 gGiftRibbonDescriptionPart2_Participation[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonLeague[] = _("POKéMON LEAGUE");
+const u8 gGiftRibbonDescriptionPart1_AdvanceCup[] = _("ADVANCE CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonTournament[] = _("POKéMON Tournament");
+const u8 gGiftRibbonDescriptionPart2_Participation2[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonEvent[] = _("POKéMON Event");
+const u8 gGiftRibbonDescriptionPart1_PokemonFestival[] = _("POKéMON Festival");
+const u8 gGiftRibbonDescriptionPart1_DifficultyClearing[] = _("Difficulty-clearing");
+const u8 gGiftRibbonDescriptionPart2_Commemorative[] = _("Commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart1_ClearingAllChallenges[] = _("RIBBON awarded for");
+const u8 gGiftRibbonDescriptionPart2_ClearingAllChallenges[] = _("clearing all challenges.");
+const u8 gGiftRibbonDescriptionPart1_100StraightWin[] = _("100-straight Win");
+const u8 gGiftRibbonDescriptionPart1_DarknessTower[] = _("DARKNESS TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_RedTower[] = _("RED TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_BlackironTower[] = _("BLACKIRON TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_FinalTower[] = _("FINAL TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_LegendMaking[] = _("Legend-making");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterTokyo[] = _("POKéMON CENTER TOKYO");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterOsaka[] = _("POKéMON CENTER OSAKA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNagoya[] = _("POKéMON CENTER NAGOYA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNY[] = _("POKéMON CENTER NY");
+const u8 gGiftRibbonDescriptionPart1_SummerHolidays[] = _("Summer Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart2_EmptyString[] = _("");
+const u8 gGiftRibbonDescriptionPart1_WinterHolidays[] = _("Winter Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpringHolidays[] = _("Spring Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_Evergreen[] = _("Evergreen RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpecialHoliday[] = _("Special Holiday RIBBON");
+const u8 gGiftRibbonDescriptionPart1_HardWorker[] = _("Hard Worker RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LotsOfFriends[] = _("Lots of Friends RIBBON");
+const u8 gGiftRibbonDescriptionPart1_FullOfEnergy[] = _("Full of Energy RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LovedPokemon[] = _("A commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart2_LovedPokemon[] = _("for a loved POKéMON.");
+const u8 gGiftRibbonDescriptionPart1_LoveForPokemon[] = _("RIBBON that shows");
+const u8 gGiftRibbonDescriptionPart2_LoveForPokemon[] = _("love for POKéMON.");
+
+const u8 *const gGiftRibbonDescriptionPointers[][2] =
+{
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges},
+ {gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon},
+ {gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon}
+};
diff --git a/src/data/text/match_call_messages.h b/src/data/text/match_call_messages.h
new file mode 100644
index 000000000..c3015b5a7
--- /dev/null
+++ b/src/data/text/match_call_messages.h
@@ -0,0 +1,476 @@
+#define MCFLAVOR(name) {gMatchCallFlavorText_##name##_Strategy, \
+ gMatchCallFlavorText_##name##_Pokemon, \
+ gMatchCallFlavorText_##name##_Intro1, \
+ gMatchCallFlavorText_##name##_Intro2}
+
+const u8 gMatchCallFlavorText_AromaLady_Rose_Strategy[] = _("Becalm fighting emotions.");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Pokemon[] = _("Fragrant GRASS POKéMON.");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Intro1[] = _("Soothing aromas make the");
+const u8 gMatchCallFlavorText_AromaLady_Rose_Intro2[] = _("body and mind healthy.");
+
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Strategy[] = _("I'm not very good at this.");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Pokemon[] = _("Ruin-exploration partners.");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro1[] = _("I am searching for undersea");
+const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro2[] = _("ruins and relics.");
+
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Strategy[] = _("Overwhelm with power!");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Pokemon[] = _("Craggy ROCK POKéMON.");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro1[] = _("In search of ancient lore,");
+const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro2[] = _("I travel the world.");
+
+const u8 gMatchCallFlavorText_Tuber_Lola_Strategy[] = _("I'm going to try hard!");
+const u8 gMatchCallFlavorText_Tuber_Lola_Pokemon[] = _("Good swimmer POKéMON.");
+const u8 gMatchCallFlavorText_Tuber_Lola_Intro1[] = _("I wish I could swim without");
+const u8 gMatchCallFlavorText_Tuber_Lola_Intro2[] = _("using an inner tube.");
+
+const u8 gMatchCallFlavorText_Tuber_Ricky_Strategy[] = _("I don't know. I'll try hard.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Pokemon[] = _("WATER POKéMON are buddies.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Intro1[] = _("It's not like I can't swim.");
+const u8 gMatchCallFlavorText_Tuber_Ricky_Intro2[] = _("I just like my inner tube.");
+
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Strategy[] = _("We split our duties.");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Pokemon[] = _("We like friendly POKéMON.");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro1[] = _("We enjoy POKéMON together");
+const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro2[] = _("as sister and brother.");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Strategy[] = _("I finish with power moves!");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Pokemon[] = _("A mix of different types.");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro1[] = _("I aim to become the ultimate");
+const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro2[] = _("TRAINER!");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Strategy[] = _("Exploit the foe's weakness.");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Pokemon[] = _("Balance is crucial.");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro1[] = _("My goal is to become the");
+const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro2[] = _("POKéMON CHAMPION.");
+
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Strategy[] = _("Upset the opponent.");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Pokemon[] = _("Type doesn't matter.");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro1[] = _("I'm a top student at the");
+const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro2[] = _("TRAINER'S SCHOOL.");
+
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Strategy[] = _("Slow, steady suffering.");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Pokemon[] = _("Scary to meet at night.");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro1[] = _("I see things that others");
+const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro2[] = _("can't see...");
+
+const u8 gMatchCallFlavorText_Lady_Cindy_Strategy[] = _("Anything to win.");
+const u8 gMatchCallFlavorText_Lady_Cindy_Pokemon[] = _("Gorgeous type!");
+const u8 gMatchCallFlavorText_Lady_Cindy_Intro1[] = _("I have a pool specially for");
+const u8 gMatchCallFlavorText_Lady_Cindy_Intro2[] = _("my POKéMON at home.");
+
+const u8 gMatchCallFlavorText_Beauty_Thalia_Strategy[] = _("You'll fall under my spell!");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Pokemon[] = _("Mature WATER type.");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Intro1[] = _("I dream of cruising around");
+const u8 gMatchCallFlavorText_Beauty_Thalia_Intro2[] = _("the world on a luxury liner.");
+
+const u8 gMatchCallFlavorText_Beauty_Jessica_Strategy[] = _("I'll lead you astray.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Pokemon[] = _("Cute, of course.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Intro1[] = _("I love the SAFARI ZONE.");
+const u8 gMatchCallFlavorText_Beauty_Jessica_Intro2[] = _("I seem to end up there.");
+
+const u8 gMatchCallFlavorText_RichBoy_Winston_Strategy[] = _("Strategy? Who needs it?");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Pokemon[] = _("I spent big money on it!");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Intro1[] = _("I, being rich, sleep in a");
+const u8 gMatchCallFlavorText_RichBoy_Winston_Intro2[] = _("custom POKéMON bed.");
+
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Strategy[] = _("Wrestle down with power.");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Pokemon[] = _("Took all night to catch.");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro1[] = _("Big, burly, and buff");
+const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro2[] = _("POKéMON are the best...");
+
+const u8 gMatchCallFlavorText_Swimmer_Tony_Strategy[] = _("Ram at full speed!");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Pokemon[] = _("Funky WATER type!");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Intro1[] = _("If I can't be out swimming,");
+const u8 gMatchCallFlavorText_Swimmer_Tony_Intro2[] = _("I'll be pumping weights.");
+
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Strategy[] = _("Grand slam pummeling!");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Pokemon[] = _("FIGHTING type.");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro1[] = _("Not to brag, but I can bust");
+const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro2[] = _("ten roof tiles!");
+
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Strategy[] = _("Witness karate power!");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Pokemon[] = _("My partners in training!");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro1[] = _("Let us discuss matters of");
+const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro2[] = _("the world with bare fists!");
+
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Strategy[] = _("Rock to stunning sounds!");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Pokemon[] = _("Electric-and-sound combo!");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro1[] = _("My compositions will shock");
+const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro2[] = _("you and stun you!");
+
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Strategy[] = _("I'll electrify you!");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Pokemon[] = _("They're ELECTRIC!");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro1[] = _("I want to make people cry");
+const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro2[] = _("with songs from my heart.");
+
+const u8 gMatchCallFlavorText_Kindler_Bernie_Strategy[] = _("Burn it all down!");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Pokemon[] = _("Burn-inducing POKéMON.");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Intro1[] = _("When you light a campfire,");
+const u8 gMatchCallFlavorText_Kindler_Bernie_Intro2[] = _("be sure there's some water.");
+
+const u8 gMatchCallFlavorText_Camper_Ethan_Strategy[] = _("Hang in and be tenacious!");
+const u8 gMatchCallFlavorText_Camper_Ethan_Pokemon[] = _("I'll raise any POKéMON.");
+const u8 gMatchCallFlavorText_Camper_Ethan_Intro1[] = _("POKéMON raised in the wild");
+const u8 gMatchCallFlavorText_Camper_Ethan_Intro2[] = _("grow strong!");
+
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Strategy[] = _("Our love lets us prevail.");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Pokemon[] = _("We've had them for years.");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro1[] = _("Married 50 years, we've");
+const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro2[] = _("devotedly raised POKéMON.");
+
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Strategy[] = _("Attack in waves!");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Pokemon[] = _("BUG POKéMON are cool.");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro1[] = _("I go into the forest every");
+const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro2[] = _("day to catch BUG POKéMON.");
+
+const u8 gMatchCallFlavorText_Psychic_Cameron_Strategy[] = _("Daze and confuse!");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Pokemon[] = _("Ones with weird powers.");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Intro1[] = _("I can see through exactly");
+const u8 gMatchCallFlavorText_Psychic_Cameron_Intro2[] = _("what you're thinking!");
+
+const u8 gMatchCallFlavorText_Psychic_Jacki_Strategy[] = _("Battle at full power.");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Pokemon[] = _("POKéMON of many mysteries.");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Intro1[] = _("When we spoke, I was really");
+const u8 gMatchCallFlavorText_Psychic_Jacki_Intro2[] = _("using telepathy.");
+
+const u8 gMatchCallFlavorText_Gentleman_Walter_Strategy[] = _("Calm and collected.");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Pokemon[] = _("POKéMON of distinction.");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Intro1[] = _("We enjoy a spot of tea");
+const u8 gMatchCallFlavorText_Gentleman_Walter_Intro2[] = _("every day. It's imported.");
+
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Strategy[] = _("I use my head to battle.");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Pokemon[] = _("I love any kind of POKéMON!");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro1[] = _("My daddy gives me spending");
+const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro2[] = _("money if I ace a test.");
+
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Strategy[] = _("My knowledge rules!");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Pokemon[] = _("Any smart POKéMON!");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro1[] = _("I want to be a POKéMON");
+const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro2[] = _("researcher in the future.");
+
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Strategy[] = _("We talk it over first.");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Pokemon[] = _("POKéMON that we both like.");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro1[] = _("We're senior and junior");
+const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro2[] = _("students into POKéMON!");
+
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Strategy[] = _("Go for it, my dears!");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Pokemon[] = _("I have no likes or dislikes.");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro1[] = _("While out shopping for");
+const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro2[] = _("supper, I battle too.");
+
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Strategy[] = _("I battle with love!");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Pokemon[] = _("A POKéMON raised with love!");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro1[] = _("It's important to build");
+const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro2[] = _("trust with your POKéMON.");
+
+const u8 gMatchCallFlavorText_Expert_Timothy_Strategy[] = _("I see through your moves!");
+const u8 gMatchCallFlavorText_Expert_Timothy_Pokemon[] = _("The essence of FIGHTING.");
+const u8 gMatchCallFlavorText_Expert_Timothy_Intro1[] = _("I'm not ready to give way");
+const u8 gMatchCallFlavorText_Expert_Timothy_Intro2[] = _("to the young yet!");
+
+const u8 gMatchCallFlavorText_Expert_Shelby_Strategy[] = _("Attack while defending.");
+const u8 gMatchCallFlavorText_Expert_Shelby_Pokemon[] = _("The FIGHTING type.");
+const u8 gMatchCallFlavorText_Expert_Shelby_Intro1[] = _("Being old, I have my own");
+const u8 gMatchCallFlavorText_Expert_Shelby_Intro2[] = _("style of battling.");
+
+const u8 gMatchCallFlavorText_Youngster_Calvin_Strategy[] = _("I do what I can.");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Pokemon[] = _("I use different types.");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Intro1[] = _("I'm going to keep working");
+const u8 gMatchCallFlavorText_Youngster_Calvin_Intro2[] = _("until I beat a GYM LEADER.");
+
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Strategy[] = _("I battle patiently.");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Pokemon[] = _("WATER POKéMON to battle!");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro1[] = _("I'm the world's only guy to");
+const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro2[] = _("catch a huge POKéMON!");
+
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Strategy[] = _("Exploit the environment!");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Pokemon[] = _("All hail the WATER type!");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro1[] = _("I won't be beaten by some");
+const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro2[] = _("beach bum SWIMMER!");
+
+const u8 gMatchCallFlavorText_Triathlete_Maria_Strategy[] = _("Speed above all!");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Pokemon[] = _("I use a speedy POKéMON.");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Intro1[] = _("A marathon is a challenge");
+const u8 gMatchCallFlavorText_Triathlete_Maria_Intro2[] = _("against your own self.");
+
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Strategy[] = _("Defense is crucial.");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Pokemon[] = _("My POKéMON is solid.");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro1[] = _("I started this for dieting,");
+const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro2[] = _("but I got right into it.");
+
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Strategy[] = _("Strike before stricken!");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Pokemon[] = _("A fast-running POKéMON!");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro1[] = _("If you ran and ran, you'd");
+const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro2[] = _("become one with the wind.");
+
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Strategy[] = _("All-out offensive!");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Pokemon[] = _("WATER POKéMON rule!");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro1[] = _("I must swim over 6 miles");
+const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro2[] = _("every day.");
+
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Strategy[] = _("Push and push again!");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Pokemon[] = _("The strength of STEEL.");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro1[] = _("If you're sweating, get");
+const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro2[] = _("fluids into you regularly.");
+
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Strategy[] = _("Draw the power of WATER.");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Pokemon[] = _("Toughened WATER POKéMON.");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro1[] = _("Training POKéMON is good,");
+const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro2[] = _("but don't neglect yourself.");
+
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Strategy[] = _("It's about POKéMON power!");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Pokemon[] = _("See the power of DRAGONS!");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro1[] = _("I'll become legendary as the");
+const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro2[] = _("strongest one day!");
+
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Strategy[] = _("I'll show you my technique!");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Pokemon[] = _("Elegantly wheeling BIRDS.");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro1[] = _("My BIRD POKéMON, deliver my");
+const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro2[] = _("love to that girl!");
+
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Strategy[] = _("You'll suffer from poison!");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Pokemon[] = _("Poisonous POKéMON.");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro1[] = _("I undertake training so");
+const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro2[] = _("that I may become a ninja.");
+
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Strategy[] = _("The first strike wins!");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Pokemon[] = _("Speedy FIGHTING type.");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro1[] = _("If my POKéMON lose,");
+const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro2[] = _("I'll carry on the fight!");
+
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Strategy[] = _("Go, go, my POKéMON!");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Pokemon[] = _("I'll raise anything.");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro1[] = _("UV rays are your skin's");
+const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro2[] = _("enemy. Get protected.");
+
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Strategy[] = _("No mercy!");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Pokemon[] = _("Cute WATER POKéMON.");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro1[] = _("I have too many fans.");
+const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro2[] = _("I was interviewed on TV.");
+
+const u8 gMatchCallFlavorText_Picnicker_Diana_Strategy[] = _("I think about this & that.");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Pokemon[] = _("I like all POKéMON.");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Intro1[] = _("What lies beyond that");
+const u8 gMatchCallFlavorText_Picnicker_Diana_Intro2[] = _("yonder hill?");
+
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Strategy[] = _("We battle together!");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Pokemon[] = _("We train together!");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro1[] = _("We like the same POKéMON,");
+const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro2[] = _("but different desserts.");
+
+const u8 gMatchCallFlavorText_Sailor_Ernest_Strategy[] = _("I force things with power!");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Pokemon[] = _("WATER and FIGHTING types.");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Intro1[] = _("Seamen are rough spirits!");
+const u8 gMatchCallFlavorText_Sailor_Ernest_Intro2[] = _("Any complaints?");
+
+const u8 gMatchCallFlavorText_Sailor_Cory_Strategy[] = _("Up for a fight anytime!");
+const u8 gMatchCallFlavorText_Sailor_Cory_Pokemon[] = _("WATER POKéMON are my faves!");
+const u8 gMatchCallFlavorText_Sailor_Cory_Intro1[] = _("If you want to shout loud,");
+const u8 gMatchCallFlavorText_Sailor_Cory_Intro2[] = _("suck in air with your belly!");
+
+const u8 gMatchCallFlavorText_Collector_Edwin_Strategy[] = _("Protect POKéMON from harm.");
+const u8 gMatchCallFlavorText_Collector_Edwin_Pokemon[] = _("I love rare POKéMON.");
+const u8 gMatchCallFlavorText_Collector_Edwin_Intro1[] = _("I want to collect all the");
+const u8 gMatchCallFlavorText_Collector_Edwin_Intro2[] = _("world's rare POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Strategy[] = _("I count on power.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Pokemon[] = _("POKéMON are my children.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro1[] = _("It takes knowledge and");
+const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro2[] = _("love to raise POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Strategy[] = _("Full-on attack!");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Pokemon[] = _("Anything. I'll raise it.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro1[] = _("I give them {POKEBLOCK}S for");
+const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro2[] = _("going after CONTEST titles.");
+
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Strategy[] = _("I raise POKéMON with care.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Pokemon[] = _("Fun-to-raise POKéMON.");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro1[] = _("Treat every POKéMON you");
+const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro2[] = _("meet with respect.");
+
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Strategy[] = _("I believe in my POKéMON.");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Pokemon[] = _("I like strong POKéMON.");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro1[] = _("I'm training for rescue");
+const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro2[] = _("work with my POKéMON.");
+
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Strategy[] = _("Attack in waves!");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Pokemon[] = _("I use different types.");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro1[] = _("Those who destroy nature");
+const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro2[] = _("must never be forgiven!");
+
+const u8 gMatchCallFlavorText_Lass_Haley_Strategy[] = _("I'll show you some guts!");
+const u8 gMatchCallFlavorText_Lass_Haley_Pokemon[] = _("Cute POKéMON are my faves!");
+const u8 gMatchCallFlavorText_Lass_Haley_Intro1[] = _("After a battle, I always");
+const u8 gMatchCallFlavorText_Lass_Haley_Intro2[] = _("bathe with my POKéMON.");
+
+const u8 gMatchCallFlavorText_BugCatcher_James_Strategy[] = _("Lightning-fast attack!");
+const u8 gMatchCallFlavorText_BugCatcher_James_Pokemon[] = _("BUG POKéMON are number 1!");
+const u8 gMatchCallFlavorText_BugCatcher_James_Intro1[] = _("If you want to catch BUG");
+const u8 gMatchCallFlavorText_BugCatcher_James_Intro2[] = _("POKéMON, wake up early.");
+
+const u8 gMatchCallFlavorText_Hiker_Trent_Strategy[] = _("I battle with power.");
+const u8 gMatchCallFlavorText_Hiker_Trent_Pokemon[] = _("Hard-bodied POKéMON.");
+const u8 gMatchCallFlavorText_Hiker_Trent_Intro1[] = _("I've been planning a month");
+const u8 gMatchCallFlavorText_Hiker_Trent_Intro2[] = _("for today's hike.");
+
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Strategy[] = _("I like it hot!");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Pokemon[] = _("Hot POKéMON!");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro1[] = _("As much as I love POKéMON,");
+const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro2[] = _("I surely like hiking!");
+
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Strategy[] = _("Lovey-dovey strategy!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Pokemon[] = _("Lovey-dovey POKéMON!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro1[] = _("We're lovey-dovey!");
+const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro2[] = _("Forever lovey-dovey!");
+
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Strategy[] = _("We let it all hang out.");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Pokemon[] = _("The 1st POKéMON I caught.");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro1[] = _("POKéMON and I have grown");
+const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro2[] = _("stronger together.");
+
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Strategy[] = _("ROCK-type power attack.");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Pokemon[] = _("I prefer rock-hard POKéMON.");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro1[] = _("A LEADER of a big GYM bears");
+const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro2[] = _("a lot of responsibility.");
+
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Strategy[] = _("Direct physical action!");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Pokemon[] = _("FIGHTING POKéMON rule!");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro1[] = _("The world awaits me as the");
+const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro2[] = _("next big wave!");
+
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Strategy[] = _("I choose to electrify.");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Pokemon[] = _("Get shocked by electricity!");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro1[] = _("One must never throw a");
+const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro2[] = _("match. Even I must not.");
+
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Strategy[] = _("Battle aggressively.");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Pokemon[] = _("Burn with passion!");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro1[] = _("Completely wash away daily");
+const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro2[] = _("fatigue in hot springs!");
+
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Strategy[] = _("I flexibly adapt my style.");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Pokemon[] = _("Grown in a balanced manner.");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro1[] = _("I walk the 30 minutes from");
+const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro2[] = _("home to here every day.");
+
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Strategy[] = _("I take advantage of speed.");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Pokemon[] = _("Graceful sky dancers.");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro1[] = _("The ultimate would be to");
+const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro2[] = _("live as one with nature.");
+
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Strategy[] = _("We battle in cooperation.");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Pokemon[] = _("Always friendly POKéMON.");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro1[] = _("Papa has trouble telling");
+const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro2[] = _("the two of us apart!");
+
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Strategy[] = _("I use splendid waterpower.");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Pokemon[] = _("POKéMON of elegance!");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro1[] = _("The adulation of beautiful");
+const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro2[] = _("ladies fills me with energy!");
+
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Strategy[] = _("Offense over defense!");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Pokemon[] = _("The DARK side's beauties.");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro1[] = _("They said I was a punk, but");
+const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro2[] = _("I'm one of the ELITE FOUR!");
+
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Strategy[] = _("Confuse and confound.");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Pokemon[] = _("There's nothing definite.");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro1[] = _("I wonder how my grandma at");
+const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro2[] = _("MT. PYRE is doing?");
+
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Strategy[] = _("I use items for help.");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Pokemon[] = _("Flaming passion in icy cold!");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro1[] = _("The ICE type can be better");
+const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro2[] = _("trained in this hot land.");
+
+const u8 gMatchCallFlavorText_EliteFour_Drake_Strategy[] = _("Harness strong abilities.");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Pokemon[] = _("The raw power of DRAGONS!");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Intro1[] = _("I dedicate myself to the");
+const u8 gMatchCallFlavorText_EliteFour_Drake_Intro2[] = _("POKéMON that saved me.");
+
+const u8 gMatchCallFlavorText_Champion_Wallace_Strategy[] = _("Dignity and respect.");
+const u8 gMatchCallFlavorText_Champion_Wallace_Pokemon[] = _("I prefer POKéMON of grace.");
+const u8 gMatchCallFlavorText_Champion_Wallace_Intro1[] = _("I represent beauty as");
+const u8 gMatchCallFlavorText_Champion_Wallace_Intro2[] = _("well as intelligence.");
+
+const u8 *const gMatchCallMessages[][4] =
+{
+ [REMATCH_ROSE] = MCFLAVOR(AromaLady_Rose),
+ [REMATCH_ANDRES] = MCFLAVOR(RuinManiac_Andres),
+ [REMATCH_DUSTY] = MCFLAVOR(RuinManiac_Dusty),
+ [REMATCH_LOLA] = MCFLAVOR(Tuber_Lola),
+ [REMATCH_RICKY] = MCFLAVOR(Tuber_Ricky),
+ [REMATCH_LILA_AND_ROY] = MCFLAVOR(SisAndBro_LilaAndRoy),
+ [REMATCH_CRISTIN] = MCFLAVOR(Cooltrainer_Cristin),
+ [REMATCH_BROOKE] = MCFLAVOR(Cooltrainer_Brooke),
+ [REMATCH_WILTON] = MCFLAVOR(Cooltrainer_Wilton),
+ [REMATCH_VALERIE] = MCFLAVOR(HexManiac_Valerie),
+ [REMATCH_CINDY] = MCFLAVOR(Lady_Cindy),
+ [REMATCH_THALIA] = MCFLAVOR(Beauty_Thalia),
+ [REMATCH_JESSICA] = MCFLAVOR(Beauty_Jessica),
+ [REMATCH_WINSTON] = MCFLAVOR(RichBoy_Winston),
+ [REMATCH_STEVE] = MCFLAVOR(PokeManiac_Steve),
+ [REMATCH_TONY] = MCFLAVOR(Swimmer_Tony),
+ [REMATCH_NOB] = MCFLAVOR(BlackBelt_Nob),
+ [REMATCH_KOJI] = MCFLAVOR(BlackBelt_Koji),
+ [REMATCH_FERNANDO] = MCFLAVOR(Guitarist_Fernando),
+ [REMATCH_DALTON] = MCFLAVOR(Guitarist_Dalton),
+ [REMATCH_BERNIE] = MCFLAVOR(Kindler_Bernie),
+ [REMATCH_ETHAN] = MCFLAVOR(Camper_Ethan),
+ [REMATCH_JOHN_AND_JAY] = MCFLAVOR(OldCouple_JohnAndJay),
+ [REMATCH_JEFFREY] = MCFLAVOR(BugManiac_Jeffrey),
+ [REMATCH_CAMERON] = MCFLAVOR(Psychic_Cameron),
+ [REMATCH_JACKI] = MCFLAVOR(Psychic_Jacki),
+ [REMATCH_WALTER] = MCFLAVOR(Gentleman_Walter),
+ [REMATCH_KAREN] = MCFLAVOR(SchoolKid_Karen),
+ [REMATCH_JERRY] = MCFLAVOR(SchoolKid_Jerry),
+ [REMATCH_ANNA_AND_MEG] = MCFLAVOR(SrAndJr_AnnaAndMeg),
+ [REMATCH_ISABEL] = MCFLAVOR(Pokefan_Isabel),
+ [REMATCH_MIGUEL] = MCFLAVOR(Pokefan_Miguel),
+ [REMATCH_TIMOTHY] = MCFLAVOR(Expert_Timothy),
+ [REMATCH_SHELBY] = MCFLAVOR(Expert_Shelby),
+ [REMATCH_CALVIN] = MCFLAVOR(Youngster_Calvin),
+ [REMATCH_ELLIOT] = MCFLAVOR(Fisherman_Elliot),
+ [REMATCH_ISAIAH] = MCFLAVOR(Triathlete_Isaiah),
+ [REMATCH_MARIA] = MCFLAVOR(Triathlete_Maria),
+ [REMATCH_ABIGAIL] = MCFLAVOR(Triathlete_Abigail),
+ [REMATCH_DYLAN] = MCFLAVOR(Triathlete_Dylan),
+ [REMATCH_KATELYN] = MCFLAVOR(Triathlete_Katelyn),
+ [REMATCH_BENJAMIN] = MCFLAVOR(Triathlete_Benjamin),
+ [REMATCH_PABLO] = MCFLAVOR(Triathlete_Pablo),
+ [REMATCH_NICOLAS] = MCFLAVOR(DragonTamer_Nicolas),
+ [REMATCH_ROBERT] = MCFLAVOR(BirdKeeper_Robert),
+ [REMATCH_LAO] = MCFLAVOR(NinjaBoy_Lao),
+ [REMATCH_CYNDY] = MCFLAVOR(BattleGirl_Cyndy),
+ [REMATCH_MADELINE] = MCFLAVOR(ParasolLady_Madeline),
+ [REMATCH_JENNY] = MCFLAVOR(Swimmer_Jenny),
+ [REMATCH_DIANA] = MCFLAVOR(Picnicker_Diana),
+ [REMATCH_AMY_AND_LIV] = MCFLAVOR(Twins_AmyAndLiv),
+ [REMATCH_ERNEST] = MCFLAVOR(Sailor_Ernest),
+ [REMATCH_CORY] = MCFLAVOR(Sailor_Cory),
+ [REMATCH_EDWIN] = MCFLAVOR(Collector_Edwin),
+ [REMATCH_LYDIA] = MCFLAVOR(PkmnBreeder_Lydia),
+ [REMATCH_ISAAC] = MCFLAVOR(PkmnBreeder_Isaac),
+ [REMATCH_GABRIELLE] = MCFLAVOR(PkmnBreeder_Gabrielle),
+ [REMATCH_CATHERINE] = MCFLAVOR(PkmnRanger_Catherine),
+ [REMATCH_JACKSON] = MCFLAVOR(PkmnRanger_Jackson),
+ [REMATCH_HALEY] = MCFLAVOR(Lass_Haley),
+ [REMATCH_JAMES] = MCFLAVOR(BugCatcher_James),
+ [REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
+ [REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
+ [REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal),
+ [REMATCH_WALLY_3] = MCFLAVOR(PkmnTrainer_Wally),
+ [REMATCH_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
+ [REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
+ [REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
+ [REMATCH_FLANNERY] = MCFLAVOR(PassionBurn_Flannery),
+ [REMATCH_NORMAN] = MCFLAVOR(ReliableOne_Dad),
+ [REMATCH_WINONA] = MCFLAVOR(SkyTamer_Winona),
+ [REMATCH_TATE_AND_LIZA] = MCFLAVOR(MysticDuo_TateAndLiza),
+ [REMATCH_JUAN] = MCFLAVOR(DandyCharm_Juan),
+ [REMATCH_SIDNEY] = MCFLAVOR(EliteFour_Sidney),
+ [REMATCH_PHOEBE] = MCFLAVOR(EliteFour_Phoebe),
+ [REMATCH_GLACIA] = MCFLAVOR(EliteFour_Glacia),
+ [REMATCH_DRAKE] = MCFLAVOR(EliteFour_Drake),
+ [REMATCH_WALLACE] = MCFLAVOR(Champion_Wallace),
+};
diff --git a/src/data/text/ribbon_descriptions.h b/src/data/text/ribbon_descriptions.h
new file mode 100644
index 000000000..f455a7771
--- /dev/null
+++ b/src/data/text/ribbon_descriptions.h
@@ -0,0 +1,48 @@
+const u8 gRibbonDescriptionPart1_Champion[] = _("CHAMPION-beating, HALL");
+const u8 gRibbonDescriptionPart2_Champion[] = _("OF FAME Member RIBBON");
+const u8 gRibbonDescriptionPart1_CoolContest[] = _("COOL CONTEST");
+const u8 gRibbonDescriptionPart1_BeautyContest[] = _("BEAUTY CONTEST");
+const u8 gRibbonDescriptionPart1_CuteContest[] = _("CUTE CONTEST");
+const u8 gRibbonDescriptionPart1_SmartContest[] = _("SMART CONTEST");
+const u8 gRibbonDescriptionPart1_ToughContest[] = _("TOUGH CONTEST");
+const u8 gRibbonDescriptionPart2_NormalRank[] = _("Normal Rank winner!");
+const u8 gRibbonDescriptionPart2_SuperRank[] = _("Super Rank winner!");
+const u8 gRibbonDescriptionPart2_HyperRank[] = _("Hyper Rank winner!");
+const u8 gRibbonDescriptionPart2_MasterRank[] = _("Master Rank winner!");
+const u8 gRibbonDescriptionPart1_Winning[] = _("For clearing LV50");
+const u8 gRibbonDescriptionPart2_Winning[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Victory[] = _("For clearing Open Level");
+const u8 gRibbonDescriptionPart2_Victory[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Artist[] = _("RIBBON for being chosen");
+const u8 gRibbonDescriptionPart2_Artist[] = _("as a super sketch model.");
+const u8 gRibbonDescriptionPart1_Effort[] = _("RIBBON awarded for");
+const u8 gRibbonDescriptionPart2_Effort[] = _("being a hard worker.");
+
+const u8 *const gRibbonDescriptionPointers[][2] =
+{
+ {gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
+ {gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
+ {gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
+ {gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
+};
diff --git a/src/data/text/trainer_class_names.h b/src/data/text/trainer_class_names.h
index dd750b354..f012e877b 100644
--- a/src/data/text/trainer_class_names.h
+++ b/src/data/text/trainer_class_names.h
@@ -47,7 +47,7 @@ const u8 gTrainerClassNames[][13] = {
[TRAINER_CLASS_SWIMMER_F] = _("SWIMMER♀"),
[TRAINER_CLASS_TWINS] = _("TWINS"),
[TRAINER_CLASS_SAILOR] = _("SAILOR"),
- [TRAINER_CLASS_COOLTRAINER_UNUSED] = _("COOLTRAINER"),
+ [TRAINER_CLASS_COOLTRAINER_2] = _("COOLTRAINER"),
[TRAINER_CLASS_MAGMA_ADMIN] = _("MAGMA ADMIN"),
[TRAINER_CLASS_PKMN_TRAINER_3] = _("{PKMN} TRAINER"),
[TRAINER_CLASS_BUG_CATCHER] = _("BUG CATCHER"),
@@ -64,5 +64,5 @@ const u8 gTrainerClassNames[][13] = {
[TRAINER_CLASS_FACTORY_HEAD] = _("FACTORY HEAD"),
[TRAINER_CLASS_PIKE_QUEEN] = _("PIKE QUEEN"),
[TRAINER_CLASS_PYRAMID_KING] = _("PYRAMID KING"),
- [TRAINER_CLASS_PKMN_TRAINER_4] = _("{PKMN} TRAINER"),
+ [TRAINER_CLASS_RS_PROTAG] = _("{PKMN} TRAINER"),
};
diff --git a/src/data/trainers.h b/src/data/trainers.h
index 5a92926cc..c30d21afd 100644
--- a/src/data/trainers.h
+++ b/src/data/trainers.h
@@ -10,7 +10,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 0,
- .party = {.NoItemDefaultMoves = NULL }
+ .party = {.NoItemDefaultMoves = NULL},
},
[TRAINER_SAWYER_1] =
@@ -23,8 +23,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sawyer1 }
+ .partySize = ARRAY_COUNT(sParty_Sawyer1),
+ .party = {.NoItemDefaultMoves = sParty_Sawyer1},
},
[TRAINER_GRUNT_1] =
@@ -37,8 +37,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt1 }
+ .partySize = ARRAY_COUNT(sParty_Grunt1),
+ .party = {.NoItemDefaultMoves = sParty_Grunt1},
},
[TRAINER_GRUNT_2] =
@@ -51,8 +51,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt2 }
+ .partySize = ARRAY_COUNT(sParty_Grunt2),
+ .party = {.NoItemDefaultMoves = sParty_Grunt2},
},
[TRAINER_GRUNT_3] =
@@ -65,8 +65,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt3 }
+ .partySize = ARRAY_COUNT(sParty_Grunt3),
+ .party = {.NoItemDefaultMoves = sParty_Grunt3},
},
[TRAINER_GRUNT_4] =
@@ -79,8 +79,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt4 }
+ .partySize = ARRAY_COUNT(sParty_Grunt4),
+ .party = {.NoItemDefaultMoves = sParty_Grunt4},
},
[TRAINER_GRUNT_5] =
@@ -93,8 +93,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt5 }
+ .partySize = ARRAY_COUNT(sParty_Grunt5),
+ .party = {.NoItemDefaultMoves = sParty_Grunt5},
},
[TRAINER_GRUNT_6] =
@@ -107,8 +107,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt6 }
+ .partySize = ARRAY_COUNT(sParty_Grunt6),
+ .party = {.NoItemDefaultMoves = sParty_Grunt6},
},
[TRAINER_GRUNT_7] =
@@ -121,8 +121,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt7 }
+ .partySize = ARRAY_COUNT(sParty_Grunt7),
+ .party = {.NoItemDefaultMoves = sParty_Grunt7},
},
[TRAINER_GABRIELLE_1] =
@@ -135,8 +135,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Gabrielle1 }
+ .partySize = ARRAY_COUNT(sParty_Gabrielle1),
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle1},
},
[TRAINER_GRUNT_8] =
@@ -149,8 +149,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt8 }
+ .partySize = ARRAY_COUNT(sParty_Grunt8),
+ .party = {.NoItemDefaultMoves = sParty_Grunt8},
},
[TRAINER_MARCEL] =
@@ -163,8 +163,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Marcel }
+ .partySize = ARRAY_COUNT(sParty_Marcel),
+ .party = {.NoItemDefaultMoves = sParty_Marcel},
},
[TRAINER_ALBERTO] =
@@ -177,8 +177,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alberto }
+ .partySize = ARRAY_COUNT(sParty_Alberto),
+ .party = {.NoItemDefaultMoves = sParty_Alberto},
},
[TRAINER_ED] =
@@ -191,8 +191,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ed }
+ .partySize = ARRAY_COUNT(sParty_Ed),
+ .party = {.NoItemDefaultMoves = sParty_Ed},
},
[TRAINER_GRUNT_9] =
@@ -205,8 +205,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt9 }
+ .partySize = ARRAY_COUNT(sParty_Grunt9),
+ .party = {.NoItemDefaultMoves = sParty_Grunt9},
},
[TRAINER_DECLAN] =
@@ -219,8 +219,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Declan }
+ .partySize = ARRAY_COUNT(sParty_Declan),
+ .party = {.NoItemDefaultMoves = sParty_Declan},
},
[TRAINER_GRUNT_10] =
@@ -233,8 +233,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt10 }
+ .partySize = ARRAY_COUNT(sParty_Grunt10),
+ .party = {.NoItemDefaultMoves = sParty_Grunt10},
},
[TRAINER_GRUNT_11] =
@@ -247,8 +247,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt11 }
+ .partySize = ARRAY_COUNT(sParty_Grunt11),
+ .party = {.NoItemDefaultMoves = sParty_Grunt11},
},
[TRAINER_GRUNT_12] =
@@ -261,8 +261,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt12 }
+ .partySize = ARRAY_COUNT(sParty_Grunt12),
+ .party = {.NoItemDefaultMoves = sParty_Grunt12},
},
[TRAINER_GRUNT_13] =
@@ -275,8 +275,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Grunt13 }
+ .partySize = ARRAY_COUNT(sParty_Grunt13),
+ .party = {.NoItemDefaultMoves = sParty_Grunt13},
},
[TRAINER_GRUNT_14] =
@@ -289,8 +289,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt14 }
+ .partySize = ARRAY_COUNT(sParty_Grunt14),
+ .party = {.NoItemDefaultMoves = sParty_Grunt14},
},
[TRAINER_GRUNT_15] =
@@ -303,8 +303,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt15 }
+ .partySize = ARRAY_COUNT(sParty_Grunt15),
+ .party = {.NoItemDefaultMoves = sParty_Grunt15},
},
[TRAINER_GRUNT_16] =
@@ -317,8 +317,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt16 }
+ .partySize = ARRAY_COUNT(sParty_Grunt16),
+ .party = {.NoItemDefaultMoves = sParty_Grunt16},
},
[TRAINER_GRUNT_17] =
@@ -331,8 +331,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt17 }
+ .partySize = ARRAY_COUNT(sParty_Grunt17),
+ .party = {.NoItemDefaultMoves = sParty_Grunt17},
},
[TRAINER_GRUNT_18] =
@@ -345,8 +345,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt18 }
+ .partySize = ARRAY_COUNT(sParty_Grunt18),
+ .party = {.NoItemDefaultMoves = sParty_Grunt18},
},
[TRAINER_GRUNT_19] =
@@ -359,8 +359,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt19 }
+ .partySize = ARRAY_COUNT(sParty_Grunt19),
+ .party = {.NoItemDefaultMoves = sParty_Grunt19},
},
[TRAINER_GRUNT_20] =
@@ -373,8 +373,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt20 }
+ .partySize = ARRAY_COUNT(sParty_Grunt20),
+ .party = {.NoItemDefaultMoves = sParty_Grunt20},
},
[TRAINER_GRUNT_21] =
@@ -387,8 +387,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt21 }
+ .partySize = ARRAY_COUNT(sParty_Grunt21),
+ .party = {.NoItemDefaultMoves = sParty_Grunt21},
},
[TRAINER_GRUNT_22] =
@@ -401,8 +401,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt22 }
+ .partySize = ARRAY_COUNT(sParty_Grunt22),
+ .party = {.NoItemDefaultMoves = sParty_Grunt22},
},
[TRAINER_FREDRICK] =
@@ -415,8 +415,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Fredrick }
+ .partySize = ARRAY_COUNT(sParty_Fredrick),
+ .party = {.NoItemDefaultMoves = sParty_Fredrick},
},
[TRAINER_MATT] =
@@ -429,8 +429,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Matt }
+ .partySize = ARRAY_COUNT(sParty_Matt),
+ .party = {.NoItemDefaultMoves = sParty_Matt},
},
[TRAINER_ZANDER] =
@@ -443,8 +443,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Zander }
+ .partySize = ARRAY_COUNT(sParty_Zander),
+ .party = {.NoItemDefaultMoves = sParty_Zander},
},
[TRAINER_SHELLY_1] =
@@ -457,8 +457,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelly1 }
+ .partySize = ARRAY_COUNT(sParty_Shelly1),
+ .party = {.NoItemDefaultMoves = sParty_Shelly1},
},
[TRAINER_SHELLY_2] =
@@ -471,8 +471,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelly2 }
+ .partySize = ARRAY_COUNT(sParty_Shelly2),
+ .party = {.NoItemDefaultMoves = sParty_Shelly2},
},
[TRAINER_ARCHIE] =
@@ -485,8 +485,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Archie }
+ .partySize = ARRAY_COUNT(sParty_Archie),
+ .party = {.NoItemDefaultMoves = sParty_Archie},
},
[TRAINER_LEAH] =
@@ -499,8 +499,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Leah }
+ .partySize = ARRAY_COUNT(sParty_Leah),
+ .party = {.NoItemDefaultMoves = sParty_Leah},
},
[TRAINER_DAISY] =
@@ -513,8 +513,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Daisy }
+ .partySize = ARRAY_COUNT(sParty_Daisy),
+ .party = {.NoItemDefaultMoves = sParty_Daisy},
},
[TRAINER_ROSE_1] =
@@ -527,8 +527,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Rose1 }
+ .partySize = ARRAY_COUNT(sParty_Rose1),
+ .party = {.NoItemDefaultMoves = sParty_Rose1},
},
[TRAINER_FELIX] =
@@ -541,8 +541,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Felix }
+ .partySize = ARRAY_COUNT(sParty_Felix),
+ .party = {.NoItemCustomMoves = sParty_Felix},
},
[TRAINER_VIOLET] =
@@ -555,8 +555,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Violet }
+ .partySize = ARRAY_COUNT(sParty_Violet),
+ .party = {.NoItemDefaultMoves = sParty_Violet},
},
[TRAINER_ROSE_2] =
@@ -569,8 +569,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Rose2 }
+ .partySize = ARRAY_COUNT(sParty_Rose2),
+ .party = {.NoItemDefaultMoves = sParty_Rose2},
},
[TRAINER_ROSE_3] =
@@ -583,8 +583,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Rose3 }
+ .partySize = ARRAY_COUNT(sParty_Rose3),
+ .party = {.NoItemDefaultMoves = sParty_Rose3},
},
[TRAINER_ROSE_4] =
@@ -597,8 +597,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Rose4 }
+ .partySize = ARRAY_COUNT(sParty_Rose4),
+ .party = {.NoItemDefaultMoves = sParty_Rose4},
},
[TRAINER_ROSE_5] =
@@ -611,8 +611,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Rose5 }
+ .partySize = ARRAY_COUNT(sParty_Rose5),
+ .party = {.NoItemDefaultMoves = sParty_Rose5},
},
[TRAINER_DUSTY_1] =
@@ -625,8 +625,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Dusty1 }
+ .partySize = ARRAY_COUNT(sParty_Dusty1),
+ .party = {.NoItemCustomMoves = sParty_Dusty1},
},
[TRAINER_CHIP] =
@@ -639,8 +639,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Chip }
+ .partySize = ARRAY_COUNT(sParty_Chip),
+ .party = {.NoItemCustomMoves = sParty_Chip},
},
[TRAINER_FOSTER] =
@@ -653,8 +653,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Foster }
+ .partySize = ARRAY_COUNT(sParty_Foster),
+ .party = {.NoItemCustomMoves = sParty_Foster},
},
[TRAINER_DUSTY_2] =
@@ -667,8 +667,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Dusty2 }
+ .partySize = ARRAY_COUNT(sParty_Dusty2),
+ .party = {.NoItemCustomMoves = sParty_Dusty2},
},
[TRAINER_DUSTY_3] =
@@ -681,8 +681,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Dusty3 }
+ .partySize = ARRAY_COUNT(sParty_Dusty3),
+ .party = {.NoItemCustomMoves = sParty_Dusty3},
},
[TRAINER_DUSTY_4] =
@@ -695,8 +695,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Dusty4 }
+ .partySize = ARRAY_COUNT(sParty_Dusty4),
+ .party = {.NoItemCustomMoves = sParty_Dusty4},
},
[TRAINER_DUSTY_5] =
@@ -709,8 +709,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Dusty5 }
+ .partySize = ARRAY_COUNT(sParty_Dusty5),
+ .party = {.NoItemCustomMoves = sParty_Dusty5},
},
[TRAINER_GABBY_AND_TY_1] =
@@ -723,8 +723,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GabbyAndTy1 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy1),
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy1},
},
[TRAINER_GABBY_AND_TY_2] =
@@ -737,8 +737,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GabbyAndTy2 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy2),
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy2},
},
[TRAINER_GABBY_AND_TY_3] =
@@ -751,8 +751,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GabbyAndTy3 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy3),
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy3},
},
[TRAINER_GABBY_AND_TY_4] =
@@ -765,8 +765,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GabbyAndTy4 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy4),
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy4},
},
[TRAINER_GABBY_AND_TY_5] =
@@ -779,8 +779,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GabbyAndTy5 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy5),
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy5},
},
[TRAINER_GABBY_AND_TY_6] =
@@ -793,8 +793,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_GabbyAndTy6 }
+ .partySize = ARRAY_COUNT(sParty_GabbyAndTy6),
+ .party = {.NoItemCustomMoves = sParty_GabbyAndTy6},
},
[TRAINER_LOLA_1] =
@@ -807,8 +807,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lola1 }
+ .partySize = ARRAY_COUNT(sParty_Lola1),
+ .party = {.NoItemDefaultMoves = sParty_Lola1},
},
[TRAINER_AUSTINA] =
@@ -821,8 +821,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Austina }
+ .partySize = ARRAY_COUNT(sParty_Austina),
+ .party = {.NoItemDefaultMoves = sParty_Austina},
},
[TRAINER_GWEN] =
@@ -835,8 +835,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Gwen }
+ .partySize = ARRAY_COUNT(sParty_Gwen),
+ .party = {.NoItemDefaultMoves = sParty_Gwen},
},
[TRAINER_LOLA_2] =
@@ -849,8 +849,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lola2 }
+ .partySize = ARRAY_COUNT(sParty_Lola2),
+ .party = {.NoItemDefaultMoves = sParty_Lola2},
},
[TRAINER_LOLA_3] =
@@ -863,8 +863,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lola3 }
+ .partySize = ARRAY_COUNT(sParty_Lola3),
+ .party = {.NoItemDefaultMoves = sParty_Lola3},
},
[TRAINER_LOLA_4] =
@@ -877,8 +877,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lola4 }
+ .partySize = ARRAY_COUNT(sParty_Lola4),
+ .party = {.NoItemDefaultMoves = sParty_Lola4},
},
[TRAINER_LOLA_5] =
@@ -891,8 +891,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lola5 }
+ .partySize = ARRAY_COUNT(sParty_Lola5),
+ .party = {.NoItemDefaultMoves = sParty_Lola5},
},
[TRAINER_RICKY_1] =
@@ -905,8 +905,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Ricky1 }
+ .partySize = ARRAY_COUNT(sParty_Ricky1),
+ .party = {.NoItemCustomMoves = sParty_Ricky1},
},
[TRAINER_SIMON] =
@@ -919,8 +919,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Simon }
+ .partySize = ARRAY_COUNT(sParty_Simon),
+ .party = {.NoItemDefaultMoves = sParty_Simon},
},
[TRAINER_CHARLIE] =
@@ -933,8 +933,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Charlie }
+ .partySize = ARRAY_COUNT(sParty_Charlie),
+ .party = {.NoItemDefaultMoves = sParty_Charlie},
},
[TRAINER_RICKY_2] =
@@ -947,8 +947,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Ricky2 }
+ .partySize = ARRAY_COUNT(sParty_Ricky2),
+ .party = {.NoItemCustomMoves = sParty_Ricky2},
},
[TRAINER_RICKY_3] =
@@ -961,8 +961,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Ricky3 }
+ .partySize = ARRAY_COUNT(sParty_Ricky3),
+ .party = {.NoItemCustomMoves = sParty_Ricky3},
},
[TRAINER_RICKY_4] =
@@ -975,8 +975,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Ricky4 }
+ .partySize = ARRAY_COUNT(sParty_Ricky4),
+ .party = {.NoItemCustomMoves = sParty_Ricky4},
},
[TRAINER_RICKY_5] =
@@ -989,8 +989,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Ricky5 }
+ .partySize = ARRAY_COUNT(sParty_Ricky5),
+ .party = {.NoItemCustomMoves = sParty_Ricky5},
},
[TRAINER_RANDALL] =
@@ -1003,8 +1003,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Randall }
+ .partySize = ARRAY_COUNT(sParty_Randall),
+ .party = {.ItemCustomMoves = sParty_Randall},
},
[TRAINER_PARKER] =
@@ -1017,8 +1017,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Parker }
+ .partySize = ARRAY_COUNT(sParty_Parker),
+ .party = {.ItemCustomMoves = sParty_Parker},
},
[TRAINER_GEORGE] =
@@ -1031,8 +1031,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_George }
+ .partySize = ARRAY_COUNT(sParty_George),
+ .party = {.ItemCustomMoves = sParty_George},
},
[TRAINER_BERKE] =
@@ -1045,8 +1045,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Berke }
+ .partySize = ARRAY_COUNT(sParty_Berke),
+ .party = {.ItemCustomMoves = sParty_Berke},
},
[TRAINER_BRAXTON] =
@@ -1059,8 +1059,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Braxton }
+ .partySize = ARRAY_COUNT(sParty_Braxton),
+ .party = {.NoItemCustomMoves = sParty_Braxton},
},
[TRAINER_VINCENT] =
@@ -1073,8 +1073,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Vincent }
+ .partySize = ARRAY_COUNT(sParty_Vincent),
+ .party = {.NoItemDefaultMoves = sParty_Vincent},
},
[TRAINER_LEROY] =
@@ -1087,8 +1087,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Leroy }
+ .partySize = ARRAY_COUNT(sParty_Leroy),
+ .party = {.NoItemDefaultMoves = sParty_Leroy},
},
[TRAINER_WILTON_1] =
@@ -1101,8 +1101,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wilton1 }
+ .partySize = ARRAY_COUNT(sParty_Wilton1),
+ .party = {.NoItemDefaultMoves = sParty_Wilton1},
},
[TRAINER_EDGAR] =
@@ -1115,8 +1115,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edgar }
+ .partySize = ARRAY_COUNT(sParty_Edgar),
+ .party = {.NoItemDefaultMoves = sParty_Edgar},
},
[TRAINER_ALBERT] =
@@ -1129,8 +1129,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Albert }
+ .partySize = ARRAY_COUNT(sParty_Albert),
+ .party = {.NoItemDefaultMoves = sParty_Albert},
},
[TRAINER_SAMUEL] =
@@ -1143,8 +1143,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Samuel }
+ .partySize = ARRAY_COUNT(sParty_Samuel),
+ .party = {.NoItemDefaultMoves = sParty_Samuel},
},
[TRAINER_VITO] =
@@ -1157,8 +1157,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Vito }
+ .partySize = ARRAY_COUNT(sParty_Vito),
+ .party = {.NoItemDefaultMoves = sParty_Vito},
},
[TRAINER_OWEN] =
@@ -1171,8 +1171,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Owen }
+ .partySize = ARRAY_COUNT(sParty_Owen),
+ .party = {.NoItemDefaultMoves = sParty_Owen},
},
[TRAINER_WILTON_2] =
@@ -1185,8 +1185,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wilton2 }
+ .partySize = ARRAY_COUNT(sParty_Wilton2),
+ .party = {.NoItemDefaultMoves = sParty_Wilton2},
},
[TRAINER_WILTON_3] =
@@ -1199,8 +1199,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wilton3 }
+ .partySize = ARRAY_COUNT(sParty_Wilton3),
+ .party = {.NoItemDefaultMoves = sParty_Wilton3},
},
[TRAINER_WILTON_4] =
@@ -1213,8 +1213,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wilton4 }
+ .partySize = ARRAY_COUNT(sParty_Wilton4),
+ .party = {.NoItemDefaultMoves = sParty_Wilton4},
},
[TRAINER_WILTON_5] =
@@ -1227,8 +1227,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wilton5 }
+ .partySize = ARRAY_COUNT(sParty_Wilton5),
+ .party = {.NoItemDefaultMoves = sParty_Wilton5},
},
[TRAINER_WARREN] =
@@ -1241,8 +1241,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Warren }
+ .partySize = ARRAY_COUNT(sParty_Warren),
+ .party = {.NoItemDefaultMoves = sParty_Warren},
},
[TRAINER_MARY] =
@@ -1255,8 +1255,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Mary }
+ .partySize = ARRAY_COUNT(sParty_Mary),
+ .party = {.ItemCustomMoves = sParty_Mary},
},
[TRAINER_ALEXIA] =
@@ -1269,8 +1269,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Alexia }
+ .partySize = ARRAY_COUNT(sParty_Alexia),
+ .party = {.ItemCustomMoves = sParty_Alexia},
},
[TRAINER_JODY] =
@@ -1283,8 +1283,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Jody }
+ .partySize = ARRAY_COUNT(sParty_Jody),
+ .party = {.ItemCustomMoves = sParty_Jody},
},
[TRAINER_WENDY] =
@@ -1297,8 +1297,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Wendy }
+ .partySize = ARRAY_COUNT(sParty_Wendy),
+ .party = {.NoItemCustomMoves = sParty_Wendy},
},
[TRAINER_KEIRA] =
@@ -1311,8 +1311,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Keira }
+ .partySize = ARRAY_COUNT(sParty_Keira),
+ .party = {.NoItemDefaultMoves = sParty_Keira},
},
[TRAINER_BROOKE_1] =
@@ -1325,8 +1325,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brooke1 }
+ .partySize = ARRAY_COUNT(sParty_Brooke1),
+ .party = {.NoItemDefaultMoves = sParty_Brooke1},
},
[TRAINER_JENNIFER] =
@@ -1339,8 +1339,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jennifer }
+ .partySize = ARRAY_COUNT(sParty_Jennifer),
+ .party = {.NoItemDefaultMoves = sParty_Jennifer},
},
[TRAINER_HOPE] =
@@ -1353,8 +1353,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Hope }
+ .partySize = ARRAY_COUNT(sParty_Hope),
+ .party = {.NoItemDefaultMoves = sParty_Hope},
},
[TRAINER_SHANNON] =
@@ -1367,8 +1367,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Shannon }
+ .partySize = ARRAY_COUNT(sParty_Shannon),
+ .party = {.NoItemDefaultMoves = sParty_Shannon},
},
[TRAINER_MICHELLE] =
@@ -1381,8 +1381,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Michelle }
+ .partySize = ARRAY_COUNT(sParty_Michelle),
+ .party = {.NoItemDefaultMoves = sParty_Michelle},
},
[TRAINER_CAROLINE] =
@@ -1395,8 +1395,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Caroline }
+ .partySize = ARRAY_COUNT(sParty_Caroline),
+ .party = {.NoItemDefaultMoves = sParty_Caroline},
},
[TRAINER_JULIE] =
@@ -1409,8 +1409,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Julie }
+ .partySize = ARRAY_COUNT(sParty_Julie),
+ .party = {.NoItemDefaultMoves = sParty_Julie},
},
[TRAINER_BROOKE_2] =
@@ -1423,8 +1423,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brooke2 }
+ .partySize = ARRAY_COUNT(sParty_Brooke2),
+ .party = {.NoItemDefaultMoves = sParty_Brooke2},
},
[TRAINER_BROOKE_3] =
@@ -1437,8 +1437,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brooke3 }
+ .partySize = ARRAY_COUNT(sParty_Brooke3),
+ .party = {.NoItemDefaultMoves = sParty_Brooke3},
},
[TRAINER_BROOKE_4] =
@@ -1451,8 +1451,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brooke4 }
+ .partySize = ARRAY_COUNT(sParty_Brooke4),
+ .party = {.NoItemDefaultMoves = sParty_Brooke4},
},
[TRAINER_BROOKE_5] =
@@ -1465,8 +1465,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brooke5 }
+ .partySize = ARRAY_COUNT(sParty_Brooke5),
+ .party = {.NoItemDefaultMoves = sParty_Brooke5},
},
[TRAINER_PATRICIA] =
@@ -1479,8 +1479,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Patricia }
+ .partySize = ARRAY_COUNT(sParty_Patricia),
+ .party = {.NoItemDefaultMoves = sParty_Patricia},
},
[TRAINER_KINDRA] =
@@ -1493,8 +1493,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Kindra }
+ .partySize = ARRAY_COUNT(sParty_Kindra),
+ .party = {.NoItemDefaultMoves = sParty_Kindra},
},
[TRAINER_TAMMY] =
@@ -1507,8 +1507,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tammy }
+ .partySize = ARRAY_COUNT(sParty_Tammy),
+ .party = {.NoItemDefaultMoves = sParty_Tammy},
},
[TRAINER_VALERIE_1] =
@@ -1521,8 +1521,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Valerie1 }
+ .partySize = ARRAY_COUNT(sParty_Valerie1),
+ .party = {.NoItemDefaultMoves = sParty_Valerie1},
},
[TRAINER_TASHA] =
@@ -1535,8 +1535,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tasha }
+ .partySize = ARRAY_COUNT(sParty_Tasha),
+ .party = {.NoItemDefaultMoves = sParty_Tasha},
},
[TRAINER_VALERIE_2] =
@@ -1549,8 +1549,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Valerie2 }
+ .partySize = ARRAY_COUNT(sParty_Valerie2),
+ .party = {.NoItemDefaultMoves = sParty_Valerie2},
},
[TRAINER_VALERIE_3] =
@@ -1563,8 +1563,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Valerie3 }
+ .partySize = ARRAY_COUNT(sParty_Valerie3),
+ .party = {.NoItemDefaultMoves = sParty_Valerie3},
},
[TRAINER_VALERIE_4] =
@@ -1577,8 +1577,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Valerie4 }
+ .partySize = ARRAY_COUNT(sParty_Valerie4),
+ .party = {.NoItemDefaultMoves = sParty_Valerie4},
},
[TRAINER_VALERIE_5] =
@@ -1591,8 +1591,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Valerie5 }
+ .partySize = ARRAY_COUNT(sParty_Valerie5),
+ .party = {.NoItemDefaultMoves = sParty_Valerie5},
},
[TRAINER_CINDY_1] =
@@ -1605,8 +1605,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Cindy1 }
+ .partySize = ARRAY_COUNT(sParty_Cindy1),
+ .party = {.ItemDefaultMoves = sParty_Cindy1},
},
[TRAINER_DAPHNE] =
@@ -1619,8 +1619,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemCustomMoves = sParty_Daphne }
+ .partySize = ARRAY_COUNT(sParty_Daphne),
+ .party = {.ItemCustomMoves = sParty_Daphne},
},
[TRAINER_GRUNT_23] =
@@ -1633,8 +1633,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Grunt23 }
+ .partySize = ARRAY_COUNT(sParty_Grunt23),
+ .party = {.NoItemDefaultMoves = sParty_Grunt23},
},
[TRAINER_CINDY_2] =
@@ -1647,8 +1647,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Cindy2 }
+ .partySize = ARRAY_COUNT(sParty_Cindy2),
+ .party = {.ItemCustomMoves = sParty_Cindy2},
},
[TRAINER_BRIANNA] =
@@ -1661,8 +1661,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Brianna }
+ .partySize = ARRAY_COUNT(sParty_Brianna),
+ .party = {.ItemDefaultMoves = sParty_Brianna},
},
[TRAINER_NAOMI] =
@@ -1675,8 +1675,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Naomi }
+ .partySize = ARRAY_COUNT(sParty_Naomi),
+ .party = {.ItemDefaultMoves = sParty_Naomi},
},
[TRAINER_CINDY_3] =
@@ -1689,8 +1689,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Cindy3 }
+ .partySize = ARRAY_COUNT(sParty_Cindy3),
+ .party = {.ItemDefaultMoves = sParty_Cindy3},
},
[TRAINER_CINDY_4] =
@@ -1703,8 +1703,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Cindy4 }
+ .partySize = ARRAY_COUNT(sParty_Cindy4),
+ .party = {.ItemDefaultMoves = sParty_Cindy4},
},
[TRAINER_CINDY_5] =
@@ -1717,8 +1717,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Cindy5 }
+ .partySize = ARRAY_COUNT(sParty_Cindy5),
+ .party = {.ItemDefaultMoves = sParty_Cindy5},
},
[TRAINER_CINDY_6] =
@@ -1731,8 +1731,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Cindy6 }
+ .partySize = ARRAY_COUNT(sParty_Cindy6),
+ .party = {.ItemCustomMoves = sParty_Cindy6},
},
[TRAINER_MELISSA] =
@@ -1745,8 +1745,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Melissa }
+ .partySize = ARRAY_COUNT(sParty_Melissa),
+ .party = {.NoItemDefaultMoves = sParty_Melissa},
},
[TRAINER_SHEILA] =
@@ -1759,8 +1759,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sheila }
+ .partySize = ARRAY_COUNT(sParty_Sheila),
+ .party = {.NoItemDefaultMoves = sParty_Sheila},
},
[TRAINER_SHIRLEY] =
@@ -1773,8 +1773,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Shirley }
+ .partySize = ARRAY_COUNT(sParty_Shirley),
+ .party = {.NoItemDefaultMoves = sParty_Shirley},
},
[TRAINER_JESSICA_1] =
@@ -1787,8 +1787,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Jessica1 }
+ .partySize = ARRAY_COUNT(sParty_Jessica1),
+ .party = {.NoItemCustomMoves = sParty_Jessica1},
},
[TRAINER_CONNIE] =
@@ -1801,8 +1801,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Connie }
+ .partySize = ARRAY_COUNT(sParty_Connie),
+ .party = {.NoItemDefaultMoves = sParty_Connie},
},
[TRAINER_BRIDGET] =
@@ -1815,8 +1815,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Bridget }
+ .partySize = ARRAY_COUNT(sParty_Bridget),
+ .party = {.NoItemDefaultMoves = sParty_Bridget},
},
[TRAINER_OLIVIA] =
@@ -1829,8 +1829,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Olivia }
+ .partySize = ARRAY_COUNT(sParty_Olivia),
+ .party = {.NoItemCustomMoves = sParty_Olivia},
},
[TRAINER_TIFFANY] =
@@ -1843,8 +1843,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tiffany }
+ .partySize = ARRAY_COUNT(sParty_Tiffany),
+ .party = {.NoItemDefaultMoves = sParty_Tiffany},
},
[TRAINER_JESSICA_2] =
@@ -1857,8 +1857,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Jessica2 }
+ .partySize = ARRAY_COUNT(sParty_Jessica2),
+ .party = {.NoItemCustomMoves = sParty_Jessica2},
},
[TRAINER_JESSICA_3] =
@@ -1871,8 +1871,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Jessica3 }
+ .partySize = ARRAY_COUNT(sParty_Jessica3),
+ .party = {.NoItemCustomMoves = sParty_Jessica3},
},
[TRAINER_JESSICA_4] =
@@ -1885,8 +1885,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Jessica4 }
+ .partySize = ARRAY_COUNT(sParty_Jessica4),
+ .party = {.NoItemCustomMoves = sParty_Jessica4},
},
[TRAINER_JESSICA_5] =
@@ -1899,8 +1899,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Jessica5 }
+ .partySize = ARRAY_COUNT(sParty_Jessica5),
+ .party = {.NoItemCustomMoves = sParty_Jessica5},
},
[TRAINER_WINSTON_1] =
@@ -1913,8 +1913,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Winston1 }
+ .partySize = ARRAY_COUNT(sParty_Winston1),
+ .party = {.ItemDefaultMoves = sParty_Winston1},
},
[TRAINER_MOLLIE] =
@@ -1927,8 +1927,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Mollie }
+ .partySize = ARRAY_COUNT(sParty_Mollie),
+ .party = {.NoItemDefaultMoves = sParty_Mollie},
},
[TRAINER_GARRET] =
@@ -1941,8 +1941,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Garret }
+ .partySize = ARRAY_COUNT(sParty_Garret),
+ .party = {.ItemDefaultMoves = sParty_Garret},
},
[TRAINER_WINSTON_2] =
@@ -1955,8 +1955,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Winston2 }
+ .partySize = ARRAY_COUNT(sParty_Winston2),
+ .party = {.ItemDefaultMoves = sParty_Winston2},
},
[TRAINER_WINSTON_3] =
@@ -1969,8 +1969,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Winston3 }
+ .partySize = ARRAY_COUNT(sParty_Winston3),
+ .party = {.ItemDefaultMoves = sParty_Winston3},
},
[TRAINER_WINSTON_4] =
@@ -1983,8 +1983,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Winston4 }
+ .partySize = ARRAY_COUNT(sParty_Winston4),
+ .party = {.ItemDefaultMoves = sParty_Winston4},
},
[TRAINER_WINSTON_5] =
@@ -1997,8 +1997,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Winston5 }
+ .partySize = ARRAY_COUNT(sParty_Winston5),
+ .party = {.ItemCustomMoves = sParty_Winston5},
},
[TRAINER_STEVE_1] =
@@ -2011,8 +2011,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Steve1 }
+ .partySize = ARRAY_COUNT(sParty_Steve1),
+ .party = {.NoItemDefaultMoves = sParty_Steve1},
},
[TRAINER_THALIA_1] =
@@ -2025,8 +2025,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Thalia1 }
+ .partySize = ARRAY_COUNT(sParty_Thalia1),
+ .party = {.NoItemDefaultMoves = sParty_Thalia1},
},
[TRAINER_MARK] =
@@ -2039,8 +2039,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Mark }
+ .partySize = ARRAY_COUNT(sParty_Mark),
+ .party = {.NoItemDefaultMoves = sParty_Mark},
},
[TRAINER_GRUNT_24] =
@@ -2053,8 +2053,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt24 }
+ .partySize = ARRAY_COUNT(sParty_Grunt24),
+ .party = {.NoItemDefaultMoves = sParty_Grunt24},
},
[TRAINER_STEVE_2] =
@@ -2067,8 +2067,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Steve2 }
+ .partySize = ARRAY_COUNT(sParty_Steve2),
+ .party = {.NoItemDefaultMoves = sParty_Steve2},
},
[TRAINER_STEVE_3] =
@@ -2081,8 +2081,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Steve3 }
+ .partySize = ARRAY_COUNT(sParty_Steve3),
+ .party = {.NoItemDefaultMoves = sParty_Steve3},
},
[TRAINER_STEVE_4] =
@@ -2095,8 +2095,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Steve4 }
+ .partySize = ARRAY_COUNT(sParty_Steve4),
+ .party = {.NoItemDefaultMoves = sParty_Steve4},
},
[TRAINER_STEVE_5] =
@@ -2109,8 +2109,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Steve5 }
+ .partySize = ARRAY_COUNT(sParty_Steve5),
+ .party = {.NoItemDefaultMoves = sParty_Steve5},
},
[TRAINER_LUIS] =
@@ -2123,8 +2123,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Luis }
+ .partySize = ARRAY_COUNT(sParty_Luis),
+ .party = {.NoItemDefaultMoves = sParty_Luis},
},
[TRAINER_DOMINIK] =
@@ -2137,8 +2137,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dominik }
+ .partySize = ARRAY_COUNT(sParty_Dominik),
+ .party = {.NoItemDefaultMoves = sParty_Dominik},
},
[TRAINER_DOUGLAS] =
@@ -2151,8 +2151,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Douglas }
+ .partySize = ARRAY_COUNT(sParty_Douglas),
+ .party = {.NoItemDefaultMoves = sParty_Douglas},
},
[TRAINER_DARRIN] =
@@ -2165,8 +2165,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Darrin }
+ .partySize = ARRAY_COUNT(sParty_Darrin),
+ .party = {.NoItemDefaultMoves = sParty_Darrin},
},
[TRAINER_TONY_1] =
@@ -2179,8 +2179,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tony1 }
+ .partySize = ARRAY_COUNT(sParty_Tony1),
+ .party = {.NoItemDefaultMoves = sParty_Tony1},
},
[TRAINER_JEROME] =
@@ -2193,8 +2193,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jerome }
+ .partySize = ARRAY_COUNT(sParty_Jerome),
+ .party = {.NoItemDefaultMoves = sParty_Jerome},
},
[TRAINER_MATTHEW] =
@@ -2207,8 +2207,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Matthew }
+ .partySize = ARRAY_COUNT(sParty_Matthew),
+ .party = {.NoItemDefaultMoves = sParty_Matthew},
},
[TRAINER_DAVID] =
@@ -2221,8 +2221,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_David }
+ .partySize = ARRAY_COUNT(sParty_David),
+ .party = {.NoItemDefaultMoves = sParty_David},
},
[TRAINER_SPENCER] =
@@ -2235,8 +2235,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Spencer }
+ .partySize = ARRAY_COUNT(sParty_Spencer),
+ .party = {.NoItemDefaultMoves = sParty_Spencer},
},
[TRAINER_ROLAND] =
@@ -2249,8 +2249,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Roland }
+ .partySize = ARRAY_COUNT(sParty_Roland),
+ .party = {.NoItemDefaultMoves = sParty_Roland},
},
[TRAINER_NOLEN] =
@@ -2263,8 +2263,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nolen }
+ .partySize = ARRAY_COUNT(sParty_Nolen),
+ .party = {.NoItemDefaultMoves = sParty_Nolen},
},
[TRAINER_STAN] =
@@ -2277,8 +2277,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Stan }
+ .partySize = ARRAY_COUNT(sParty_Stan),
+ .party = {.NoItemDefaultMoves = sParty_Stan},
},
[TRAINER_BARRY] =
@@ -2291,8 +2291,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Barry }
+ .partySize = ARRAY_COUNT(sParty_Barry),
+ .party = {.NoItemDefaultMoves = sParty_Barry},
},
[TRAINER_DEAN] =
@@ -2305,8 +2305,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dean }
+ .partySize = ARRAY_COUNT(sParty_Dean),
+ .party = {.NoItemDefaultMoves = sParty_Dean},
},
[TRAINER_RODNEY] =
@@ -2319,8 +2319,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Rodney }
+ .partySize = ARRAY_COUNT(sParty_Rodney),
+ .party = {.NoItemDefaultMoves = sParty_Rodney},
},
[TRAINER_RICHARD] =
@@ -2333,8 +2333,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Richard }
+ .partySize = ARRAY_COUNT(sParty_Richard),
+ .party = {.NoItemDefaultMoves = sParty_Richard},
},
[TRAINER_HERMAN] =
@@ -2347,8 +2347,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Herman }
+ .partySize = ARRAY_COUNT(sParty_Herman),
+ .party = {.NoItemDefaultMoves = sParty_Herman},
},
[TRAINER_SANTIAGO] =
@@ -2361,8 +2361,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Santiago }
+ .partySize = ARRAY_COUNT(sParty_Santiago),
+ .party = {.NoItemDefaultMoves = sParty_Santiago},
},
[TRAINER_GILBERT] =
@@ -2375,8 +2375,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Gilbert }
+ .partySize = ARRAY_COUNT(sParty_Gilbert),
+ .party = {.NoItemDefaultMoves = sParty_Gilbert},
},
[TRAINER_FRANKLIN] =
@@ -2389,8 +2389,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Franklin }
+ .partySize = ARRAY_COUNT(sParty_Franklin),
+ .party = {.NoItemDefaultMoves = sParty_Franklin},
},
[TRAINER_KEVIN] =
@@ -2403,8 +2403,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kevin }
+ .partySize = ARRAY_COUNT(sParty_Kevin),
+ .party = {.NoItemDefaultMoves = sParty_Kevin},
},
[TRAINER_JACK] =
@@ -2417,8 +2417,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jack }
+ .partySize = ARRAY_COUNT(sParty_Jack),
+ .party = {.NoItemDefaultMoves = sParty_Jack},
},
[TRAINER_DUDLEY] =
@@ -2431,8 +2431,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dudley }
+ .partySize = ARRAY_COUNT(sParty_Dudley),
+ .party = {.NoItemDefaultMoves = sParty_Dudley},
},
[TRAINER_CHAD] =
@@ -2445,8 +2445,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Chad }
+ .partySize = ARRAY_COUNT(sParty_Chad),
+ .party = {.NoItemDefaultMoves = sParty_Chad},
},
[TRAINER_TONY_2] =
@@ -2459,8 +2459,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tony2 }
+ .partySize = ARRAY_COUNT(sParty_Tony2),
+ .party = {.NoItemDefaultMoves = sParty_Tony2},
},
[TRAINER_TONY_3] =
@@ -2473,8 +2473,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tony3 }
+ .partySize = ARRAY_COUNT(sParty_Tony3),
+ .party = {.NoItemDefaultMoves = sParty_Tony3},
},
[TRAINER_TONY_4] =
@@ -2487,8 +2487,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tony4 }
+ .partySize = ARRAY_COUNT(sParty_Tony4),
+ .party = {.NoItemDefaultMoves = sParty_Tony4},
},
[TRAINER_TONY_5] =
@@ -2501,8 +2501,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tony5 }
+ .partySize = ARRAY_COUNT(sParty_Tony5),
+ .party = {.NoItemDefaultMoves = sParty_Tony5},
},
[TRAINER_TAKAO] =
@@ -2515,8 +2515,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Takao }
+ .partySize = ARRAY_COUNT(sParty_Takao),
+ .party = {.NoItemDefaultMoves = sParty_Takao},
},
[TRAINER_HITOSHI] =
@@ -2529,8 +2529,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Hitoshi }
+ .partySize = ARRAY_COUNT(sParty_Hitoshi),
+ .party = {.NoItemDefaultMoves = sParty_Hitoshi},
},
[TRAINER_KIYO] =
@@ -2543,8 +2543,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kiyo }
+ .partySize = ARRAY_COUNT(sParty_Kiyo),
+ .party = {.NoItemDefaultMoves = sParty_Kiyo},
},
[TRAINER_KOICHI] =
@@ -2557,8 +2557,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Koichi }
+ .partySize = ARRAY_COUNT(sParty_Koichi),
+ .party = {.NoItemDefaultMoves = sParty_Koichi},
},
[TRAINER_NOB_1] =
@@ -2571,8 +2571,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nob1 }
+ .partySize = ARRAY_COUNT(sParty_Nob1),
+ .party = {.NoItemDefaultMoves = sParty_Nob1},
},
[TRAINER_NOB_2] =
@@ -2585,8 +2585,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nob2 }
+ .partySize = ARRAY_COUNT(sParty_Nob2),
+ .party = {.NoItemDefaultMoves = sParty_Nob2},
},
[TRAINER_NOB_3] =
@@ -2599,8 +2599,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nob3 }
+ .partySize = ARRAY_COUNT(sParty_Nob3),
+ .party = {.NoItemDefaultMoves = sParty_Nob3},
},
[TRAINER_NOB_4] =
@@ -2613,8 +2613,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Nob4 }
+ .partySize = ARRAY_COUNT(sParty_Nob4),
+ .party = {.NoItemDefaultMoves = sParty_Nob4},
},
[TRAINER_NOB_5] =
@@ -2627,8 +2627,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.ItemDefaultMoves = sParty_Nob5 }
+ .partySize = ARRAY_COUNT(sParty_Nob5),
+ .party = {.ItemDefaultMoves = sParty_Nob5},
},
[TRAINER_YUJI] =
@@ -2641,8 +2641,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Yuji }
+ .partySize = ARRAY_COUNT(sParty_Yuji),
+ .party = {.NoItemDefaultMoves = sParty_Yuji},
},
[TRAINER_DAISUKE] =
@@ -2655,8 +2655,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Daisuke }
+ .partySize = ARRAY_COUNT(sParty_Daisuke),
+ .party = {.NoItemDefaultMoves = sParty_Daisuke},
},
[TRAINER_ATSUSHI] =
@@ -2669,8 +2669,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Atsushi }
+ .partySize = ARRAY_COUNT(sParty_Atsushi),
+ .party = {.NoItemDefaultMoves = sParty_Atsushi},
},
[TRAINER_KIRK] =
@@ -2683,8 +2683,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Kirk }
+ .partySize = ARRAY_COUNT(sParty_Kirk),
+ .party = {.NoItemCustomMoves = sParty_Kirk},
},
[TRAINER_GRUNT_25] =
@@ -2697,8 +2697,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt25 }
+ .partySize = ARRAY_COUNT(sParty_Grunt25),
+ .party = {.NoItemDefaultMoves = sParty_Grunt25},
},
[TRAINER_GRUNT_26] =
@@ -2711,8 +2711,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt26 }
+ .partySize = ARRAY_COUNT(sParty_Grunt26),
+ .party = {.NoItemDefaultMoves = sParty_Grunt26},
},
[TRAINER_SHAWN] =
@@ -2725,8 +2725,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shawn }
+ .partySize = ARRAY_COUNT(sParty_Shawn),
+ .party = {.NoItemDefaultMoves = sParty_Shawn},
},
[TRAINER_FERNANDO_1] =
@@ -2739,8 +2739,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Fernando1 }
+ .partySize = ARRAY_COUNT(sParty_Fernando1),
+ .party = {.NoItemDefaultMoves = sParty_Fernando1},
},
[TRAINER_DALTON_1] =
@@ -2753,8 +2753,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Dalton1 }
+ .partySize = ARRAY_COUNT(sParty_Dalton1),
+ .party = {.NoItemDefaultMoves = sParty_Dalton1},
},
[TRAINER_DALTON_2] =
@@ -2767,8 +2767,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dalton2 }
+ .partySize = ARRAY_COUNT(sParty_Dalton2),
+ .party = {.NoItemDefaultMoves = sParty_Dalton2},
},
[TRAINER_DALTON_3] =
@@ -2781,8 +2781,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dalton3 }
+ .partySize = ARRAY_COUNT(sParty_Dalton3),
+ .party = {.NoItemDefaultMoves = sParty_Dalton3},
},
[TRAINER_DALTON_4] =
@@ -2795,8 +2795,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dalton4 }
+ .partySize = ARRAY_COUNT(sParty_Dalton4),
+ .party = {.NoItemDefaultMoves = sParty_Dalton4},
},
[TRAINER_DALTON_5] =
@@ -2809,8 +2809,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dalton5 }
+ .partySize = ARRAY_COUNT(sParty_Dalton5),
+ .party = {.NoItemDefaultMoves = sParty_Dalton5},
},
[TRAINER_COLE] =
@@ -2823,8 +2823,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Cole }
+ .partySize = ARRAY_COUNT(sParty_Cole),
+ .party = {.NoItemDefaultMoves = sParty_Cole},
},
[TRAINER_JEFF] =
@@ -2837,8 +2837,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jeff }
+ .partySize = ARRAY_COUNT(sParty_Jeff),
+ .party = {.NoItemDefaultMoves = sParty_Jeff},
},
[TRAINER_AXLE] =
@@ -2851,8 +2851,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Axle }
+ .partySize = ARRAY_COUNT(sParty_Axle),
+ .party = {.NoItemDefaultMoves = sParty_Axle},
},
[TRAINER_JACE] =
@@ -2865,8 +2865,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jace }
+ .partySize = ARRAY_COUNT(sParty_Jace),
+ .party = {.NoItemDefaultMoves = sParty_Jace},
},
[TRAINER_KEEGAN] =
@@ -2879,8 +2879,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Keegan }
+ .partySize = ARRAY_COUNT(sParty_Keegan),
+ .party = {.NoItemDefaultMoves = sParty_Keegan},
},
[TRAINER_BERNIE_1] =
@@ -2893,8 +2893,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bernie1 }
+ .partySize = ARRAY_COUNT(sParty_Bernie1),
+ .party = {.NoItemDefaultMoves = sParty_Bernie1},
},
[TRAINER_BERNIE_2] =
@@ -2907,8 +2907,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bernie2 }
+ .partySize = ARRAY_COUNT(sParty_Bernie2),
+ .party = {.NoItemDefaultMoves = sParty_Bernie2},
},
[TRAINER_BERNIE_3] =
@@ -2921,8 +2921,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bernie3 }
+ .partySize = ARRAY_COUNT(sParty_Bernie3),
+ .party = {.NoItemDefaultMoves = sParty_Bernie3},
},
[TRAINER_BERNIE_4] =
@@ -2935,8 +2935,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bernie4 }
+ .partySize = ARRAY_COUNT(sParty_Bernie4),
+ .party = {.NoItemDefaultMoves = sParty_Bernie4},
},
[TRAINER_BERNIE_5] =
@@ -2949,8 +2949,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bernie5 }
+ .partySize = ARRAY_COUNT(sParty_Bernie5),
+ .party = {.NoItemDefaultMoves = sParty_Bernie5},
},
[TRAINER_DREW] =
@@ -2963,8 +2963,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Drew }
+ .partySize = ARRAY_COUNT(sParty_Drew),
+ .party = {.NoItemCustomMoves = sParty_Drew},
},
[TRAINER_BEAU] =
@@ -2977,8 +2977,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Beau }
+ .partySize = ARRAY_COUNT(sParty_Beau),
+ .party = {.NoItemCustomMoves = sParty_Beau},
},
[TRAINER_LARRY] =
@@ -2991,8 +2991,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Larry }
+ .partySize = ARRAY_COUNT(sParty_Larry),
+ .party = {.NoItemDefaultMoves = sParty_Larry},
},
[TRAINER_SHANE] =
@@ -3005,8 +3005,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shane }
+ .partySize = ARRAY_COUNT(sParty_Shane),
+ .party = {.NoItemDefaultMoves = sParty_Shane},
},
[TRAINER_JUSTIN] =
@@ -3019,8 +3019,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Justin }
+ .partySize = ARRAY_COUNT(sParty_Justin),
+ .party = {.NoItemDefaultMoves = sParty_Justin},
},
[TRAINER_ETHAN_1] =
@@ -3033,8 +3033,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ethan1 }
+ .partySize = ARRAY_COUNT(sParty_Ethan1),
+ .party = {.NoItemDefaultMoves = sParty_Ethan1},
},
[TRAINER_AUTUMN] =
@@ -3047,8 +3047,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Autumn }
+ .partySize = ARRAY_COUNT(sParty_Autumn),
+ .party = {.NoItemDefaultMoves = sParty_Autumn},
},
[TRAINER_TRAVIS] =
@@ -3061,8 +3061,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Travis }
+ .partySize = ARRAY_COUNT(sParty_Travis),
+ .party = {.NoItemDefaultMoves = sParty_Travis},
},
[TRAINER_ETHAN_2] =
@@ -3075,8 +3075,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ethan2 }
+ .partySize = ARRAY_COUNT(sParty_Ethan2),
+ .party = {.NoItemDefaultMoves = sParty_Ethan2},
},
[TRAINER_ETHAN_3] =
@@ -3089,8 +3089,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ethan3 }
+ .partySize = ARRAY_COUNT(sParty_Ethan3),
+ .party = {.NoItemDefaultMoves = sParty_Ethan3},
},
[TRAINER_ETHAN_4] =
@@ -3103,8 +3103,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ethan4 }
+ .partySize = ARRAY_COUNT(sParty_Ethan4),
+ .party = {.NoItemDefaultMoves = sParty_Ethan4},
},
[TRAINER_ETHAN_5] =
@@ -3117,8 +3117,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ethan5 }
+ .partySize = ARRAY_COUNT(sParty_Ethan5),
+ .party = {.NoItemDefaultMoves = sParty_Ethan5},
},
[TRAINER_BRENT] =
@@ -3131,8 +3131,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brent }
+ .partySize = ARRAY_COUNT(sParty_Brent),
+ .party = {.NoItemDefaultMoves = sParty_Brent},
},
[TRAINER_DONALD] =
@@ -3145,8 +3145,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Donald }
+ .partySize = ARRAY_COUNT(sParty_Donald),
+ .party = {.NoItemDefaultMoves = sParty_Donald},
},
[TRAINER_TAYLOR] =
@@ -3159,8 +3159,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Taylor }
+ .partySize = ARRAY_COUNT(sParty_Taylor),
+ .party = {.NoItemDefaultMoves = sParty_Taylor},
},
[TRAINER_JEFFREY_1] =
@@ -3173,8 +3173,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jeffrey1 }
+ .partySize = ARRAY_COUNT(sParty_Jeffrey1),
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey1},
},
[TRAINER_DEREK] =
@@ -3187,8 +3187,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Derek }
+ .partySize = ARRAY_COUNT(sParty_Derek),
+ .party = {.NoItemDefaultMoves = sParty_Derek},
},
[TRAINER_JEFFREY_2] =
@@ -3201,8 +3201,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jeffrey2 }
+ .partySize = ARRAY_COUNT(sParty_Jeffrey2),
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey2},
},
[TRAINER_JEFFREY_3] =
@@ -3215,8 +3215,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jeffrey3 }
+ .partySize = ARRAY_COUNT(sParty_Jeffrey3),
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey3},
},
[TRAINER_JEFFREY_4] =
@@ -3229,8 +3229,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Jeffrey4 }
+ .partySize = ARRAY_COUNT(sParty_Jeffrey4),
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey4},
},
[TRAINER_JEFFREY_5] =
@@ -3243,8 +3243,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 5,
- .party = {.ItemDefaultMoves = sParty_Jeffrey5 }
+ .partySize = ARRAY_COUNT(sParty_Jeffrey5),
+ .party = {.ItemDefaultMoves = sParty_Jeffrey5},
},
[TRAINER_EDWARD] =
@@ -3257,8 +3257,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Edward }
+ .partySize = ARRAY_COUNT(sParty_Edward),
+ .party = {.NoItemCustomMoves = sParty_Edward},
},
[TRAINER_PRESTON] =
@@ -3271,8 +3271,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Preston }
+ .partySize = ARRAY_COUNT(sParty_Preston),
+ .party = {.NoItemDefaultMoves = sParty_Preston},
},
[TRAINER_VIRGIL] =
@@ -3285,8 +3285,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Virgil }
+ .partySize = ARRAY_COUNT(sParty_Virgil),
+ .party = {.NoItemDefaultMoves = sParty_Virgil},
},
[TRAINER_BLAKE] =
@@ -3299,8 +3299,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Blake }
+ .partySize = ARRAY_COUNT(sParty_Blake),
+ .party = {.NoItemDefaultMoves = sParty_Blake},
},
[TRAINER_WILLIAM] =
@@ -3313,8 +3313,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_William }
+ .partySize = ARRAY_COUNT(sParty_William),
+ .party = {.NoItemDefaultMoves = sParty_William},
},
[TRAINER_JOSHUA] =
@@ -3327,8 +3327,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Joshua }
+ .partySize = ARRAY_COUNT(sParty_Joshua),
+ .party = {.NoItemDefaultMoves = sParty_Joshua},
},
[TRAINER_CAMERON_1] =
@@ -3341,8 +3341,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Cameron1 }
+ .partySize = ARRAY_COUNT(sParty_Cameron1),
+ .party = {.NoItemDefaultMoves = sParty_Cameron1},
},
[TRAINER_CAMERON_2] =
@@ -3355,8 +3355,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cameron2 }
+ .partySize = ARRAY_COUNT(sParty_Cameron2),
+ .party = {.NoItemDefaultMoves = sParty_Cameron2},
},
[TRAINER_CAMERON_3] =
@@ -3369,8 +3369,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cameron3 }
+ .partySize = ARRAY_COUNT(sParty_Cameron3),
+ .party = {.NoItemDefaultMoves = sParty_Cameron3},
},
[TRAINER_CAMERON_4] =
@@ -3383,8 +3383,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cameron4 }
+ .partySize = ARRAY_COUNT(sParty_Cameron4),
+ .party = {.NoItemDefaultMoves = sParty_Cameron4},
},
[TRAINER_CAMERON_5] =
@@ -3397,8 +3397,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cameron5 }
+ .partySize = ARRAY_COUNT(sParty_Cameron5),
+ .party = {.NoItemDefaultMoves = sParty_Cameron5},
},
[TRAINER_JACLYN] =
@@ -3411,8 +3411,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Jaclyn }
+ .partySize = ARRAY_COUNT(sParty_Jaclyn),
+ .party = {.NoItemCustomMoves = sParty_Jaclyn},
},
[TRAINER_HANNAH] =
@@ -3425,8 +3425,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Hannah }
+ .partySize = ARRAY_COUNT(sParty_Hannah),
+ .party = {.NoItemDefaultMoves = sParty_Hannah},
},
[TRAINER_SAMANTHA] =
@@ -3439,8 +3439,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Samantha }
+ .partySize = ARRAY_COUNT(sParty_Samantha),
+ .party = {.NoItemDefaultMoves = sParty_Samantha},
},
[TRAINER_MAURA] =
@@ -3453,8 +3453,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maura }
+ .partySize = ARRAY_COUNT(sParty_Maura),
+ .party = {.NoItemDefaultMoves = sParty_Maura},
},
[TRAINER_KAYLA] =
@@ -3467,8 +3467,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Kayla }
+ .partySize = ARRAY_COUNT(sParty_Kayla),
+ .party = {.NoItemDefaultMoves = sParty_Kayla},
},
[TRAINER_ALEXIS] =
@@ -3481,8 +3481,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alexis }
+ .partySize = ARRAY_COUNT(sParty_Alexis),
+ .party = {.NoItemDefaultMoves = sParty_Alexis},
},
[TRAINER_JACKI_1] =
@@ -3495,8 +3495,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jacki1 }
+ .partySize = ARRAY_COUNT(sParty_Jacki1),
+ .party = {.NoItemDefaultMoves = sParty_Jacki1},
},
[TRAINER_JACKI_2] =
@@ -3509,8 +3509,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jacki2 }
+ .partySize = ARRAY_COUNT(sParty_Jacki2),
+ .party = {.NoItemDefaultMoves = sParty_Jacki2},
},
[TRAINER_JACKI_3] =
@@ -3523,8 +3523,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jacki3 }
+ .partySize = ARRAY_COUNT(sParty_Jacki3),
+ .party = {.NoItemDefaultMoves = sParty_Jacki3},
},
[TRAINER_JACKI_4] =
@@ -3537,8 +3537,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jacki4 }
+ .partySize = ARRAY_COUNT(sParty_Jacki4),
+ .party = {.NoItemDefaultMoves = sParty_Jacki4},
},
[TRAINER_JACKI_5] =
@@ -3551,8 +3551,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jacki5 }
+ .partySize = ARRAY_COUNT(sParty_Jacki5),
+ .party = {.NoItemDefaultMoves = sParty_Jacki5},
},
[TRAINER_WALTER_1] =
@@ -3565,8 +3565,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Walter1 }
+ .partySize = ARRAY_COUNT(sParty_Walter1),
+ .party = {.NoItemDefaultMoves = sParty_Walter1},
},
[TRAINER_MICAH] =
@@ -3579,8 +3579,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Micah }
+ .partySize = ARRAY_COUNT(sParty_Micah),
+ .party = {.NoItemDefaultMoves = sParty_Micah},
},
[TRAINER_THOMAS] =
@@ -3593,8 +3593,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Thomas }
+ .partySize = ARRAY_COUNT(sParty_Thomas),
+ .party = {.NoItemDefaultMoves = sParty_Thomas},
},
[TRAINER_WALTER_2] =
@@ -3607,8 +3607,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Walter2 }
+ .partySize = ARRAY_COUNT(sParty_Walter2),
+ .party = {.NoItemDefaultMoves = sParty_Walter2},
},
[TRAINER_WALTER_3] =
@@ -3621,8 +3621,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Walter3 }
+ .partySize = ARRAY_COUNT(sParty_Walter3),
+ .party = {.NoItemCustomMoves = sParty_Walter3},
},
[TRAINER_WALTER_4] =
@@ -3635,8 +3635,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Walter4 }
+ .partySize = ARRAY_COUNT(sParty_Walter4),
+ .party = {.NoItemCustomMoves = sParty_Walter4},
},
[TRAINER_WALTER_5] =
@@ -3649,8 +3649,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Walter5 }
+ .partySize = ARRAY_COUNT(sParty_Walter5),
+ .party = {.NoItemCustomMoves = sParty_Walter5},
},
[TRAINER_SIDNEY] =
@@ -3663,8 +3663,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Sidney }
+ .partySize = ARRAY_COUNT(sParty_Sidney),
+ .party = {.ItemCustomMoves = sParty_Sidney},
},
[TRAINER_PHOEBE] =
@@ -3677,8 +3677,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Phoebe }
+ .partySize = ARRAY_COUNT(sParty_Phoebe),
+ .party = {.ItemCustomMoves = sParty_Phoebe},
},
[TRAINER_GLACIA] =
@@ -3691,8 +3691,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Glacia }
+ .partySize = ARRAY_COUNT(sParty_Glacia),
+ .party = {.ItemCustomMoves = sParty_Glacia},
},
[TRAINER_DRAKE] =
@@ -3705,8 +3705,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Drake }
+ .partySize = ARRAY_COUNT(sParty_Drake),
+ .party = {.ItemCustomMoves = sParty_Drake},
},
[TRAINER_ROXANNE_1] =
@@ -3719,8 +3719,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.ItemCustomMoves = sParty_Roxanne1 }
+ .partySize = ARRAY_COUNT(sParty_Roxanne1),
+ .party = {.ItemCustomMoves = sParty_Roxanne1},
},
[TRAINER_BRAWLY_1] =
@@ -3733,8 +3733,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.ItemCustomMoves = sParty_Brawly1 }
+ .partySize = ARRAY_COUNT(sParty_Brawly1),
+ .party = {.ItemCustomMoves = sParty_Brawly1},
},
[TRAINER_WATTSON_1] =
@@ -3747,8 +3747,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Wattson1 }
+ .partySize = ARRAY_COUNT(sParty_Wattson1),
+ .party = {.ItemCustomMoves = sParty_Wattson1},
},
[TRAINER_FLANNERY_1] =
@@ -3761,8 +3761,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Flannery1 }
+ .partySize = ARRAY_COUNT(sParty_Flannery1),
+ .party = {.ItemCustomMoves = sParty_Flannery1},
},
[TRAINER_NORMAN_1] =
@@ -3775,8 +3775,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Norman1 }
+ .partySize = ARRAY_COUNT(sParty_Norman1),
+ .party = {.ItemCustomMoves = sParty_Norman1},
},
[TRAINER_WINONA_1] =
@@ -3789,8 +3789,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Winona1 }
+ .partySize = ARRAY_COUNT(sParty_Winona1),
+ .party = {.ItemCustomMoves = sParty_Winona1},
},
[TRAINER_TATE_AND_LIZA_1] =
@@ -3803,8 +3803,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_TateAndLiza1 }
+ .partySize = ARRAY_COUNT(sParty_TateAndLiza1),
+ .party = {.ItemCustomMoves = sParty_TateAndLiza1},
},
[TRAINER_JUAN_1] =
@@ -3817,8 +3817,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Juan1 }
+ .partySize = ARRAY_COUNT(sParty_Juan1),
+ .party = {.ItemCustomMoves = sParty_Juan1},
},
[TRAINER_JERRY_1] =
@@ -3831,8 +3831,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jerry1 }
+ .partySize = ARRAY_COUNT(sParty_Jerry1),
+ .party = {.NoItemDefaultMoves = sParty_Jerry1},
},
[TRAINER_TED] =
@@ -3845,8 +3845,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Ted }
+ .partySize = ARRAY_COUNT(sParty_Ted),
+ .party = {.NoItemDefaultMoves = sParty_Ted},
},
[TRAINER_PAUL] =
@@ -3859,8 +3859,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Paul }
+ .partySize = ARRAY_COUNT(sParty_Paul),
+ .party = {.NoItemDefaultMoves = sParty_Paul},
},
[TRAINER_JERRY_2] =
@@ -3873,8 +3873,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jerry2 }
+ .partySize = ARRAY_COUNT(sParty_Jerry2),
+ .party = {.NoItemDefaultMoves = sParty_Jerry2},
},
[TRAINER_JERRY_3] =
@@ -3887,8 +3887,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jerry3 }
+ .partySize = ARRAY_COUNT(sParty_Jerry3),
+ .party = {.NoItemDefaultMoves = sParty_Jerry3},
},
[TRAINER_JERRY_4] =
@@ -3901,8 +3901,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jerry4 }
+ .partySize = ARRAY_COUNT(sParty_Jerry4),
+ .party = {.NoItemDefaultMoves = sParty_Jerry4},
},
[TRAINER_JERRY_5] =
@@ -3915,8 +3915,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jerry5 }
+ .partySize = ARRAY_COUNT(sParty_Jerry5),
+ .party = {.NoItemDefaultMoves = sParty_Jerry5},
},
[TRAINER_KAREN_1] =
@@ -3929,8 +3929,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Karen1 }
+ .partySize = ARRAY_COUNT(sParty_Karen1),
+ .party = {.NoItemDefaultMoves = sParty_Karen1},
},
[TRAINER_GEORGIA] =
@@ -3943,8 +3943,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Georgia }
+ .partySize = ARRAY_COUNT(sParty_Georgia),
+ .party = {.NoItemDefaultMoves = sParty_Georgia},
},
[TRAINER_KAREN_2] =
@@ -3957,8 +3957,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Karen2 }
+ .partySize = ARRAY_COUNT(sParty_Karen2),
+ .party = {.NoItemDefaultMoves = sParty_Karen2},
},
[TRAINER_KAREN_3] =
@@ -3971,8 +3971,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Karen3 }
+ .partySize = ARRAY_COUNT(sParty_Karen3),
+ .party = {.NoItemDefaultMoves = sParty_Karen3},
},
[TRAINER_KAREN_4] =
@@ -3985,8 +3985,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Karen4 }
+ .partySize = ARRAY_COUNT(sParty_Karen4),
+ .party = {.NoItemDefaultMoves = sParty_Karen4},
},
[TRAINER_KAREN_5] =
@@ -3999,8 +3999,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Karen5 }
+ .partySize = ARRAY_COUNT(sParty_Karen5),
+ .party = {.NoItemDefaultMoves = sParty_Karen5},
},
[TRAINER_KATE_AND_JOY] =
@@ -4013,8 +4013,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_KateAndJoy }
+ .partySize = ARRAY_COUNT(sParty_KateAndJoy),
+ .party = {.NoItemCustomMoves = sParty_KateAndJoy},
},
[TRAINER_ANNA_AND_MEG_1] =
@@ -4027,8 +4027,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AnnaAndMeg1 }
+ .partySize = ARRAY_COUNT(sParty_AnnaAndMeg1),
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg1},
},
[TRAINER_ANNA_AND_MEG_2] =
@@ -4041,8 +4041,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AnnaAndMeg2 }
+ .partySize = ARRAY_COUNT(sParty_AnnaAndMeg2),
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg2},
},
[TRAINER_ANNA_AND_MEG_3] =
@@ -4055,8 +4055,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AnnaAndMeg3 }
+ .partySize = ARRAY_COUNT(sParty_AnnaAndMeg3),
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg3},
},
[TRAINER_ANNA_AND_MEG_4] =
@@ -4069,8 +4069,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AnnaAndMeg4 }
+ .partySize = ARRAY_COUNT(sParty_AnnaAndMeg4),
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg4},
},
[TRAINER_ANNA_AND_MEG_5] =
@@ -4083,8 +4083,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AnnaAndMeg5 }
+ .partySize = ARRAY_COUNT(sParty_AnnaAndMeg5),
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg5},
},
[TRAINER_VICTOR] =
@@ -4097,8 +4097,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Victor }
+ .partySize = ARRAY_COUNT(sParty_Victor),
+ .party = {.ItemDefaultMoves = sParty_Victor},
},
[TRAINER_MIGUEL_1] =
@@ -4111,8 +4111,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Miguel1 }
+ .partySize = ARRAY_COUNT(sParty_Miguel1),
+ .party = {.ItemDefaultMoves = sParty_Miguel1},
},
[TRAINER_COLTON] =
@@ -4125,8 +4125,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Colton }
+ .partySize = ARRAY_COUNT(sParty_Colton),
+ .party = {.ItemCustomMoves = sParty_Colton},
},
[TRAINER_MIGUEL_2] =
@@ -4139,8 +4139,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Miguel2 }
+ .partySize = ARRAY_COUNT(sParty_Miguel2),
+ .party = {.ItemDefaultMoves = sParty_Miguel2},
},
[TRAINER_MIGUEL_3] =
@@ -4153,8 +4153,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Miguel3 }
+ .partySize = ARRAY_COUNT(sParty_Miguel3),
+ .party = {.ItemDefaultMoves = sParty_Miguel3},
},
[TRAINER_MIGUEL_4] =
@@ -4167,8 +4167,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Miguel4 }
+ .partySize = ARRAY_COUNT(sParty_Miguel4),
+ .party = {.ItemDefaultMoves = sParty_Miguel4},
},
[TRAINER_MIGUEL_5] =
@@ -4181,8 +4181,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Miguel5 }
+ .partySize = ARRAY_COUNT(sParty_Miguel5),
+ .party = {.ItemDefaultMoves = sParty_Miguel5},
},
[TRAINER_VICTORIA] =
@@ -4195,8 +4195,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Victoria }
+ .partySize = ARRAY_COUNT(sParty_Victoria),
+ .party = {.ItemDefaultMoves = sParty_Victoria},
},
[TRAINER_VANESSA] =
@@ -4209,8 +4209,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.ItemDefaultMoves = sParty_Vanessa }
+ .partySize = ARRAY_COUNT(sParty_Vanessa),
+ .party = {.ItemDefaultMoves = sParty_Vanessa},
},
[TRAINER_BETHANY] =
@@ -4223,8 +4223,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.ItemDefaultMoves = sParty_Bethany }
+ .partySize = ARRAY_COUNT(sParty_Bethany),
+ .party = {.ItemDefaultMoves = sParty_Bethany},
},
[TRAINER_ISABEL_1] =
@@ -4237,8 +4237,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Isabel1 }
+ .partySize = ARRAY_COUNT(sParty_Isabel1),
+ .party = {.ItemDefaultMoves = sParty_Isabel1},
},
[TRAINER_ISABEL_2] =
@@ -4251,8 +4251,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Isabel2 }
+ .partySize = ARRAY_COUNT(sParty_Isabel2),
+ .party = {.ItemDefaultMoves = sParty_Isabel2},
},
[TRAINER_ISABEL_3] =
@@ -4265,8 +4265,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Isabel3 }
+ .partySize = ARRAY_COUNT(sParty_Isabel3),
+ .party = {.ItemDefaultMoves = sParty_Isabel3},
},
[TRAINER_ISABEL_4] =
@@ -4279,8 +4279,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Isabel4 }
+ .partySize = ARRAY_COUNT(sParty_Isabel4),
+ .party = {.ItemDefaultMoves = sParty_Isabel4},
},
[TRAINER_ISABEL_5] =
@@ -4293,8 +4293,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Isabel5 }
+ .partySize = ARRAY_COUNT(sParty_Isabel5),
+ .party = {.ItemDefaultMoves = sParty_Isabel5},
},
[TRAINER_TIMOTHY_1] =
@@ -4307,8 +4307,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Timothy1 }
+ .partySize = ARRAY_COUNT(sParty_Timothy1),
+ .party = {.NoItemDefaultMoves = sParty_Timothy1},
},
[TRAINER_TIMOTHY_2] =
@@ -4321,8 +4321,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Timothy2 }
+ .partySize = ARRAY_COUNT(sParty_Timothy2),
+ .party = {.NoItemCustomMoves = sParty_Timothy2},
},
[TRAINER_TIMOTHY_3] =
@@ -4335,8 +4335,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Timothy3 }
+ .partySize = ARRAY_COUNT(sParty_Timothy3),
+ .party = {.NoItemCustomMoves = sParty_Timothy3},
},
[TRAINER_TIMOTHY_4] =
@@ -4349,8 +4349,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Timothy4 }
+ .partySize = ARRAY_COUNT(sParty_Timothy4),
+ .party = {.NoItemCustomMoves = sParty_Timothy4},
},
[TRAINER_TIMOTHY_5] =
@@ -4363,8 +4363,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Timothy5 }
+ .partySize = ARRAY_COUNT(sParty_Timothy5),
+ .party = {.NoItemCustomMoves = sParty_Timothy5},
},
[TRAINER_VICKY] =
@@ -4377,8 +4377,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Vicky }
+ .partySize = ARRAY_COUNT(sParty_Vicky),
+ .party = {.NoItemCustomMoves = sParty_Vicky},
},
[TRAINER_SHELBY_1] =
@@ -4391,8 +4391,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelby1 }
+ .partySize = ARRAY_COUNT(sParty_Shelby1),
+ .party = {.NoItemDefaultMoves = sParty_Shelby1},
},
[TRAINER_SHELBY_2] =
@@ -4405,8 +4405,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelby2 }
+ .partySize = ARRAY_COUNT(sParty_Shelby2),
+ .party = {.NoItemDefaultMoves = sParty_Shelby2},
},
[TRAINER_SHELBY_3] =
@@ -4419,8 +4419,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelby3 }
+ .partySize = ARRAY_COUNT(sParty_Shelby3),
+ .party = {.NoItemDefaultMoves = sParty_Shelby3},
},
[TRAINER_SHELBY_4] =
@@ -4433,8 +4433,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelby4 }
+ .partySize = ARRAY_COUNT(sParty_Shelby4),
+ .party = {.NoItemDefaultMoves = sParty_Shelby4},
},
[TRAINER_SHELBY_5] =
@@ -4447,8 +4447,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shelby5 }
+ .partySize = ARRAY_COUNT(sParty_Shelby5),
+ .party = {.NoItemDefaultMoves = sParty_Shelby5},
},
[TRAINER_CALVIN_1] =
@@ -4461,8 +4461,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Calvin1 }
+ .partySize = ARRAY_COUNT(sParty_Calvin1),
+ .party = {.NoItemDefaultMoves = sParty_Calvin1},
},
[TRAINER_BILLY] =
@@ -4475,8 +4475,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Billy }
+ .partySize = ARRAY_COUNT(sParty_Billy),
+ .party = {.NoItemDefaultMoves = sParty_Billy},
},
[TRAINER_JOSH] =
@@ -4489,8 +4489,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Josh }
+ .partySize = ARRAY_COUNT(sParty_Josh),
+ .party = {.NoItemCustomMoves = sParty_Josh},
},
[TRAINER_TOMMY] =
@@ -4503,8 +4503,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tommy }
+ .partySize = ARRAY_COUNT(sParty_Tommy),
+ .party = {.NoItemDefaultMoves = sParty_Tommy},
},
[TRAINER_JOEY] =
@@ -4517,8 +4517,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Joey }
+ .partySize = ARRAY_COUNT(sParty_Joey),
+ .party = {.NoItemDefaultMoves = sParty_Joey},
},
[TRAINER_BEN] =
@@ -4531,8 +4531,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Ben }
+ .partySize = ARRAY_COUNT(sParty_Ben),
+ .party = {.NoItemCustomMoves = sParty_Ben},
},
[TRAINER_QUINCY] =
@@ -4545,8 +4545,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Quincy }
+ .partySize = ARRAY_COUNT(sParty_Quincy),
+ .party = {.NoItemCustomMoves = sParty_Quincy},
},
[TRAINER_KATELYNN] =
@@ -4559,8 +4559,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Katelynn }
+ .partySize = ARRAY_COUNT(sParty_Katelynn),
+ .party = {.NoItemCustomMoves = sParty_Katelynn},
},
[TRAINER_JAYLEN] =
@@ -4573,8 +4573,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jaylen }
+ .partySize = ARRAY_COUNT(sParty_Jaylen),
+ .party = {.NoItemDefaultMoves = sParty_Jaylen},
},
[TRAINER_DILLON] =
@@ -4587,8 +4587,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dillon }
+ .partySize = ARRAY_COUNT(sParty_Dillon),
+ .party = {.NoItemDefaultMoves = sParty_Dillon},
},
[TRAINER_CALVIN_2] =
@@ -4601,8 +4601,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Calvin2 }
+ .partySize = ARRAY_COUNT(sParty_Calvin2),
+ .party = {.NoItemDefaultMoves = sParty_Calvin2},
},
[TRAINER_CALVIN_3] =
@@ -4615,8 +4615,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Calvin3 }
+ .partySize = ARRAY_COUNT(sParty_Calvin3),
+ .party = {.NoItemDefaultMoves = sParty_Calvin3},
},
[TRAINER_CALVIN_4] =
@@ -4629,8 +4629,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Calvin4 }
+ .partySize = ARRAY_COUNT(sParty_Calvin4),
+ .party = {.NoItemDefaultMoves = sParty_Calvin4},
},
[TRAINER_CALVIN_5] =
@@ -4643,8 +4643,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Calvin5 }
+ .partySize = ARRAY_COUNT(sParty_Calvin5),
+ .party = {.NoItemDefaultMoves = sParty_Calvin5},
},
[TRAINER_EDDIE] =
@@ -4657,8 +4657,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Eddie }
+ .partySize = ARRAY_COUNT(sParty_Eddie),
+ .party = {.NoItemDefaultMoves = sParty_Eddie},
},
[TRAINER_ALLEN] =
@@ -4671,8 +4671,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Allen }
+ .partySize = ARRAY_COUNT(sParty_Allen),
+ .party = {.NoItemDefaultMoves = sParty_Allen},
},
[TRAINER_TIMMY] =
@@ -4685,8 +4685,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Timmy }
+ .partySize = ARRAY_COUNT(sParty_Timmy),
+ .party = {.NoItemDefaultMoves = sParty_Timmy},
},
[TRAINER_WALLACE] =
@@ -4699,8 +4699,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Wallace }
+ .partySize = ARRAY_COUNT(sParty_Wallace),
+ .party = {.ItemCustomMoves = sParty_Wallace},
},
[TRAINER_ANDREW] =
@@ -4713,8 +4713,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Andrew }
+ .partySize = ARRAY_COUNT(sParty_Andrew),
+ .party = {.NoItemDefaultMoves = sParty_Andrew},
},
[TRAINER_IVAN] =
@@ -4727,8 +4727,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ivan }
+ .partySize = ARRAY_COUNT(sParty_Ivan),
+ .party = {.NoItemDefaultMoves = sParty_Ivan},
},
[TRAINER_CLAUDE] =
@@ -4741,8 +4741,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Claude }
+ .partySize = ARRAY_COUNT(sParty_Claude),
+ .party = {.NoItemDefaultMoves = sParty_Claude},
},
[TRAINER_ELLIOT_1] =
@@ -4755,8 +4755,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Elliot1 }
+ .partySize = ARRAY_COUNT(sParty_Elliot1),
+ .party = {.NoItemDefaultMoves = sParty_Elliot1},
},
[TRAINER_NED] =
@@ -4769,8 +4769,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Ned }
+ .partySize = ARRAY_COUNT(sParty_Ned),
+ .party = {.NoItemDefaultMoves = sParty_Ned},
},
[TRAINER_DALE] =
@@ -4783,8 +4783,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Dale }
+ .partySize = ARRAY_COUNT(sParty_Dale),
+ .party = {.NoItemDefaultMoves = sParty_Dale},
},
[TRAINER_NOLAN] =
@@ -4797,8 +4797,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nolan }
+ .partySize = ARRAY_COUNT(sParty_Nolan),
+ .party = {.NoItemDefaultMoves = sParty_Nolan},
},
[TRAINER_BARNY] =
@@ -4811,8 +4811,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Barny }
+ .partySize = ARRAY_COUNT(sParty_Barny),
+ .party = {.NoItemDefaultMoves = sParty_Barny},
},
[TRAINER_WADE] =
@@ -4825,8 +4825,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Wade }
+ .partySize = ARRAY_COUNT(sParty_Wade),
+ .party = {.NoItemDefaultMoves = sParty_Wade},
},
[TRAINER_CARTER] =
@@ -4839,8 +4839,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Carter }
+ .partySize = ARRAY_COUNT(sParty_Carter),
+ .party = {.NoItemDefaultMoves = sParty_Carter},
},
[TRAINER_ELLIOT_2] =
@@ -4853,8 +4853,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Elliot2 }
+ .partySize = ARRAY_COUNT(sParty_Elliot2),
+ .party = {.NoItemDefaultMoves = sParty_Elliot2},
},
[TRAINER_ELLIOT_3] =
@@ -4867,8 +4867,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Elliot3 }
+ .partySize = ARRAY_COUNT(sParty_Elliot3),
+ .party = {.NoItemDefaultMoves = sParty_Elliot3},
},
[TRAINER_ELLIOT_4] =
@@ -4881,8 +4881,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Elliot4 }
+ .partySize = ARRAY_COUNT(sParty_Elliot4),
+ .party = {.NoItemDefaultMoves = sParty_Elliot4},
},
[TRAINER_ELLIOT_5] =
@@ -4895,8 +4895,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Elliot5 }
+ .partySize = ARRAY_COUNT(sParty_Elliot5),
+ .party = {.NoItemDefaultMoves = sParty_Elliot5},
},
[TRAINER_RONALD] =
@@ -4909,8 +4909,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Ronald }
+ .partySize = ARRAY_COUNT(sParty_Ronald),
+ .party = {.NoItemDefaultMoves = sParty_Ronald},
},
[TRAINER_JACOB] =
@@ -4923,8 +4923,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jacob }
+ .partySize = ARRAY_COUNT(sParty_Jacob),
+ .party = {.NoItemDefaultMoves = sParty_Jacob},
},
[TRAINER_ANTHONY] =
@@ -4937,8 +4937,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Anthony }
+ .partySize = ARRAY_COUNT(sParty_Anthony),
+ .party = {.NoItemDefaultMoves = sParty_Anthony},
},
[TRAINER_BENJAMIN_1] =
@@ -4951,8 +4951,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Benjamin1 }
+ .partySize = ARRAY_COUNT(sParty_Benjamin1),
+ .party = {.NoItemDefaultMoves = sParty_Benjamin1},
},
[TRAINER_BENJAMIN_2] =
@@ -4965,8 +4965,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Benjamin2 }
+ .partySize = ARRAY_COUNT(sParty_Benjamin2),
+ .party = {.NoItemDefaultMoves = sParty_Benjamin2},
},
[TRAINER_BENJAMIN_3] =
@@ -4979,8 +4979,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Benjamin3 }
+ .partySize = ARRAY_COUNT(sParty_Benjamin3),
+ .party = {.NoItemDefaultMoves = sParty_Benjamin3},
},
[TRAINER_BENJAMIN_4] =
@@ -4993,8 +4993,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Benjamin4 }
+ .partySize = ARRAY_COUNT(sParty_Benjamin4),
+ .party = {.NoItemDefaultMoves = sParty_Benjamin4},
},
[TRAINER_BENJAMIN_5] =
@@ -5007,8 +5007,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Benjamin5 }
+ .partySize = ARRAY_COUNT(sParty_Benjamin5),
+ .party = {.NoItemDefaultMoves = sParty_Benjamin5},
},
[TRAINER_ABIGAIL_1] =
@@ -5021,8 +5021,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Abigail1 }
+ .partySize = ARRAY_COUNT(sParty_Abigail1),
+ .party = {.NoItemDefaultMoves = sParty_Abigail1},
},
[TRAINER_JASMINE] =
@@ -5035,8 +5035,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jasmine }
+ .partySize = ARRAY_COUNT(sParty_Jasmine),
+ .party = {.NoItemDefaultMoves = sParty_Jasmine},
},
[TRAINER_ABIGAIL_2] =
@@ -5049,8 +5049,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Abigail2 }
+ .partySize = ARRAY_COUNT(sParty_Abigail2),
+ .party = {.NoItemDefaultMoves = sParty_Abigail2},
},
[TRAINER_ABIGAIL_3] =
@@ -5063,8 +5063,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Abigail3 }
+ .partySize = ARRAY_COUNT(sParty_Abigail3),
+ .party = {.NoItemDefaultMoves = sParty_Abigail3},
},
[TRAINER_ABIGAIL_4] =
@@ -5077,8 +5077,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Abigail4 }
+ .partySize = ARRAY_COUNT(sParty_Abigail4),
+ .party = {.NoItemDefaultMoves = sParty_Abigail4},
},
[TRAINER_ABIGAIL_5] =
@@ -5091,8 +5091,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Abigail5 }
+ .partySize = ARRAY_COUNT(sParty_Abigail5),
+ .party = {.NoItemDefaultMoves = sParty_Abigail5},
},
[TRAINER_DYLAN_1] =
@@ -5105,8 +5105,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dylan1 }
+ .partySize = ARRAY_COUNT(sParty_Dylan1),
+ .party = {.NoItemDefaultMoves = sParty_Dylan1},
},
[TRAINER_DYLAN_2] =
@@ -5119,8 +5119,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dylan2 }
+ .partySize = ARRAY_COUNT(sParty_Dylan2),
+ .party = {.NoItemDefaultMoves = sParty_Dylan2},
},
[TRAINER_DYLAN_3] =
@@ -5133,8 +5133,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dylan3 }
+ .partySize = ARRAY_COUNT(sParty_Dylan3),
+ .party = {.NoItemDefaultMoves = sParty_Dylan3},
},
[TRAINER_DYLAN_4] =
@@ -5147,8 +5147,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dylan4 }
+ .partySize = ARRAY_COUNT(sParty_Dylan4),
+ .party = {.NoItemDefaultMoves = sParty_Dylan4},
},
[TRAINER_DYLAN_5] =
@@ -5161,8 +5161,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dylan5 }
+ .partySize = ARRAY_COUNT(sParty_Dylan5),
+ .party = {.NoItemDefaultMoves = sParty_Dylan5},
},
[TRAINER_MARIA_1] =
@@ -5175,8 +5175,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maria1 }
+ .partySize = ARRAY_COUNT(sParty_Maria1),
+ .party = {.NoItemDefaultMoves = sParty_Maria1},
},
[TRAINER_MARIA_2] =
@@ -5189,8 +5189,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maria2 }
+ .partySize = ARRAY_COUNT(sParty_Maria2),
+ .party = {.NoItemDefaultMoves = sParty_Maria2},
},
[TRAINER_MARIA_3] =
@@ -5203,8 +5203,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maria3 }
+ .partySize = ARRAY_COUNT(sParty_Maria3),
+ .party = {.NoItemDefaultMoves = sParty_Maria3},
},
[TRAINER_MARIA_4] =
@@ -5217,8 +5217,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maria4 }
+ .partySize = ARRAY_COUNT(sParty_Maria4),
+ .party = {.NoItemDefaultMoves = sParty_Maria4},
},
[TRAINER_MARIA_5] =
@@ -5231,8 +5231,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Maria5 }
+ .partySize = ARRAY_COUNT(sParty_Maria5),
+ .party = {.NoItemDefaultMoves = sParty_Maria5},
},
[TRAINER_CAMDEN] =
@@ -5245,8 +5245,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Camden }
+ .partySize = ARRAY_COUNT(sParty_Camden),
+ .party = {.NoItemDefaultMoves = sParty_Camden},
},
[TRAINER_DEMETRIUS] =
@@ -5259,8 +5259,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Demetrius }
+ .partySize = ARRAY_COUNT(sParty_Demetrius),
+ .party = {.NoItemDefaultMoves = sParty_Demetrius},
},
[TRAINER_ISAIAH_1] =
@@ -5273,8 +5273,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isaiah1 }
+ .partySize = ARRAY_COUNT(sParty_Isaiah1),
+ .party = {.NoItemDefaultMoves = sParty_Isaiah1},
},
[TRAINER_PABLO_1] =
@@ -5287,8 +5287,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Pablo1 }
+ .partySize = ARRAY_COUNT(sParty_Pablo1),
+ .party = {.NoItemDefaultMoves = sParty_Pablo1},
},
[TRAINER_CHASE] =
@@ -5301,8 +5301,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Chase }
+ .partySize = ARRAY_COUNT(sParty_Chase),
+ .party = {.NoItemDefaultMoves = sParty_Chase},
},
[TRAINER_ISAIAH_2] =
@@ -5315,8 +5315,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isaiah2 }
+ .partySize = ARRAY_COUNT(sParty_Isaiah2),
+ .party = {.NoItemDefaultMoves = sParty_Isaiah2},
},
[TRAINER_ISAIAH_3] =
@@ -5329,8 +5329,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isaiah3 }
+ .partySize = ARRAY_COUNT(sParty_Isaiah3),
+ .party = {.NoItemDefaultMoves = sParty_Isaiah3},
},
[TRAINER_ISAIAH_4] =
@@ -5343,8 +5343,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isaiah4 }
+ .partySize = ARRAY_COUNT(sParty_Isaiah4),
+ .party = {.NoItemDefaultMoves = sParty_Isaiah4},
},
[TRAINER_ISAIAH_5] =
@@ -5357,8 +5357,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isaiah5 }
+ .partySize = ARRAY_COUNT(sParty_Isaiah5),
+ .party = {.NoItemDefaultMoves = sParty_Isaiah5},
},
[TRAINER_ISOBEL] =
@@ -5371,8 +5371,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isobel }
+ .partySize = ARRAY_COUNT(sParty_Isobel),
+ .party = {.NoItemDefaultMoves = sParty_Isobel},
},
[TRAINER_DONNY] =
@@ -5385,8 +5385,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Donny }
+ .partySize = ARRAY_COUNT(sParty_Donny),
+ .party = {.NoItemDefaultMoves = sParty_Donny},
},
[TRAINER_TALIA] =
@@ -5399,8 +5399,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Talia }
+ .partySize = ARRAY_COUNT(sParty_Talia),
+ .party = {.NoItemDefaultMoves = sParty_Talia},
},
[TRAINER_KATELYN_1] =
@@ -5413,8 +5413,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Katelyn1 }
+ .partySize = ARRAY_COUNT(sParty_Katelyn1),
+ .party = {.NoItemDefaultMoves = sParty_Katelyn1},
},
[TRAINER_ALLISON] =
@@ -5427,8 +5427,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Allison }
+ .partySize = ARRAY_COUNT(sParty_Allison),
+ .party = {.NoItemDefaultMoves = sParty_Allison},
},
[TRAINER_KATELYN_2] =
@@ -5441,8 +5441,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Katelyn2 }
+ .partySize = ARRAY_COUNT(sParty_Katelyn2),
+ .party = {.NoItemDefaultMoves = sParty_Katelyn2},
},
[TRAINER_KATELYN_3] =
@@ -5455,8 +5455,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Katelyn3 }
+ .partySize = ARRAY_COUNT(sParty_Katelyn3),
+ .party = {.NoItemDefaultMoves = sParty_Katelyn3},
},
[TRAINER_KATELYN_4] =
@@ -5469,8 +5469,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Katelyn4 }
+ .partySize = ARRAY_COUNT(sParty_Katelyn4),
+ .party = {.NoItemDefaultMoves = sParty_Katelyn4},
},
[TRAINER_KATELYN_5] =
@@ -5483,8 +5483,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Katelyn5 }
+ .partySize = ARRAY_COUNT(sParty_Katelyn5),
+ .party = {.NoItemDefaultMoves = sParty_Katelyn5},
},
[TRAINER_NICOLAS_1] =
@@ -5497,8 +5497,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nicolas1 }
+ .partySize = ARRAY_COUNT(sParty_Nicolas1),
+ .party = {.NoItemDefaultMoves = sParty_Nicolas1},
},
[TRAINER_NICOLAS_2] =
@@ -5511,8 +5511,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nicolas2 }
+ .partySize = ARRAY_COUNT(sParty_Nicolas2),
+ .party = {.NoItemDefaultMoves = sParty_Nicolas2},
},
[TRAINER_NICOLAS_3] =
@@ -5525,8 +5525,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nicolas3 }
+ .partySize = ARRAY_COUNT(sParty_Nicolas3),
+ .party = {.NoItemDefaultMoves = sParty_Nicolas3},
},
[TRAINER_NICOLAS_4] =
@@ -5539,8 +5539,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Nicolas4 }
+ .partySize = ARRAY_COUNT(sParty_Nicolas4),
+ .party = {.NoItemDefaultMoves = sParty_Nicolas4},
},
[TRAINER_NICOLAS_5] =
@@ -5553,8 +5553,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.ItemDefaultMoves = sParty_Nicolas5 }
+ .partySize = ARRAY_COUNT(sParty_Nicolas5),
+ .party = {.ItemDefaultMoves = sParty_Nicolas5},
},
[TRAINER_AARON] =
@@ -5567,8 +5567,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Aaron }
+ .partySize = ARRAY_COUNT(sParty_Aaron),
+ .party = {.NoItemCustomMoves = sParty_Aaron},
},
[TRAINER_PERRY] =
@@ -5581,8 +5581,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Perry }
+ .partySize = ARRAY_COUNT(sParty_Perry),
+ .party = {.NoItemDefaultMoves = sParty_Perry},
},
[TRAINER_HUGH] =
@@ -5595,8 +5595,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Hugh }
+ .partySize = ARRAY_COUNT(sParty_Hugh),
+ .party = {.NoItemDefaultMoves = sParty_Hugh},
},
[TRAINER_PHIL] =
@@ -5609,8 +5609,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Phil }
+ .partySize = ARRAY_COUNT(sParty_Phil),
+ .party = {.NoItemDefaultMoves = sParty_Phil},
},
[TRAINER_JARED] =
@@ -5623,8 +5623,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jared }
+ .partySize = ARRAY_COUNT(sParty_Jared),
+ .party = {.NoItemDefaultMoves = sParty_Jared},
},
[TRAINER_HUMBERTO] =
@@ -5637,8 +5637,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Humberto }
+ .partySize = ARRAY_COUNT(sParty_Humberto),
+ .party = {.NoItemDefaultMoves = sParty_Humberto},
},
[TRAINER_PRESLEY] =
@@ -5651,8 +5651,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Presley }
+ .partySize = ARRAY_COUNT(sParty_Presley),
+ .party = {.NoItemDefaultMoves = sParty_Presley},
},
[TRAINER_EDWARDO] =
@@ -5665,8 +5665,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwardo }
+ .partySize = ARRAY_COUNT(sParty_Edwardo),
+ .party = {.NoItemDefaultMoves = sParty_Edwardo},
},
[TRAINER_COLIN] =
@@ -5679,8 +5679,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Colin }
+ .partySize = ARRAY_COUNT(sParty_Colin),
+ .party = {.NoItemDefaultMoves = sParty_Colin},
},
[TRAINER_ROBERT_1] =
@@ -5693,8 +5693,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Robert1 }
+ .partySize = ARRAY_COUNT(sParty_Robert1),
+ .party = {.NoItemDefaultMoves = sParty_Robert1},
},
[TRAINER_BENNY] =
@@ -5707,8 +5707,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Benny }
+ .partySize = ARRAY_COUNT(sParty_Benny),
+ .party = {.NoItemDefaultMoves = sParty_Benny},
},
[TRAINER_CHESTER] =
@@ -5721,8 +5721,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Chester }
+ .partySize = ARRAY_COUNT(sParty_Chester),
+ .party = {.NoItemDefaultMoves = sParty_Chester},
},
[TRAINER_ROBERT_2] =
@@ -5735,8 +5735,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Robert2 }
+ .partySize = ARRAY_COUNT(sParty_Robert2),
+ .party = {.NoItemDefaultMoves = sParty_Robert2},
},
[TRAINER_ROBERT_3] =
@@ -5749,8 +5749,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Robert3 }
+ .partySize = ARRAY_COUNT(sParty_Robert3),
+ .party = {.NoItemDefaultMoves = sParty_Robert3},
},
[TRAINER_ROBERT_4] =
@@ -5763,8 +5763,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Robert4 }
+ .partySize = ARRAY_COUNT(sParty_Robert4),
+ .party = {.NoItemDefaultMoves = sParty_Robert4},
},
[TRAINER_ROBERT_5] =
@@ -5777,8 +5777,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Robert5 }
+ .partySize = ARRAY_COUNT(sParty_Robert5),
+ .party = {.NoItemDefaultMoves = sParty_Robert5},
},
[TRAINER_ALEX] =
@@ -5791,8 +5791,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alex }
+ .partySize = ARRAY_COUNT(sParty_Alex),
+ .party = {.NoItemDefaultMoves = sParty_Alex},
},
[TRAINER_BECK] =
@@ -5805,8 +5805,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Beck }
+ .partySize = ARRAY_COUNT(sParty_Beck),
+ .party = {.NoItemDefaultMoves = sParty_Beck},
},
[TRAINER_YASU] =
@@ -5819,8 +5819,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Yasu }
+ .partySize = ARRAY_COUNT(sParty_Yasu),
+ .party = {.NoItemDefaultMoves = sParty_Yasu},
},
[TRAINER_TAKASHI] =
@@ -5833,8 +5833,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Takashi }
+ .partySize = ARRAY_COUNT(sParty_Takashi),
+ .party = {.NoItemDefaultMoves = sParty_Takashi},
},
[TRAINER_DIANNE] =
@@ -5847,8 +5847,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 2,
- .party = {.ItemCustomMoves = sParty_Dianne }
+ .partySize = ARRAY_COUNT(sParty_Dianne),
+ .party = {.ItemCustomMoves = sParty_Dianne},
},
[TRAINER_JANI] =
@@ -5861,8 +5861,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jani }
+ .partySize = ARRAY_COUNT(sParty_Jani),
+ .party = {.NoItemDefaultMoves = sParty_Jani},
},
[TRAINER_LAO_1] =
@@ -5875,8 +5875,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 3,
- .party = {.NoItemCustomMoves = sParty_Lao1 }
+ .partySize = ARRAY_COUNT(sParty_Lao1),
+ .party = {.NoItemCustomMoves = sParty_Lao1},
},
[TRAINER_LUNG] =
@@ -5889,8 +5889,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lung }
+ .partySize = ARRAY_COUNT(sParty_Lung),
+ .party = {.NoItemDefaultMoves = sParty_Lung},
},
[TRAINER_LAO_2] =
@@ -5903,8 +5903,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 4,
- .party = {.NoItemCustomMoves = sParty_Lao2 }
+ .partySize = ARRAY_COUNT(sParty_Lao2),
+ .party = {.NoItemCustomMoves = sParty_Lao2},
},
[TRAINER_LAO_3] =
@@ -5917,8 +5917,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 4,
- .party = {.NoItemCustomMoves = sParty_Lao3 }
+ .partySize = ARRAY_COUNT(sParty_Lao3),
+ .party = {.NoItemCustomMoves = sParty_Lao3},
},
[TRAINER_LAO_4] =
@@ -5931,8 +5931,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 4,
- .party = {.NoItemCustomMoves = sParty_Lao4 }
+ .partySize = ARRAY_COUNT(sParty_Lao4),
+ .party = {.NoItemCustomMoves = sParty_Lao4},
},
[TRAINER_LAO_5] =
@@ -5945,8 +5945,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Lao5 }
+ .partySize = ARRAY_COUNT(sParty_Lao5),
+ .party = {.ItemCustomMoves = sParty_Lao5},
},
[TRAINER_JOCELYN] =
@@ -5959,8 +5959,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jocelyn }
+ .partySize = ARRAY_COUNT(sParty_Jocelyn),
+ .party = {.NoItemDefaultMoves = sParty_Jocelyn},
},
[TRAINER_LAURA] =
@@ -5973,8 +5973,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Laura }
+ .partySize = ARRAY_COUNT(sParty_Laura),
+ .party = {.NoItemDefaultMoves = sParty_Laura},
},
[TRAINER_CYNDY_1] =
@@ -5987,8 +5987,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cyndy1 }
+ .partySize = ARRAY_COUNT(sParty_Cyndy1),
+ .party = {.NoItemDefaultMoves = sParty_Cyndy1},
},
[TRAINER_CORA] =
@@ -6001,8 +6001,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Cora }
+ .partySize = ARRAY_COUNT(sParty_Cora),
+ .party = {.NoItemDefaultMoves = sParty_Cora},
},
[TRAINER_PAULA] =
@@ -6015,8 +6015,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Paula }
+ .partySize = ARRAY_COUNT(sParty_Paula),
+ .party = {.NoItemDefaultMoves = sParty_Paula},
},
[TRAINER_CYNDY_2] =
@@ -6029,8 +6029,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cyndy2 }
+ .partySize = ARRAY_COUNT(sParty_Cyndy2),
+ .party = {.NoItemDefaultMoves = sParty_Cyndy2},
},
[TRAINER_CYNDY_3] =
@@ -6043,8 +6043,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cyndy3 }
+ .partySize = ARRAY_COUNT(sParty_Cyndy3),
+ .party = {.NoItemDefaultMoves = sParty_Cyndy3},
},
[TRAINER_CYNDY_4] =
@@ -6057,8 +6057,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cyndy4 }
+ .partySize = ARRAY_COUNT(sParty_Cyndy4),
+ .party = {.NoItemDefaultMoves = sParty_Cyndy4},
},
[TRAINER_CYNDY_5] =
@@ -6071,8 +6071,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cyndy5 }
+ .partySize = ARRAY_COUNT(sParty_Cyndy5),
+ .party = {.NoItemDefaultMoves = sParty_Cyndy5},
},
[TRAINER_MADELINE_1] =
@@ -6085,8 +6085,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Madeline1 }
+ .partySize = ARRAY_COUNT(sParty_Madeline1),
+ .party = {.NoItemCustomMoves = sParty_Madeline1},
},
[TRAINER_CLARISSA] =
@@ -6099,8 +6099,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Clarissa }
+ .partySize = ARRAY_COUNT(sParty_Clarissa),
+ .party = {.NoItemDefaultMoves = sParty_Clarissa},
},
[TRAINER_ANGELICA] =
@@ -6113,8 +6113,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Angelica }
+ .partySize = ARRAY_COUNT(sParty_Angelica),
+ .party = {.NoItemCustomMoves = sParty_Angelica},
},
[TRAINER_MADELINE_2] =
@@ -6127,8 +6127,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Madeline2 }
+ .partySize = ARRAY_COUNT(sParty_Madeline2),
+ .party = {.NoItemCustomMoves = sParty_Madeline2},
},
[TRAINER_MADELINE_3] =
@@ -6141,8 +6141,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Madeline3 }
+ .partySize = ARRAY_COUNT(sParty_Madeline3),
+ .party = {.NoItemCustomMoves = sParty_Madeline3},
},
[TRAINER_MADELINE_4] =
@@ -6155,8 +6155,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Madeline4 }
+ .partySize = ARRAY_COUNT(sParty_Madeline4),
+ .party = {.NoItemCustomMoves = sParty_Madeline4},
},
[TRAINER_MADELINE_5] =
@@ -6169,8 +6169,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Madeline5 }
+ .partySize = ARRAY_COUNT(sParty_Madeline5),
+ .party = {.NoItemCustomMoves = sParty_Madeline5},
},
[TRAINER_BEVERLY] =
@@ -6183,8 +6183,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Beverly }
+ .partySize = ARRAY_COUNT(sParty_Beverly),
+ .party = {.NoItemDefaultMoves = sParty_Beverly},
},
[TRAINER_IMANI] =
@@ -6197,8 +6197,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Imani }
+ .partySize = ARRAY_COUNT(sParty_Imani),
+ .party = {.NoItemDefaultMoves = sParty_Imani},
},
[TRAINER_KYLA] =
@@ -6211,8 +6211,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kyla }
+ .partySize = ARRAY_COUNT(sParty_Kyla),
+ .party = {.NoItemDefaultMoves = sParty_Kyla},
},
[TRAINER_DENISE] =
@@ -6225,8 +6225,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Denise }
+ .partySize = ARRAY_COUNT(sParty_Denise),
+ .party = {.NoItemDefaultMoves = sParty_Denise},
},
[TRAINER_BETH] =
@@ -6239,8 +6239,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Beth }
+ .partySize = ARRAY_COUNT(sParty_Beth),
+ .party = {.NoItemDefaultMoves = sParty_Beth},
},
[TRAINER_TARA] =
@@ -6253,8 +6253,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tara }
+ .partySize = ARRAY_COUNT(sParty_Tara),
+ .party = {.NoItemDefaultMoves = sParty_Tara},
},
[TRAINER_MISSY] =
@@ -6267,8 +6267,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Missy }
+ .partySize = ARRAY_COUNT(sParty_Missy),
+ .party = {.NoItemDefaultMoves = sParty_Missy},
},
[TRAINER_ALICE] =
@@ -6281,8 +6281,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Alice }
+ .partySize = ARRAY_COUNT(sParty_Alice),
+ .party = {.NoItemDefaultMoves = sParty_Alice},
},
[TRAINER_JENNY_1] =
@@ -6295,8 +6295,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jenny1 }
+ .partySize = ARRAY_COUNT(sParty_Jenny1),
+ .party = {.NoItemDefaultMoves = sParty_Jenny1},
},
[TRAINER_GRACE] =
@@ -6309,8 +6309,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grace }
+ .partySize = ARRAY_COUNT(sParty_Grace),
+ .party = {.NoItemDefaultMoves = sParty_Grace},
},
[TRAINER_TANYA] =
@@ -6323,8 +6323,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tanya }
+ .partySize = ARRAY_COUNT(sParty_Tanya),
+ .party = {.NoItemDefaultMoves = sParty_Tanya},
},
[TRAINER_SHARON] =
@@ -6337,8 +6337,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sharon }
+ .partySize = ARRAY_COUNT(sParty_Sharon),
+ .party = {.NoItemDefaultMoves = sParty_Sharon},
},
[TRAINER_NIKKI] =
@@ -6351,8 +6351,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nikki }
+ .partySize = ARRAY_COUNT(sParty_Nikki),
+ .party = {.NoItemDefaultMoves = sParty_Nikki},
},
[TRAINER_BRENDA] =
@@ -6365,8 +6365,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brenda }
+ .partySize = ARRAY_COUNT(sParty_Brenda),
+ .party = {.NoItemDefaultMoves = sParty_Brenda},
},
[TRAINER_KATIE] =
@@ -6379,8 +6379,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Katie }
+ .partySize = ARRAY_COUNT(sParty_Katie),
+ .party = {.NoItemDefaultMoves = sParty_Katie},
},
[TRAINER_SUSIE] =
@@ -6393,8 +6393,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Susie }
+ .partySize = ARRAY_COUNT(sParty_Susie),
+ .party = {.NoItemDefaultMoves = sParty_Susie},
},
[TRAINER_KARA] =
@@ -6407,8 +6407,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kara }
+ .partySize = ARRAY_COUNT(sParty_Kara),
+ .party = {.NoItemDefaultMoves = sParty_Kara},
},
[TRAINER_DANA] =
@@ -6421,8 +6421,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Dana }
+ .partySize = ARRAY_COUNT(sParty_Dana),
+ .party = {.NoItemDefaultMoves = sParty_Dana},
},
[TRAINER_SIENNA] =
@@ -6435,8 +6435,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Sienna }
+ .partySize = ARRAY_COUNT(sParty_Sienna),
+ .party = {.NoItemDefaultMoves = sParty_Sienna},
},
[TRAINER_DEBRA] =
@@ -6449,8 +6449,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Debra }
+ .partySize = ARRAY_COUNT(sParty_Debra),
+ .party = {.NoItemDefaultMoves = sParty_Debra},
},
[TRAINER_LINDA] =
@@ -6463,8 +6463,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Linda }
+ .partySize = ARRAY_COUNT(sParty_Linda),
+ .party = {.NoItemDefaultMoves = sParty_Linda},
},
[TRAINER_KAYLEE] =
@@ -6477,8 +6477,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Kaylee }
+ .partySize = ARRAY_COUNT(sParty_Kaylee),
+ .party = {.NoItemDefaultMoves = sParty_Kaylee},
},
[TRAINER_LAUREL] =
@@ -6491,8 +6491,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Laurel }
+ .partySize = ARRAY_COUNT(sParty_Laurel),
+ .party = {.NoItemDefaultMoves = sParty_Laurel},
},
[TRAINER_CARLEE] =
@@ -6505,8 +6505,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Carlee }
+ .partySize = ARRAY_COUNT(sParty_Carlee),
+ .party = {.NoItemDefaultMoves = sParty_Carlee},
},
[TRAINER_JENNY_2] =
@@ -6519,8 +6519,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jenny2 }
+ .partySize = ARRAY_COUNT(sParty_Jenny2),
+ .party = {.NoItemDefaultMoves = sParty_Jenny2},
},
[TRAINER_JENNY_3] =
@@ -6533,8 +6533,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jenny3 }
+ .partySize = ARRAY_COUNT(sParty_Jenny3),
+ .party = {.NoItemDefaultMoves = sParty_Jenny3},
},
[TRAINER_JENNY_4] =
@@ -6547,8 +6547,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jenny4 }
+ .partySize = ARRAY_COUNT(sParty_Jenny4),
+ .party = {.NoItemDefaultMoves = sParty_Jenny4},
},
[TRAINER_JENNY_5] =
@@ -6561,8 +6561,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jenny5 }
+ .partySize = ARRAY_COUNT(sParty_Jenny5),
+ .party = {.NoItemDefaultMoves = sParty_Jenny5},
},
[TRAINER_HEIDI] =
@@ -6575,8 +6575,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Heidi }
+ .partySize = ARRAY_COUNT(sParty_Heidi),
+ .party = {.NoItemCustomMoves = sParty_Heidi},
},
[TRAINER_BECKY] =
@@ -6589,8 +6589,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Becky }
+ .partySize = ARRAY_COUNT(sParty_Becky),
+ .party = {.NoItemCustomMoves = sParty_Becky},
},
[TRAINER_CAROL] =
@@ -6603,8 +6603,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Carol }
+ .partySize = ARRAY_COUNT(sParty_Carol),
+ .party = {.NoItemDefaultMoves = sParty_Carol},
},
[TRAINER_NANCY] =
@@ -6617,8 +6617,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Nancy }
+ .partySize = ARRAY_COUNT(sParty_Nancy),
+ .party = {.NoItemDefaultMoves = sParty_Nancy},
},
[TRAINER_MARTHA] =
@@ -6631,8 +6631,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Martha }
+ .partySize = ARRAY_COUNT(sParty_Martha),
+ .party = {.NoItemDefaultMoves = sParty_Martha},
},
[TRAINER_DIANA_1] =
@@ -6645,8 +6645,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Diana1 }
+ .partySize = ARRAY_COUNT(sParty_Diana1),
+ .party = {.NoItemDefaultMoves = sParty_Diana1},
},
[TRAINER_CEDRIC] =
@@ -6659,8 +6659,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Cedric }
+ .partySize = ARRAY_COUNT(sParty_Cedric),
+ .party = {.NoItemCustomMoves = sParty_Cedric},
},
[TRAINER_IRENE] =
@@ -6673,8 +6673,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Irene }
+ .partySize = ARRAY_COUNT(sParty_Irene),
+ .party = {.NoItemDefaultMoves = sParty_Irene},
},
[TRAINER_DIANA_2] =
@@ -6687,8 +6687,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Diana2 }
+ .partySize = ARRAY_COUNT(sParty_Diana2),
+ .party = {.NoItemDefaultMoves = sParty_Diana2},
},
[TRAINER_DIANA_3] =
@@ -6701,8 +6701,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Diana3 }
+ .partySize = ARRAY_COUNT(sParty_Diana3),
+ .party = {.NoItemDefaultMoves = sParty_Diana3},
},
[TRAINER_DIANA_4] =
@@ -6715,8 +6715,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Diana4 }
+ .partySize = ARRAY_COUNT(sParty_Diana4),
+ .party = {.NoItemDefaultMoves = sParty_Diana4},
},
[TRAINER_DIANA_5] =
@@ -6729,8 +6729,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Diana5 }
+ .partySize = ARRAY_COUNT(sParty_Diana5),
+ .party = {.NoItemDefaultMoves = sParty_Diana5},
},
[TRAINER_AMY_AND_LIV_1] =
@@ -6743,8 +6743,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_AmyAndLiv1 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv1),
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv1},
},
[TRAINER_AMY_AND_LIV_2] =
@@ -6757,8 +6757,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_AmyAndLiv2 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv2),
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv2},
},
[TRAINER_GINA_AND_MIA_1] =
@@ -6771,8 +6771,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_GinaAndMia1 }
+ .partySize = ARRAY_COUNT(sParty_GinaAndMia1),
+ .party = {.NoItemDefaultMoves = sParty_GinaAndMia1},
},
[TRAINER_MIU_AND_YUKI] =
@@ -6785,8 +6785,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_MiuAndYuki }
+ .partySize = ARRAY_COUNT(sParty_MiuAndYuki),
+ .party = {.NoItemDefaultMoves = sParty_MiuAndYuki},
},
[TRAINER_AMY_AND_LIV_3] =
@@ -6799,8 +6799,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_AmyAndLiv3 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv3),
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv3},
},
[TRAINER_GINA_AND_MIA_2] =
@@ -6813,8 +6813,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_GinaAndMia2 }
+ .partySize = ARRAY_COUNT(sParty_GinaAndMia2),
+ .party = {.NoItemCustomMoves = sParty_GinaAndMia2},
},
[TRAINER_AMY_AND_LIV_4] =
@@ -6827,8 +6827,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_AmyAndLiv4 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv4),
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv4},
},
[TRAINER_AMY_AND_LIV_5] =
@@ -6841,8 +6841,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AmyAndLiv5 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv5),
+ .party = {.NoItemCustomMoves = sParty_AmyAndLiv5},
},
[TRAINER_AMY_AND_LIV_6] =
@@ -6855,8 +6855,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_AmyAndLiv6 }
+ .partySize = ARRAY_COUNT(sParty_AmyAndLiv6),
+ .party = {.NoItemCustomMoves = sParty_AmyAndLiv6},
},
[TRAINER_HUEY] =
@@ -6869,8 +6869,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Huey }
+ .partySize = ARRAY_COUNT(sParty_Huey),
+ .party = {.NoItemDefaultMoves = sParty_Huey},
},
[TRAINER_EDMOND] =
@@ -6883,8 +6883,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Edmond }
+ .partySize = ARRAY_COUNT(sParty_Edmond),
+ .party = {.NoItemDefaultMoves = sParty_Edmond},
},
[TRAINER_ERNEST_1] =
@@ -6897,8 +6897,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ernest1 }
+ .partySize = ARRAY_COUNT(sParty_Ernest1),
+ .party = {.NoItemDefaultMoves = sParty_Ernest1},
},
[TRAINER_DWAYNE] =
@@ -6911,8 +6911,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Dwayne }
+ .partySize = ARRAY_COUNT(sParty_Dwayne),
+ .party = {.NoItemDefaultMoves = sParty_Dwayne},
},
[TRAINER_PHILLIP] =
@@ -6925,8 +6925,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Phillip }
+ .partySize = ARRAY_COUNT(sParty_Phillip),
+ .party = {.NoItemDefaultMoves = sParty_Phillip},
},
[TRAINER_LEONARD] =
@@ -6939,8 +6939,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Leonard }
+ .partySize = ARRAY_COUNT(sParty_Leonard),
+ .party = {.NoItemDefaultMoves = sParty_Leonard},
},
[TRAINER_DUNCAN] =
@@ -6953,8 +6953,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Duncan }
+ .partySize = ARRAY_COUNT(sParty_Duncan),
+ .party = {.NoItemDefaultMoves = sParty_Duncan},
},
[TRAINER_ERNEST_2] =
@@ -6967,8 +6967,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ernest2 }
+ .partySize = ARRAY_COUNT(sParty_Ernest2),
+ .party = {.NoItemDefaultMoves = sParty_Ernest2},
},
[TRAINER_ERNEST_3] =
@@ -6981,8 +6981,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ernest3 }
+ .partySize = ARRAY_COUNT(sParty_Ernest3),
+ .party = {.NoItemDefaultMoves = sParty_Ernest3},
},
[TRAINER_ERNEST_4] =
@@ -6995,8 +6995,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ernest4 }
+ .partySize = ARRAY_COUNT(sParty_Ernest4),
+ .party = {.NoItemDefaultMoves = sParty_Ernest4},
},
[TRAINER_ERNEST_5] =
@@ -7009,8 +7009,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ernest5 }
+ .partySize = ARRAY_COUNT(sParty_Ernest5),
+ .party = {.NoItemDefaultMoves = sParty_Ernest5},
},
[TRAINER_ELI] =
@@ -7023,8 +7023,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Eli }
+ .partySize = ARRAY_COUNT(sParty_Eli),
+ .party = {.NoItemDefaultMoves = sParty_Eli},
},
[TRAINER_ANNIKA] =
@@ -7037,22 +7037,22 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemCustomMoves = sParty_Annika }
+ .partySize = ARRAY_COUNT(sParty_Annika),
+ .party = {.ItemCustomMoves = sParty_Annika},
},
[TRAINER_JAZMYN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_UNUSED,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER_2,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
.trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("JAZMYN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jazmyn }
+ .partySize = ARRAY_COUNT(sParty_Jazmyn),
+ .party = {.NoItemDefaultMoves = sParty_Jazmyn},
},
[TRAINER_JONAS] =
@@ -7065,8 +7065,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Jonas }
+ .partySize = ARRAY_COUNT(sParty_Jonas),
+ .party = {.NoItemCustomMoves = sParty_Jonas},
},
[TRAINER_KAYLEY] =
@@ -7079,8 +7079,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Kayley }
+ .partySize = ARRAY_COUNT(sParty_Kayley),
+ .party = {.NoItemCustomMoves = sParty_Kayley},
},
[TRAINER_AURON] =
@@ -7093,8 +7093,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Auron }
+ .partySize = ARRAY_COUNT(sParty_Auron),
+ .party = {.NoItemDefaultMoves = sParty_Auron},
},
[TRAINER_KELVIN] =
@@ -7107,8 +7107,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Kelvin }
+ .partySize = ARRAY_COUNT(sParty_Kelvin),
+ .party = {.NoItemDefaultMoves = sParty_Kelvin},
},
[TRAINER_MARLEY] =
@@ -7121,8 +7121,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.ItemCustomMoves = sParty_Marley }
+ .partySize = ARRAY_COUNT(sParty_Marley),
+ .party = {.ItemCustomMoves = sParty_Marley},
},
[TRAINER_REYNA] =
@@ -7135,8 +7135,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Reyna }
+ .partySize = ARRAY_COUNT(sParty_Reyna),
+ .party = {.NoItemDefaultMoves = sParty_Reyna},
},
[TRAINER_HUDSON] =
@@ -7149,8 +7149,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Hudson }
+ .partySize = ARRAY_COUNT(sParty_Hudson),
+ .party = {.NoItemDefaultMoves = sParty_Hudson},
},
[TRAINER_CONOR] =
@@ -7163,8 +7163,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Conor }
+ .partySize = ARRAY_COUNT(sParty_Conor),
+ .party = {.NoItemDefaultMoves = sParty_Conor},
},
[TRAINER_EDWIN_1] =
@@ -7177,8 +7177,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwin1 }
+ .partySize = ARRAY_COUNT(sParty_Edwin1),
+ .party = {.NoItemDefaultMoves = sParty_Edwin1},
},
[TRAINER_HECTOR] =
@@ -7191,8 +7191,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Hector }
+ .partySize = ARRAY_COUNT(sParty_Hector),
+ .party = {.NoItemDefaultMoves = sParty_Hector},
},
[TRAINER_TABITHA_1] =
@@ -7205,8 +7205,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Tabitha1 }
+ .partySize = ARRAY_COUNT(sParty_Tabitha1),
+ .party = {.NoItemDefaultMoves = sParty_Tabitha1},
},
[TRAINER_EDWIN_2] =
@@ -7219,8 +7219,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwin2 }
+ .partySize = ARRAY_COUNT(sParty_Edwin2),
+ .party = {.NoItemDefaultMoves = sParty_Edwin2},
},
[TRAINER_EDWIN_3] =
@@ -7233,8 +7233,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwin3 }
+ .partySize = ARRAY_COUNT(sParty_Edwin3),
+ .party = {.NoItemDefaultMoves = sParty_Edwin3},
},
[TRAINER_EDWIN_4] =
@@ -7247,8 +7247,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwin4 }
+ .partySize = ARRAY_COUNT(sParty_Edwin4),
+ .party = {.NoItemDefaultMoves = sParty_Edwin4},
},
[TRAINER_EDWIN_5] =
@@ -7261,8 +7261,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Edwin5 }
+ .partySize = ARRAY_COUNT(sParty_Edwin5),
+ .party = {.NoItemDefaultMoves = sParty_Edwin5},
},
[TRAINER_WALLY_1] =
@@ -7275,8 +7275,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Wally1 }
+ .partySize = ARRAY_COUNT(sParty_Wally1),
+ .party = {.NoItemCustomMoves = sParty_Wally1},
},
[TRAINER_BRENDAN_1] =
@@ -7289,8 +7289,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brendan1 }
+ .partySize = ARRAY_COUNT(sParty_Brendan1),
+ .party = {.NoItemDefaultMoves = sParty_Brendan1},
},
[TRAINER_BRENDAN_2] =
@@ -7303,8 +7303,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan2 }
+ .partySize = ARRAY_COUNT(sParty_Brendan2),
+ .party = {.NoItemDefaultMoves = sParty_Brendan2},
},
[TRAINER_BRENDAN_3] =
@@ -7317,8 +7317,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan3 }
+ .partySize = ARRAY_COUNT(sParty_Brendan3),
+ .party = {.NoItemDefaultMoves = sParty_Brendan3},
},
[TRAINER_BRENDAN_4] =
@@ -7331,8 +7331,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brendan4 }
+ .partySize = ARRAY_COUNT(sParty_Brendan4),
+ .party = {.NoItemDefaultMoves = sParty_Brendan4},
},
[TRAINER_BRENDAN_5] =
@@ -7345,8 +7345,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan5 }
+ .partySize = ARRAY_COUNT(sParty_Brendan5),
+ .party = {.NoItemDefaultMoves = sParty_Brendan5},
},
[TRAINER_BRENDAN_6] =
@@ -7359,8 +7359,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan6 }
+ .partySize = ARRAY_COUNT(sParty_Brendan6),
+ .party = {.NoItemDefaultMoves = sParty_Brendan6},
},
[TRAINER_BRENDAN_7] =
@@ -7373,8 +7373,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brendan7 }
+ .partySize = ARRAY_COUNT(sParty_Brendan7),
+ .party = {.NoItemDefaultMoves = sParty_Brendan7},
},
[TRAINER_BRENDAN_8] =
@@ -7387,8 +7387,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan8 }
+ .partySize = ARRAY_COUNT(sParty_Brendan8),
+ .party = {.NoItemDefaultMoves = sParty_Brendan8},
},
[TRAINER_BRENDAN_9] =
@@ -7401,8 +7401,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Brendan9 }
+ .partySize = ARRAY_COUNT(sParty_Brendan9),
+ .party = {.NoItemDefaultMoves = sParty_Brendan9},
},
[TRAINER_MAY_1] =
@@ -7415,8 +7415,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_May1 }
+ .partySize = ARRAY_COUNT(sParty_May1),
+ .party = {.NoItemDefaultMoves = sParty_May1},
},
[TRAINER_MAY_2] =
@@ -7429,8 +7429,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May2 }
+ .partySize = ARRAY_COUNT(sParty_May2),
+ .party = {.NoItemDefaultMoves = sParty_May2},
},
[TRAINER_MAY_3] =
@@ -7443,8 +7443,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May3 }
+ .partySize = ARRAY_COUNT(sParty_May3),
+ .party = {.NoItemDefaultMoves = sParty_May3},
},
[TRAINER_MAY_4] =
@@ -7457,8 +7457,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_May4 }
+ .partySize = ARRAY_COUNT(sParty_May4),
+ .party = {.NoItemDefaultMoves = sParty_May4},
},
[TRAINER_MAY_5] =
@@ -7471,8 +7471,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May5 }
+ .partySize = ARRAY_COUNT(sParty_May5),
+ .party = {.NoItemDefaultMoves = sParty_May5},
},
[TRAINER_MAY_6] =
@@ -7485,8 +7485,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May6 }
+ .partySize = ARRAY_COUNT(sParty_May6),
+ .party = {.NoItemDefaultMoves = sParty_May6},
},
[TRAINER_MAY_7] =
@@ -7499,8 +7499,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_May7 }
+ .partySize = ARRAY_COUNT(sParty_May7),
+ .party = {.NoItemDefaultMoves = sParty_May7},
},
[TRAINER_MAY_8] =
@@ -7513,8 +7513,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May8 }
+ .partySize = ARRAY_COUNT(sParty_May8),
+ .party = {.NoItemDefaultMoves = sParty_May8},
},
[TRAINER_MAY_9] =
@@ -7527,8 +7527,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_May9 }
+ .partySize = ARRAY_COUNT(sParty_May9),
+ .party = {.NoItemDefaultMoves = sParty_May9},
},
[TRAINER_ISAAC_1] =
@@ -7541,8 +7541,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Isaac1 }
+ .partySize = ARRAY_COUNT(sParty_Isaac1),
+ .party = {.NoItemDefaultMoves = sParty_Isaac1},
},
[TRAINER_DAVIS] =
@@ -7555,8 +7555,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Davis }
+ .partySize = ARRAY_COUNT(sParty_Davis),
+ .party = {.NoItemDefaultMoves = sParty_Davis},
},
[TRAINER_MITCHELL] =
@@ -7569,8 +7569,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Mitchell }
+ .partySize = ARRAY_COUNT(sParty_Mitchell),
+ .party = {.NoItemCustomMoves = sParty_Mitchell},
},
[TRAINER_ISAAC_2] =
@@ -7583,8 +7583,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Isaac2 }
+ .partySize = ARRAY_COUNT(sParty_Isaac2),
+ .party = {.NoItemDefaultMoves = sParty_Isaac2},
},
[TRAINER_ISAAC_3] =
@@ -7597,8 +7597,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Isaac3 }
+ .partySize = ARRAY_COUNT(sParty_Isaac3),
+ .party = {.NoItemDefaultMoves = sParty_Isaac3},
},
[TRAINER_ISAAC_4] =
@@ -7611,8 +7611,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Isaac4 }
+ .partySize = ARRAY_COUNT(sParty_Isaac4),
+ .party = {.NoItemDefaultMoves = sParty_Isaac4},
},
[TRAINER_ISAAC_5] =
@@ -7625,8 +7625,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Isaac5 }
+ .partySize = ARRAY_COUNT(sParty_Isaac5),
+ .party = {.NoItemDefaultMoves = sParty_Isaac5},
},
[TRAINER_LYDIA_1] =
@@ -7639,8 +7639,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Lydia1 }
+ .partySize = ARRAY_COUNT(sParty_Lydia1),
+ .party = {.NoItemDefaultMoves = sParty_Lydia1},
},
[TRAINER_HALLE] =
@@ -7653,8 +7653,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Halle }
+ .partySize = ARRAY_COUNT(sParty_Halle),
+ .party = {.NoItemDefaultMoves = sParty_Halle},
},
[TRAINER_GARRISON] =
@@ -7667,8 +7667,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Garrison }
+ .partySize = ARRAY_COUNT(sParty_Garrison),
+ .party = {.NoItemDefaultMoves = sParty_Garrison},
},
[TRAINER_LYDIA_2] =
@@ -7681,8 +7681,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Lydia2 }
+ .partySize = ARRAY_COUNT(sParty_Lydia2),
+ .party = {.NoItemDefaultMoves = sParty_Lydia2},
},
[TRAINER_LYDIA_3] =
@@ -7695,8 +7695,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Lydia3 }
+ .partySize = ARRAY_COUNT(sParty_Lydia3),
+ .party = {.NoItemDefaultMoves = sParty_Lydia3},
},
[TRAINER_LYDIA_4] =
@@ -7709,8 +7709,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Lydia4 }
+ .partySize = ARRAY_COUNT(sParty_Lydia4),
+ .party = {.NoItemDefaultMoves = sParty_Lydia4},
},
[TRAINER_LYDIA_5] =
@@ -7723,8 +7723,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Lydia5 }
+ .partySize = ARRAY_COUNT(sParty_Lydia5),
+ .party = {.NoItemDefaultMoves = sParty_Lydia5},
},
[TRAINER_JACKSON_1] =
@@ -7737,8 +7737,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jackson1 }
+ .partySize = ARRAY_COUNT(sParty_Jackson1),
+ .party = {.NoItemDefaultMoves = sParty_Jackson1},
},
[TRAINER_LORENZO] =
@@ -7751,8 +7751,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Lorenzo }
+ .partySize = ARRAY_COUNT(sParty_Lorenzo),
+ .party = {.NoItemDefaultMoves = sParty_Lorenzo},
},
[TRAINER_SEBASTIAN] =
@@ -7765,8 +7765,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sebastian }
+ .partySize = ARRAY_COUNT(sParty_Sebastian),
+ .party = {.NoItemDefaultMoves = sParty_Sebastian},
},
[TRAINER_JACKSON_2] =
@@ -7779,8 +7779,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jackson2 }
+ .partySize = ARRAY_COUNT(sParty_Jackson2),
+ .party = {.NoItemDefaultMoves = sParty_Jackson2},
},
[TRAINER_JACKSON_3] =
@@ -7793,8 +7793,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jackson3 }
+ .partySize = ARRAY_COUNT(sParty_Jackson3),
+ .party = {.NoItemDefaultMoves = sParty_Jackson3},
},
[TRAINER_JACKSON_4] =
@@ -7807,8 +7807,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Jackson4 }
+ .partySize = ARRAY_COUNT(sParty_Jackson4),
+ .party = {.NoItemDefaultMoves = sParty_Jackson4},
},
[TRAINER_JACKSON_5] =
@@ -7821,8 +7821,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jackson5 }
+ .partySize = ARRAY_COUNT(sParty_Jackson5),
+ .party = {.NoItemDefaultMoves = sParty_Jackson5},
},
[TRAINER_CATHERINE_1] =
@@ -7835,8 +7835,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Catherine1 }
+ .partySize = ARRAY_COUNT(sParty_Catherine1),
+ .party = {.NoItemDefaultMoves = sParty_Catherine1},
},
[TRAINER_JENNA] =
@@ -7849,8 +7849,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jenna }
+ .partySize = ARRAY_COUNT(sParty_Jenna),
+ .party = {.NoItemDefaultMoves = sParty_Jenna},
},
[TRAINER_SOPHIA] =
@@ -7863,8 +7863,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Sophia }
+ .partySize = ARRAY_COUNT(sParty_Sophia),
+ .party = {.NoItemDefaultMoves = sParty_Sophia},
},
[TRAINER_CATHERINE_2] =
@@ -7877,8 +7877,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Catherine2 }
+ .partySize = ARRAY_COUNT(sParty_Catherine2),
+ .party = {.NoItemDefaultMoves = sParty_Catherine2},
},
[TRAINER_CATHERINE_3] =
@@ -7891,8 +7891,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Catherine3 }
+ .partySize = ARRAY_COUNT(sParty_Catherine3),
+ .party = {.NoItemDefaultMoves = sParty_Catherine3},
},
[TRAINER_CATHERINE_4] =
@@ -7905,8 +7905,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Catherine4 }
+ .partySize = ARRAY_COUNT(sParty_Catherine4),
+ .party = {.NoItemDefaultMoves = sParty_Catherine4},
},
[TRAINER_CATHERINE_5] =
@@ -7919,8 +7919,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Catherine5 }
+ .partySize = ARRAY_COUNT(sParty_Catherine5),
+ .party = {.NoItemDefaultMoves = sParty_Catherine5},
},
[TRAINER_JULIO] =
@@ -7933,8 +7933,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Julio }
+ .partySize = ARRAY_COUNT(sParty_Julio),
+ .party = {.NoItemDefaultMoves = sParty_Julio},
},
[TRAINER_GRUNT_27] =
@@ -7947,8 +7947,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt27 }
+ .partySize = ARRAY_COUNT(sParty_Grunt27),
+ .party = {.NoItemDefaultMoves = sParty_Grunt27},
},
[TRAINER_GRUNT_28] =
@@ -7961,8 +7961,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt28 }
+ .partySize = ARRAY_COUNT(sParty_Grunt28),
+ .party = {.NoItemDefaultMoves = sParty_Grunt28},
},
[TRAINER_GRUNT_29] =
@@ -7975,8 +7975,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt29 }
+ .partySize = ARRAY_COUNT(sParty_Grunt29),
+ .party = {.NoItemDefaultMoves = sParty_Grunt29},
},
[TRAINER_GRUNT_30] =
@@ -7989,8 +7989,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt30 }
+ .partySize = ARRAY_COUNT(sParty_Grunt30),
+ .party = {.NoItemDefaultMoves = sParty_Grunt30},
},
[TRAINER_MARC] =
@@ -8003,8 +8003,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Marc }
+ .partySize = ARRAY_COUNT(sParty_Marc),
+ .party = {.NoItemDefaultMoves = sParty_Marc},
},
[TRAINER_BRENDEN] =
@@ -8017,8 +8017,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brenden }
+ .partySize = ARRAY_COUNT(sParty_Brenden),
+ .party = {.NoItemDefaultMoves = sParty_Brenden},
},
[TRAINER_LILITH] =
@@ -8031,8 +8031,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Lilith }
+ .partySize = ARRAY_COUNT(sParty_Lilith),
+ .party = {.NoItemDefaultMoves = sParty_Lilith},
},
[TRAINER_CRISTIAN] =
@@ -8045,8 +8045,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Cristian }
+ .partySize = ARRAY_COUNT(sParty_Cristian),
+ .party = {.NoItemDefaultMoves = sParty_Cristian},
},
[TRAINER_SYLVIA] =
@@ -8059,8 +8059,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sylvia }
+ .partySize = ARRAY_COUNT(sParty_Sylvia),
+ .party = {.NoItemDefaultMoves = sParty_Sylvia},
},
[TRAINER_LEONARDO] =
@@ -8073,8 +8073,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Leonardo }
+ .partySize = ARRAY_COUNT(sParty_Leonardo),
+ .party = {.NoItemDefaultMoves = sParty_Leonardo},
},
[TRAINER_ATHENA] =
@@ -8087,8 +8087,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.ItemCustomMoves = sParty_Athena }
+ .partySize = ARRAY_COUNT(sParty_Athena),
+ .party = {.ItemCustomMoves = sParty_Athena},
},
[TRAINER_HARRISON] =
@@ -8101,8 +8101,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Harrison }
+ .partySize = ARRAY_COUNT(sParty_Harrison),
+ .party = {.NoItemDefaultMoves = sParty_Harrison},
},
[TRAINER_GRUNT_31] =
@@ -8115,8 +8115,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt31 }
+ .partySize = ARRAY_COUNT(sParty_Grunt31),
+ .party = {.NoItemDefaultMoves = sParty_Grunt31},
},
[TRAINER_CLARENCE] =
@@ -8129,8 +8129,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Clarence }
+ .partySize = ARRAY_COUNT(sParty_Clarence),
+ .party = {.NoItemDefaultMoves = sParty_Clarence},
},
[TRAINER_TERRY] =
@@ -8143,8 +8143,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Terry }
+ .partySize = ARRAY_COUNT(sParty_Terry),
+ .party = {.NoItemDefaultMoves = sParty_Terry},
},
[TRAINER_NATE] =
@@ -8157,8 +8157,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nate }
+ .partySize = ARRAY_COUNT(sParty_Nate),
+ .party = {.NoItemDefaultMoves = sParty_Nate},
},
[TRAINER_KATHLEEN] =
@@ -8171,8 +8171,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kathleen }
+ .partySize = ARRAY_COUNT(sParty_Kathleen),
+ .party = {.NoItemDefaultMoves = sParty_Kathleen},
},
[TRAINER_CLIFFORD] =
@@ -8185,8 +8185,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Clifford }
+ .partySize = ARRAY_COUNT(sParty_Clifford),
+ .party = {.NoItemDefaultMoves = sParty_Clifford},
},
[TRAINER_NICHOLAS] =
@@ -8199,8 +8199,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Nicholas }
+ .partySize = ARRAY_COUNT(sParty_Nicholas),
+ .party = {.NoItemDefaultMoves = sParty_Nicholas},
},
[TRAINER_GRUNT_32] =
@@ -8213,8 +8213,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt32 }
+ .partySize = ARRAY_COUNT(sParty_Grunt32),
+ .party = {.NoItemDefaultMoves = sParty_Grunt32},
},
[TRAINER_GRUNT_33] =
@@ -8227,8 +8227,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt33 }
+ .partySize = ARRAY_COUNT(sParty_Grunt33),
+ .party = {.NoItemDefaultMoves = sParty_Grunt33},
},
[TRAINER_GRUNT_34] =
@@ -8241,8 +8241,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt34 }
+ .partySize = ARRAY_COUNT(sParty_Grunt34),
+ .party = {.NoItemDefaultMoves = sParty_Grunt34},
},
[TRAINER_GRUNT_35] =
@@ -8255,8 +8255,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt35 }
+ .partySize = ARRAY_COUNT(sParty_Grunt35),
+ .party = {.NoItemDefaultMoves = sParty_Grunt35},
},
[TRAINER_GRUNT_36] =
@@ -8269,8 +8269,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt36 }
+ .partySize = ARRAY_COUNT(sParty_Grunt36),
+ .party = {.NoItemDefaultMoves = sParty_Grunt36},
},
[TRAINER_MACEY] =
@@ -8283,8 +8283,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Macey }
+ .partySize = ARRAY_COUNT(sParty_Macey),
+ .party = {.NoItemDefaultMoves = sParty_Macey},
},
[TRAINER_BRENDAN_10] =
@@ -8297,8 +8297,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Brendan10 }
+ .partySize = ARRAY_COUNT(sParty_Brendan10),
+ .party = {.NoItemDefaultMoves = sParty_Brendan10},
},
[TRAINER_BRENDAN_11] =
@@ -8311,8 +8311,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Brendan11 }
+ .partySize = ARRAY_COUNT(sParty_Brendan11),
+ .party = {.NoItemDefaultMoves = sParty_Brendan11},
},
[TRAINER_PAXTON] =
@@ -8325,8 +8325,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Paxton }
+ .partySize = ARRAY_COUNT(sParty_Paxton),
+ .party = {.NoItemDefaultMoves = sParty_Paxton},
},
[TRAINER_ISABELLA] =
@@ -8339,8 +8339,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isabella }
+ .partySize = ARRAY_COUNT(sParty_Isabella),
+ .party = {.NoItemDefaultMoves = sParty_Isabella},
},
[TRAINER_GRUNT_37] =
@@ -8353,8 +8353,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt37 }
+ .partySize = ARRAY_COUNT(sParty_Grunt37),
+ .party = {.NoItemDefaultMoves = sParty_Grunt37},
},
[TRAINER_TABITHA_2] =
@@ -8367,8 +8367,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Tabitha2 }
+ .partySize = ARRAY_COUNT(sParty_Tabitha2),
+ .party = {.NoItemDefaultMoves = sParty_Tabitha2},
},
[TRAINER_JONATHAN] =
@@ -8381,8 +8381,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jonathan }
+ .partySize = ARRAY_COUNT(sParty_Jonathan),
+ .party = {.NoItemDefaultMoves = sParty_Jonathan},
},
[TRAINER_BRENDAN_12] =
@@ -8395,8 +8395,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Brendan12 }
+ .partySize = ARRAY_COUNT(sParty_Brendan12),
+ .party = {.NoItemDefaultMoves = sParty_Brendan12},
},
[TRAINER_MAY_10] =
@@ -8409,8 +8409,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_May10 }
+ .partySize = ARRAY_COUNT(sParty_May10),
+ .party = {.NoItemDefaultMoves = sParty_May10},
},
[TRAINER_MAXIE_1] =
@@ -8423,8 +8423,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Maxie1 }
+ .partySize = ARRAY_COUNT(sParty_Maxie1),
+ .party = {.NoItemDefaultMoves = sParty_Maxie1},
},
[TRAINER_MAXIE_2] =
@@ -8437,8 +8437,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Maxie2 }
+ .partySize = ARRAY_COUNT(sParty_Maxie2),
+ .party = {.NoItemDefaultMoves = sParty_Maxie2},
},
[TRAINER_TIANA] =
@@ -8451,8 +8451,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Tiana }
+ .partySize = ARRAY_COUNT(sParty_Tiana),
+ .party = {.NoItemDefaultMoves = sParty_Tiana},
},
[TRAINER_HALEY_1] =
@@ -8465,8 +8465,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Haley1 }
+ .partySize = ARRAY_COUNT(sParty_Haley1),
+ .party = {.NoItemDefaultMoves = sParty_Haley1},
},
[TRAINER_JANICE] =
@@ -8479,8 +8479,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Janice }
+ .partySize = ARRAY_COUNT(sParty_Janice),
+ .party = {.NoItemDefaultMoves = sParty_Janice},
},
[TRAINER_VIVI] =
@@ -8493,8 +8493,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Vivi }
+ .partySize = ARRAY_COUNT(sParty_Vivi),
+ .party = {.NoItemDefaultMoves = sParty_Vivi},
},
[TRAINER_HALEY_2] =
@@ -8507,8 +8507,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Haley2 }
+ .partySize = ARRAY_COUNT(sParty_Haley2),
+ .party = {.NoItemDefaultMoves = sParty_Haley2},
},
[TRAINER_HALEY_3] =
@@ -8521,8 +8521,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Haley3 }
+ .partySize = ARRAY_COUNT(sParty_Haley3),
+ .party = {.NoItemDefaultMoves = sParty_Haley3},
},
[TRAINER_HALEY_4] =
@@ -8535,8 +8535,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Haley4 }
+ .partySize = ARRAY_COUNT(sParty_Haley4),
+ .party = {.NoItemDefaultMoves = sParty_Haley4},
},
[TRAINER_HALEY_5] =
@@ -8549,8 +8549,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Haley5 }
+ .partySize = ARRAY_COUNT(sParty_Haley5),
+ .party = {.NoItemDefaultMoves = sParty_Haley5},
},
[TRAINER_SALLY] =
@@ -8563,8 +8563,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Sally }
+ .partySize = ARRAY_COUNT(sParty_Sally),
+ .party = {.NoItemDefaultMoves = sParty_Sally},
},
[TRAINER_ROBIN] =
@@ -8577,8 +8577,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Robin }
+ .partySize = ARRAY_COUNT(sParty_Robin),
+ .party = {.NoItemDefaultMoves = sParty_Robin},
},
[TRAINER_ANDREA] =
@@ -8591,8 +8591,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Andrea }
+ .partySize = ARRAY_COUNT(sParty_Andrea),
+ .party = {.NoItemDefaultMoves = sParty_Andrea},
},
[TRAINER_CRISSY] =
@@ -8605,8 +8605,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Crissy }
+ .partySize = ARRAY_COUNT(sParty_Crissy),
+ .party = {.NoItemDefaultMoves = sParty_Crissy},
},
[TRAINER_RICK] =
@@ -8619,8 +8619,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Rick }
+ .partySize = ARRAY_COUNT(sParty_Rick),
+ .party = {.NoItemDefaultMoves = sParty_Rick},
},
[TRAINER_LYLE] =
@@ -8633,8 +8633,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Lyle }
+ .partySize = ARRAY_COUNT(sParty_Lyle),
+ .party = {.NoItemDefaultMoves = sParty_Lyle},
},
[TRAINER_JOSE] =
@@ -8647,8 +8647,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jose }
+ .partySize = ARRAY_COUNT(sParty_Jose),
+ .party = {.NoItemDefaultMoves = sParty_Jose},
},
[TRAINER_DOUG] =
@@ -8661,8 +8661,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Doug }
+ .partySize = ARRAY_COUNT(sParty_Doug),
+ .party = {.NoItemDefaultMoves = sParty_Doug},
},
[TRAINER_GREG] =
@@ -8675,8 +8675,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Greg }
+ .partySize = ARRAY_COUNT(sParty_Greg),
+ .party = {.NoItemDefaultMoves = sParty_Greg},
},
[TRAINER_KENT] =
@@ -8689,8 +8689,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kent }
+ .partySize = ARRAY_COUNT(sParty_Kent),
+ .party = {.NoItemDefaultMoves = sParty_Kent},
},
[TRAINER_JAMES_1] =
@@ -8703,8 +8703,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_James1 }
+ .partySize = ARRAY_COUNT(sParty_James1),
+ .party = {.NoItemDefaultMoves = sParty_James1},
},
[TRAINER_JAMES_2] =
@@ -8717,8 +8717,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_James2 }
+ .partySize = ARRAY_COUNT(sParty_James2),
+ .party = {.NoItemDefaultMoves = sParty_James2},
},
[TRAINER_JAMES_3] =
@@ -8731,8 +8731,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_James3 }
+ .partySize = ARRAY_COUNT(sParty_James3),
+ .party = {.NoItemDefaultMoves = sParty_James3},
},
[TRAINER_JAMES_4] =
@@ -8745,8 +8745,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_James4 }
+ .partySize = ARRAY_COUNT(sParty_James4),
+ .party = {.NoItemDefaultMoves = sParty_James4},
},
[TRAINER_JAMES_5] =
@@ -8759,8 +8759,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_James5 }
+ .partySize = ARRAY_COUNT(sParty_James5),
+ .party = {.NoItemDefaultMoves = sParty_James5},
},
[TRAINER_BRICE] =
@@ -8773,8 +8773,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Brice }
+ .partySize = ARRAY_COUNT(sParty_Brice),
+ .party = {.NoItemDefaultMoves = sParty_Brice},
},
[TRAINER_TRENT_1] =
@@ -8787,8 +8787,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Trent1 }
+ .partySize = ARRAY_COUNT(sParty_Trent1),
+ .party = {.NoItemDefaultMoves = sParty_Trent1},
},
[TRAINER_LENNY] =
@@ -8801,8 +8801,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lenny }
+ .partySize = ARRAY_COUNT(sParty_Lenny),
+ .party = {.NoItemDefaultMoves = sParty_Lenny},
},
[TRAINER_LUCAS_1] =
@@ -8815,8 +8815,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lucas1 }
+ .partySize = ARRAY_COUNT(sParty_Lucas1),
+ .party = {.NoItemDefaultMoves = sParty_Lucas1},
},
[TRAINER_ALAN] =
@@ -8829,8 +8829,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Alan }
+ .partySize = ARRAY_COUNT(sParty_Alan),
+ .party = {.NoItemDefaultMoves = sParty_Alan},
},
[TRAINER_CLARK] =
@@ -8843,8 +8843,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Clark }
+ .partySize = ARRAY_COUNT(sParty_Clark),
+ .party = {.NoItemDefaultMoves = sParty_Clark},
},
[TRAINER_ERIC] =
@@ -8857,8 +8857,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Eric }
+ .partySize = ARRAY_COUNT(sParty_Eric),
+ .party = {.NoItemDefaultMoves = sParty_Eric},
},
[TRAINER_LUCAS_2] =
@@ -8871,8 +8871,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Lucas2 }
+ .partySize = ARRAY_COUNT(sParty_Lucas2),
+ .party = {.NoItemCustomMoves = sParty_Lucas2},
},
[TRAINER_MIKE_1] =
@@ -8885,8 +8885,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Mike1 }
+ .partySize = ARRAY_COUNT(sParty_Mike1),
+ .party = {.NoItemCustomMoves = sParty_Mike1},
},
[TRAINER_MIKE_2] =
@@ -8899,8 +8899,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Mike2 }
+ .partySize = ARRAY_COUNT(sParty_Mike2),
+ .party = {.NoItemDefaultMoves = sParty_Mike2},
},
[TRAINER_TRENT_2] =
@@ -8913,8 +8913,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Trent2 }
+ .partySize = ARRAY_COUNT(sParty_Trent2),
+ .party = {.NoItemDefaultMoves = sParty_Trent2},
},
[TRAINER_TRENT_3] =
@@ -8927,8 +8927,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Trent3 }
+ .partySize = ARRAY_COUNT(sParty_Trent3),
+ .party = {.NoItemDefaultMoves = sParty_Trent3},
},
[TRAINER_TRENT_4] =
@@ -8941,8 +8941,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Trent4 }
+ .partySize = ARRAY_COUNT(sParty_Trent4),
+ .party = {.NoItemDefaultMoves = sParty_Trent4},
},
[TRAINER_TRENT_5] =
@@ -8955,8 +8955,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Trent5 }
+ .partySize = ARRAY_COUNT(sParty_Trent5),
+ .party = {.NoItemDefaultMoves = sParty_Trent5},
},
[TRAINER_DEZ_AND_LUKE] =
@@ -8969,8 +8969,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_DezAndLuke }
+ .partySize = ARRAY_COUNT(sParty_DezAndLuke),
+ .party = {.NoItemDefaultMoves = sParty_DezAndLuke},
},
[TRAINER_LEA_AND_JED] =
@@ -8983,8 +8983,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LeaAndJed }
+ .partySize = ARRAY_COUNT(sParty_LeaAndJed),
+ .party = {.NoItemDefaultMoves = sParty_LeaAndJed},
},
[TRAINER_KIRA_AND_DAN_1] =
@@ -8997,8 +8997,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_KiraAndDan1 }
+ .partySize = ARRAY_COUNT(sParty_KiraAndDan1),
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan1},
},
[TRAINER_KIRA_AND_DAN_2] =
@@ -9011,8 +9011,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_KiraAndDan2 }
+ .partySize = ARRAY_COUNT(sParty_KiraAndDan2),
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan2},
},
[TRAINER_KIRA_AND_DAN_3] =
@@ -9025,8 +9025,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_KiraAndDan3 }
+ .partySize = ARRAY_COUNT(sParty_KiraAndDan3),
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan3},
},
[TRAINER_KIRA_AND_DAN_4] =
@@ -9039,8 +9039,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_KiraAndDan4 }
+ .partySize = ARRAY_COUNT(sParty_KiraAndDan4),
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan4},
},
[TRAINER_KIRA_AND_DAN_5] =
@@ -9053,8 +9053,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_KiraAndDan5 }
+ .partySize = ARRAY_COUNT(sParty_KiraAndDan5),
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan5},
},
[TRAINER_JOHANNA] =
@@ -9067,8 +9067,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Johanna }
+ .partySize = ARRAY_COUNT(sParty_Johanna),
+ .party = {.NoItemDefaultMoves = sParty_Johanna},
},
[TRAINER_GERALD] =
@@ -9081,8 +9081,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Gerald }
+ .partySize = ARRAY_COUNT(sParty_Gerald),
+ .party = {.NoItemCustomMoves = sParty_Gerald},
},
[TRAINER_VIVIAN] =
@@ -9095,8 +9095,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Vivian }
+ .partySize = ARRAY_COUNT(sParty_Vivian),
+ .party = {.NoItemCustomMoves = sParty_Vivian},
},
[TRAINER_DANIELLE] =
@@ -9109,8 +9109,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Danielle }
+ .partySize = ARRAY_COUNT(sParty_Danielle),
+ .party = {.NoItemCustomMoves = sParty_Danielle},
},
[TRAINER_HIDEO] =
@@ -9123,8 +9123,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Hideo }
+ .partySize = ARRAY_COUNT(sParty_Hideo),
+ .party = {.NoItemCustomMoves = sParty_Hideo},
},
[TRAINER_KEIGO] =
@@ -9137,8 +9137,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Keigo }
+ .partySize = ARRAY_COUNT(sParty_Keigo),
+ .party = {.NoItemCustomMoves = sParty_Keigo},
},
[TRAINER_RILEY] =
@@ -9151,8 +9151,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_Riley }
+ .partySize = ARRAY_COUNT(sParty_Riley),
+ .party = {.NoItemCustomMoves = sParty_Riley},
},
[TRAINER_FLINT] =
@@ -9165,8 +9165,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Flint }
+ .partySize = ARRAY_COUNT(sParty_Flint),
+ .party = {.NoItemDefaultMoves = sParty_Flint},
},
[TRAINER_ASHLEY] =
@@ -9179,8 +9179,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Ashley }
+ .partySize = ARRAY_COUNT(sParty_Ashley),
+ .party = {.NoItemDefaultMoves = sParty_Ashley},
},
[TRAINER_WALLY_2] =
@@ -9193,8 +9193,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Wally2 }
+ .partySize = ARRAY_COUNT(sParty_Wally2),
+ .party = {.NoItemDefaultMoves = sParty_Wally2},
},
[TRAINER_WALLY_3] =
@@ -9207,8 +9207,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Wally3 }
+ .partySize = ARRAY_COUNT(sParty_Wally3),
+ .party = {.NoItemCustomMoves = sParty_Wally3},
},
[TRAINER_WALLY_4] =
@@ -9221,8 +9221,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Wally4 }
+ .partySize = ARRAY_COUNT(sParty_Wally4),
+ .party = {.NoItemCustomMoves = sParty_Wally4},
},
[TRAINER_WALLY_5] =
@@ -9235,8 +9235,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Wally5 }
+ .partySize = ARRAY_COUNT(sParty_Wally5),
+ .party = {.NoItemCustomMoves = sParty_Wally5},
},
[TRAINER_WALLY_6] =
@@ -9249,8 +9249,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.NoItemCustomMoves = sParty_Wally6 }
+ .partySize = ARRAY_COUNT(sParty_Wally6),
+ .party = {.NoItemCustomMoves = sParty_Wally6},
},
[TRAINER_BRENDAN_13] =
@@ -9263,8 +9263,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Brendan13 }
+ .partySize = ARRAY_COUNT(sParty_Brendan13),
+ .party = {.NoItemDefaultMoves = sParty_Brendan13},
},
[TRAINER_BRENDAN_14] =
@@ -9277,8 +9277,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Brendan14 }
+ .partySize = ARRAY_COUNT(sParty_Brendan14),
+ .party = {.NoItemDefaultMoves = sParty_Brendan14},
},
[TRAINER_BRENDAN_15] =
@@ -9291,8 +9291,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Brendan15 }
+ .partySize = ARRAY_COUNT(sParty_Brendan15),
+ .party = {.NoItemDefaultMoves = sParty_Brendan15},
},
[TRAINER_MAY_11] =
@@ -9305,8 +9305,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_May11 }
+ .partySize = ARRAY_COUNT(sParty_May11),
+ .party = {.NoItemDefaultMoves = sParty_May11},
},
[TRAINER_MAY_12] =
@@ -9319,8 +9319,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_May12 }
+ .partySize = ARRAY_COUNT(sParty_May12),
+ .party = {.NoItemDefaultMoves = sParty_May12},
},
[TRAINER_MAY_13] =
@@ -9333,8 +9333,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_May13 }
+ .partySize = ARRAY_COUNT(sParty_May13),
+ .party = {.NoItemDefaultMoves = sParty_May13},
},
[TRAINER_JONAH] =
@@ -9347,8 +9347,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Jonah }
+ .partySize = ARRAY_COUNT(sParty_Jonah),
+ .party = {.NoItemDefaultMoves = sParty_Jonah},
},
[TRAINER_HENRY] =
@@ -9361,8 +9361,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Henry }
+ .partySize = ARRAY_COUNT(sParty_Henry),
+ .party = {.NoItemDefaultMoves = sParty_Henry},
},
[TRAINER_ROGER] =
@@ -9375,8 +9375,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Roger }
+ .partySize = ARRAY_COUNT(sParty_Roger),
+ .party = {.NoItemDefaultMoves = sParty_Roger},
},
[TRAINER_ALEXA] =
@@ -9389,8 +9389,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alexa }
+ .partySize = ARRAY_COUNT(sParty_Alexa),
+ .party = {.NoItemDefaultMoves = sParty_Alexa},
},
[TRAINER_RUBEN] =
@@ -9403,8 +9403,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Ruben }
+ .partySize = ARRAY_COUNT(sParty_Ruben),
+ .party = {.NoItemDefaultMoves = sParty_Ruben},
},
[TRAINER_KOJI_1] =
@@ -9417,8 +9417,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Koji1 }
+ .partySize = ARRAY_COUNT(sParty_Koji1),
+ .party = {.NoItemDefaultMoves = sParty_Koji1},
},
[TRAINER_WAYNE] =
@@ -9431,8 +9431,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Wayne }
+ .partySize = ARRAY_COUNT(sParty_Wayne),
+ .party = {.NoItemDefaultMoves = sParty_Wayne},
},
[TRAINER_AIDAN] =
@@ -9445,8 +9445,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Aidan }
+ .partySize = ARRAY_COUNT(sParty_Aidan),
+ .party = {.NoItemDefaultMoves = sParty_Aidan},
},
[TRAINER_REED] =
@@ -9459,8 +9459,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Reed }
+ .partySize = ARRAY_COUNT(sParty_Reed),
+ .party = {.NoItemDefaultMoves = sParty_Reed},
},
[TRAINER_TISHA] =
@@ -9473,8 +9473,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tisha }
+ .partySize = ARRAY_COUNT(sParty_Tisha),
+ .party = {.NoItemDefaultMoves = sParty_Tisha},
},
[TRAINER_TORI_AND_TIA] =
@@ -9487,8 +9487,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_ToriAndTia }
+ .partySize = ARRAY_COUNT(sParty_ToriAndTia),
+ .party = {.NoItemDefaultMoves = sParty_ToriAndTia},
},
[TRAINER_KIM_AND_IRIS] =
@@ -9501,8 +9501,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_KimAndIris }
+ .partySize = ARRAY_COUNT(sParty_KimAndIris),
+ .party = {.NoItemCustomMoves = sParty_KimAndIris},
},
[TRAINER_TYRA_AND_IVY] =
@@ -9515,8 +9515,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_TyraAndIvy }
+ .partySize = ARRAY_COUNT(sParty_TyraAndIvy),
+ .party = {.NoItemCustomMoves = sParty_TyraAndIvy},
},
[TRAINER_MEL_AND_PAUL] =
@@ -9529,8 +9529,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_MelAndPaul }
+ .partySize = ARRAY_COUNT(sParty_MelAndPaul),
+ .party = {.NoItemCustomMoves = sParty_MelAndPaul},
},
[TRAINER_JOHN_AND_JAY_1] =
@@ -9543,8 +9543,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_JohnAndJay1 }
+ .partySize = ARRAY_COUNT(sParty_JohnAndJay1),
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay1},
},
[TRAINER_JOHN_AND_JAY_2] =
@@ -9557,8 +9557,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_JohnAndJay2 }
+ .partySize = ARRAY_COUNT(sParty_JohnAndJay2),
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay2},
},
[TRAINER_JOHN_AND_JAY_3] =
@@ -9571,8 +9571,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_JohnAndJay3 }
+ .partySize = ARRAY_COUNT(sParty_JohnAndJay3),
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay3},
},
[TRAINER_JOHN_AND_JAY_4] =
@@ -9585,8 +9585,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_JohnAndJay4 }
+ .partySize = ARRAY_COUNT(sParty_JohnAndJay4),
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay4},
},
[TRAINER_JOHN_AND_JAY_5] =
@@ -9599,8 +9599,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemCustomMoves = sParty_JohnAndJay5 }
+ .partySize = ARRAY_COUNT(sParty_JohnAndJay5),
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay5},
},
[TRAINER_RELI_AND_IAN] =
@@ -9613,8 +9613,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_ReliAndIan }
+ .partySize = ARRAY_COUNT(sParty_ReliAndIan),
+ .party = {.NoItemDefaultMoves = sParty_ReliAndIan},
},
[TRAINER_LILA_AND_ROY_1] =
@@ -9627,8 +9627,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LilaAndRoy1 }
+ .partySize = ARRAY_COUNT(sParty_LilaAndRoy1),
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy1},
},
[TRAINER_LILA_AND_ROY_2] =
@@ -9641,8 +9641,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LilaAndRoy2 }
+ .partySize = ARRAY_COUNT(sParty_LilaAndRoy2),
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy2},
},
[TRAINER_LILA_AND_ROY_3] =
@@ -9655,8 +9655,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LilaAndRoy3 }
+ .partySize = ARRAY_COUNT(sParty_LilaAndRoy3),
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy3},
},
[TRAINER_LILA_AND_ROY_4] =
@@ -9669,8 +9669,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LilaAndRoy4 }
+ .partySize = ARRAY_COUNT(sParty_LilaAndRoy4),
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy4},
},
[TRAINER_LILA_AND_ROY_5] =
@@ -9683,8 +9683,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LilaAndRoy5 }
+ .partySize = ARRAY_COUNT(sParty_LilaAndRoy5),
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy5},
},
[TRAINER_LISA_AND_RAY] =
@@ -9697,8 +9697,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_LisaAndRay }
+ .partySize = ARRAY_COUNT(sParty_LisaAndRay),
+ .party = {.NoItemDefaultMoves = sParty_LisaAndRay},
},
[TRAINER_CHRIS] =
@@ -9711,8 +9711,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Chris }
+ .partySize = ARRAY_COUNT(sParty_Chris),
+ .party = {.NoItemDefaultMoves = sParty_Chris},
},
[TRAINER_DAWSON] =
@@ -9725,8 +9725,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Dawson }
+ .partySize = ARRAY_COUNT(sParty_Dawson),
+ .party = {.ItemDefaultMoves = sParty_Dawson},
},
[TRAINER_SARAH] =
@@ -9739,8 +9739,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Sarah }
+ .partySize = ARRAY_COUNT(sParty_Sarah),
+ .party = {.ItemDefaultMoves = sParty_Sarah},
},
[TRAINER_DARIAN] =
@@ -9753,8 +9753,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Darian }
+ .partySize = ARRAY_COUNT(sParty_Darian),
+ .party = {.NoItemDefaultMoves = sParty_Darian},
},
[TRAINER_HAILEY] =
@@ -9767,8 +9767,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Hailey }
+ .partySize = ARRAY_COUNT(sParty_Hailey),
+ .party = {.NoItemDefaultMoves = sParty_Hailey},
},
[TRAINER_CHANDLER] =
@@ -9781,8 +9781,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Chandler }
+ .partySize = ARRAY_COUNT(sParty_Chandler),
+ .party = {.NoItemDefaultMoves = sParty_Chandler},
},
[TRAINER_KALEB] =
@@ -9795,8 +9795,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.ItemDefaultMoves = sParty_Kaleb }
+ .partySize = ARRAY_COUNT(sParty_Kaleb),
+ .party = {.ItemDefaultMoves = sParty_Kaleb},
},
[TRAINER_JOSEPH] =
@@ -9809,8 +9809,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Joseph }
+ .partySize = ARRAY_COUNT(sParty_Joseph),
+ .party = {.NoItemDefaultMoves = sParty_Joseph},
},
[TRAINER_ALYSSA] =
@@ -9823,8 +9823,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Alyssa }
+ .partySize = ARRAY_COUNT(sParty_Alyssa),
+ .party = {.NoItemDefaultMoves = sParty_Alyssa},
},
[TRAINER_MARCOS] =
@@ -9837,8 +9837,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Marcos }
+ .partySize = ARRAY_COUNT(sParty_Marcos),
+ .party = {.NoItemDefaultMoves = sParty_Marcos},
},
[TRAINER_RHETT] =
@@ -9851,8 +9851,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Rhett }
+ .partySize = ARRAY_COUNT(sParty_Rhett),
+ .party = {.NoItemDefaultMoves = sParty_Rhett},
},
[TRAINER_TYRON] =
@@ -9865,8 +9865,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tyron }
+ .partySize = ARRAY_COUNT(sParty_Tyron),
+ .party = {.NoItemDefaultMoves = sParty_Tyron},
},
[TRAINER_CELINA] =
@@ -9879,8 +9879,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Celina }
+ .partySize = ARRAY_COUNT(sParty_Celina),
+ .party = {.NoItemDefaultMoves = sParty_Celina},
},
[TRAINER_BIANCA] =
@@ -9893,8 +9893,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Bianca }
+ .partySize = ARRAY_COUNT(sParty_Bianca),
+ .party = {.NoItemDefaultMoves = sParty_Bianca},
},
[TRAINER_HAYDEN] =
@@ -9907,8 +9907,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Hayden }
+ .partySize = ARRAY_COUNT(sParty_Hayden),
+ .party = {.NoItemDefaultMoves = sParty_Hayden},
},
[TRAINER_SOPHIE] =
@@ -9921,8 +9921,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Sophie }
+ .partySize = ARRAY_COUNT(sParty_Sophie),
+ .party = {.NoItemDefaultMoves = sParty_Sophie},
},
[TRAINER_COBY] =
@@ -9935,8 +9935,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Coby }
+ .partySize = ARRAY_COUNT(sParty_Coby),
+ .party = {.NoItemDefaultMoves = sParty_Coby},
},
[TRAINER_LAWRENCE] =
@@ -9949,8 +9949,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Lawrence }
+ .partySize = ARRAY_COUNT(sParty_Lawrence),
+ .party = {.NoItemDefaultMoves = sParty_Lawrence},
},
[TRAINER_WYATT] =
@@ -9963,8 +9963,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Wyatt }
+ .partySize = ARRAY_COUNT(sParty_Wyatt),
+ .party = {.NoItemDefaultMoves = sParty_Wyatt},
},
[TRAINER_ANGELINA] =
@@ -9977,8 +9977,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Angelina }
+ .partySize = ARRAY_COUNT(sParty_Angelina),
+ .party = {.NoItemDefaultMoves = sParty_Angelina},
},
[TRAINER_KAI] =
@@ -9991,8 +9991,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Kai }
+ .partySize = ARRAY_COUNT(sParty_Kai),
+ .party = {.NoItemDefaultMoves = sParty_Kai},
},
[TRAINER_CHARLOTTE] =
@@ -10005,8 +10005,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Charlotte }
+ .partySize = ARRAY_COUNT(sParty_Charlotte),
+ .party = {.NoItemDefaultMoves = sParty_Charlotte},
},
[TRAINER_DEANDRE] =
@@ -10019,8 +10019,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Deandre }
+ .partySize = ARRAY_COUNT(sParty_Deandre),
+ .party = {.NoItemDefaultMoves = sParty_Deandre},
},
[TRAINER_GRUNT_38] =
@@ -10033,8 +10033,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt38 }
+ .partySize = ARRAY_COUNT(sParty_Grunt38),
+ .party = {.NoItemDefaultMoves = sParty_Grunt38},
},
[TRAINER_GRUNT_39] =
@@ -10047,8 +10047,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt39 }
+ .partySize = ARRAY_COUNT(sParty_Grunt39),
+ .party = {.NoItemDefaultMoves = sParty_Grunt39},
},
[TRAINER_GRUNT_40] =
@@ -10061,8 +10061,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt40 }
+ .partySize = ARRAY_COUNT(sParty_Grunt40),
+ .party = {.NoItemDefaultMoves = sParty_Grunt40},
},
[TRAINER_GRUNT_41] =
@@ -10075,8 +10075,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt41 }
+ .partySize = ARRAY_COUNT(sParty_Grunt41),
+ .party = {.NoItemDefaultMoves = sParty_Grunt41},
},
[TRAINER_GRUNT_42] =
@@ -10089,8 +10089,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Grunt42 }
+ .partySize = ARRAY_COUNT(sParty_Grunt42),
+ .party = {.NoItemDefaultMoves = sParty_Grunt42},
},
[TRAINER_GRUNT_43] =
@@ -10103,8 +10103,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt43 }
+ .partySize = ARRAY_COUNT(sParty_Grunt43),
+ .party = {.NoItemDefaultMoves = sParty_Grunt43},
},
[TRAINER_GRUNT_44] =
@@ -10117,8 +10117,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt44 }
+ .partySize = ARRAY_COUNT(sParty_Grunt44),
+ .party = {.NoItemDefaultMoves = sParty_Grunt44},
},
[TRAINER_GRUNT_45] =
@@ -10131,8 +10131,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt45 }
+ .partySize = ARRAY_COUNT(sParty_Grunt45),
+ .party = {.NoItemDefaultMoves = sParty_Grunt45},
},
[TRAINER_GRUNT_46] =
@@ -10145,8 +10145,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt46 }
+ .partySize = ARRAY_COUNT(sParty_Grunt46),
+ .party = {.NoItemDefaultMoves = sParty_Grunt46},
},
[TRAINER_GRUNT_47] =
@@ -10159,8 +10159,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt47 }
+ .partySize = ARRAY_COUNT(sParty_Grunt47),
+ .party = {.NoItemDefaultMoves = sParty_Grunt47},
},
[TRAINER_GRUNT_48] =
@@ -10173,8 +10173,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt48 }
+ .partySize = ARRAY_COUNT(sParty_Grunt48),
+ .party = {.NoItemDefaultMoves = sParty_Grunt48},
},
[TRAINER_GRUNT_49] =
@@ -10187,8 +10187,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt49 }
+ .partySize = ARRAY_COUNT(sParty_Grunt49),
+ .party = {.NoItemDefaultMoves = sParty_Grunt49},
},
[TRAINER_GRUNT_50] =
@@ -10201,8 +10201,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt50 }
+ .partySize = ARRAY_COUNT(sParty_Grunt50),
+ .party = {.NoItemDefaultMoves = sParty_Grunt50},
},
[TRAINER_GRUNT_51] =
@@ -10215,8 +10215,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt51 }
+ .partySize = ARRAY_COUNT(sParty_Grunt51),
+ .party = {.NoItemDefaultMoves = sParty_Grunt51},
},
[TRAINER_GRUNT_52] =
@@ -10229,8 +10229,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt52 }
+ .partySize = ARRAY_COUNT(sParty_Grunt52),
+ .party = {.NoItemDefaultMoves = sParty_Grunt52},
},
[TRAINER_GRUNT_53] =
@@ -10243,8 +10243,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Grunt53 }
+ .partySize = ARRAY_COUNT(sParty_Grunt53),
+ .party = {.NoItemDefaultMoves = sParty_Grunt53},
},
[TRAINER_TABITHA_3] =
@@ -10257,8 +10257,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 4,
- .party = {.NoItemDefaultMoves = sParty_Tabitha3 }
+ .partySize = ARRAY_COUNT(sParty_Tabitha3),
+ .party = {.NoItemDefaultMoves = sParty_Tabitha3},
},
[TRAINER_DARCY] =
@@ -10271,8 +10271,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Darcy }
+ .partySize = ARRAY_COUNT(sParty_Darcy),
+ .party = {.NoItemDefaultMoves = sParty_Darcy},
},
[TRAINER_MAXIE_3] =
@@ -10285,8 +10285,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Maxie3 }
+ .partySize = ARRAY_COUNT(sParty_Maxie3),
+ .party = {.NoItemDefaultMoves = sParty_Maxie3},
},
[TRAINER_PETE] =
@@ -10299,8 +10299,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Pete }
+ .partySize = ARRAY_COUNT(sParty_Pete),
+ .party = {.NoItemDefaultMoves = sParty_Pete},
},
[TRAINER_ISABELLE] =
@@ -10313,8 +10313,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Isabelle }
+ .partySize = ARRAY_COUNT(sParty_Isabelle),
+ .party = {.NoItemDefaultMoves = sParty_Isabelle},
},
[TRAINER_ANDRES_1] =
@@ -10327,8 +10327,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Andres1 }
+ .partySize = ARRAY_COUNT(sParty_Andres1),
+ .party = {.NoItemDefaultMoves = sParty_Andres1},
},
[TRAINER_JOSUE] =
@@ -10341,8 +10341,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Josue }
+ .partySize = ARRAY_COUNT(sParty_Josue),
+ .party = {.NoItemDefaultMoves = sParty_Josue},
},
[TRAINER_CAMRON] =
@@ -10355,8 +10355,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Camron }
+ .partySize = ARRAY_COUNT(sParty_Camron),
+ .party = {.NoItemDefaultMoves = sParty_Camron},
},
[TRAINER_CORY_1] =
@@ -10369,8 +10369,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cory1 }
+ .partySize = ARRAY_COUNT(sParty_Cory1),
+ .party = {.NoItemDefaultMoves = sParty_Cory1},
},
[TRAINER_CAROLINA] =
@@ -10383,8 +10383,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Carolina }
+ .partySize = ARRAY_COUNT(sParty_Carolina),
+ .party = {.NoItemDefaultMoves = sParty_Carolina},
},
[TRAINER_ELIJAH] =
@@ -10397,8 +10397,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Elijah }
+ .partySize = ARRAY_COUNT(sParty_Elijah),
+ .party = {.NoItemDefaultMoves = sParty_Elijah},
},
[TRAINER_CELIA] =
@@ -10411,8 +10411,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Celia }
+ .partySize = ARRAY_COUNT(sParty_Celia),
+ .party = {.NoItemDefaultMoves = sParty_Celia},
},
[TRAINER_BRYAN] =
@@ -10425,8 +10425,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bryan }
+ .partySize = ARRAY_COUNT(sParty_Bryan),
+ .party = {.NoItemDefaultMoves = sParty_Bryan},
},
[TRAINER_BRANDEN] =
@@ -10439,8 +10439,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Branden }
+ .partySize = ARRAY_COUNT(sParty_Branden),
+ .party = {.NoItemDefaultMoves = sParty_Branden},
},
[TRAINER_BRYANT] =
@@ -10453,8 +10453,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Bryant }
+ .partySize = ARRAY_COUNT(sParty_Bryant),
+ .party = {.NoItemDefaultMoves = sParty_Bryant},
},
[TRAINER_SHAYLA] =
@@ -10467,8 +10467,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Shayla }
+ .partySize = ARRAY_COUNT(sParty_Shayla),
+ .party = {.NoItemDefaultMoves = sParty_Shayla},
},
[TRAINER_KYRA] =
@@ -10481,8 +10481,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Kyra }
+ .partySize = ARRAY_COUNT(sParty_Kyra),
+ .party = {.NoItemDefaultMoves = sParty_Kyra},
},
[TRAINER_JAIDEN] =
@@ -10495,8 +10495,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Jaiden }
+ .partySize = ARRAY_COUNT(sParty_Jaiden),
+ .party = {.NoItemDefaultMoves = sParty_Jaiden},
},
[TRAINER_ALIX] =
@@ -10509,8 +10509,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alix }
+ .partySize = ARRAY_COUNT(sParty_Alix),
+ .party = {.NoItemDefaultMoves = sParty_Alix},
},
[TRAINER_HELENE] =
@@ -10523,8 +10523,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Helene }
+ .partySize = ARRAY_COUNT(sParty_Helene),
+ .party = {.NoItemDefaultMoves = sParty_Helene},
},
[TRAINER_MARLENE] =
@@ -10537,8 +10537,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Marlene }
+ .partySize = ARRAY_COUNT(sParty_Marlene),
+ .party = {.NoItemDefaultMoves = sParty_Marlene},
},
[TRAINER_DEVAN] =
@@ -10551,8 +10551,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Devan }
+ .partySize = ARRAY_COUNT(sParty_Devan),
+ .party = {.NoItemDefaultMoves = sParty_Devan},
},
[TRAINER_JOHNSON] =
@@ -10565,8 +10565,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Johnson }
+ .partySize = ARRAY_COUNT(sParty_Johnson),
+ .party = {.NoItemDefaultMoves = sParty_Johnson},
},
[TRAINER_MELINA] =
@@ -10579,8 +10579,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Melina }
+ .partySize = ARRAY_COUNT(sParty_Melina),
+ .party = {.NoItemDefaultMoves = sParty_Melina},
},
[TRAINER_BRANDI] =
@@ -10593,8 +10593,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brandi }
+ .partySize = ARRAY_COUNT(sParty_Brandi),
+ .party = {.NoItemDefaultMoves = sParty_Brandi},
},
[TRAINER_AISHA] =
@@ -10607,8 +10607,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Aisha }
+ .partySize = ARRAY_COUNT(sParty_Aisha),
+ .party = {.NoItemDefaultMoves = sParty_Aisha},
},
[TRAINER_MAKAYLA] =
@@ -10621,8 +10621,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Makayla }
+ .partySize = ARRAY_COUNT(sParty_Makayla),
+ .party = {.NoItemDefaultMoves = sParty_Makayla},
},
[TRAINER_FABIAN] =
@@ -10635,8 +10635,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Fabian }
+ .partySize = ARRAY_COUNT(sParty_Fabian),
+ .party = {.NoItemDefaultMoves = sParty_Fabian},
},
[TRAINER_DAYTON] =
@@ -10649,8 +10649,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Dayton }
+ .partySize = ARRAY_COUNT(sParty_Dayton),
+ .party = {.NoItemDefaultMoves = sParty_Dayton},
},
[TRAINER_RACHEL] =
@@ -10663,8 +10663,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Rachel }
+ .partySize = ARRAY_COUNT(sParty_Rachel),
+ .party = {.NoItemDefaultMoves = sParty_Rachel},
},
[TRAINER_LEONEL] =
@@ -10677,8 +10677,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemCustomMoves = sParty_Leonel }
+ .partySize = ARRAY_COUNT(sParty_Leonel),
+ .party = {.NoItemCustomMoves = sParty_Leonel},
},
[TRAINER_CALLIE] =
@@ -10691,8 +10691,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Callie }
+ .partySize = ARRAY_COUNT(sParty_Callie),
+ .party = {.NoItemDefaultMoves = sParty_Callie},
},
[TRAINER_CALE] =
@@ -10705,8 +10705,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cale }
+ .partySize = ARRAY_COUNT(sParty_Cale),
+ .party = {.NoItemDefaultMoves = sParty_Cale},
},
[TRAINER_MYLES] =
@@ -10719,8 +10719,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Myles }
+ .partySize = ARRAY_COUNT(sParty_Myles),
+ .party = {.NoItemDefaultMoves = sParty_Myles},
},
[TRAINER_PAT] =
@@ -10733,8 +10733,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Pat }
+ .partySize = ARRAY_COUNT(sParty_Pat),
+ .party = {.NoItemDefaultMoves = sParty_Pat},
},
[TRAINER_CRISTIN_1] =
@@ -10747,8 +10747,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cristin1 }
+ .partySize = ARRAY_COUNT(sParty_Cristin1),
+ .party = {.NoItemDefaultMoves = sParty_Cristin1},
},
[TRAINER_MAY_14] =
@@ -10761,8 +10761,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_May14 }
+ .partySize = ARRAY_COUNT(sParty_May14),
+ .party = {.NoItemDefaultMoves = sParty_May14},
},
[TRAINER_MAY_15] =
@@ -10775,8 +10775,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_May15 }
+ .partySize = ARRAY_COUNT(sParty_May15),
+ .party = {.NoItemDefaultMoves = sParty_May15},
},
[TRAINER_ROXANNE_2] =
@@ -10789,8 +10789,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Roxanne2 }
+ .partySize = ARRAY_COUNT(sParty_Roxanne2),
+ .party = {.ItemCustomMoves = sParty_Roxanne2},
},
[TRAINER_ROXANNE_3] =
@@ -10803,8 +10803,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Roxanne3 }
+ .partySize = ARRAY_COUNT(sParty_Roxanne3),
+ .party = {.ItemCustomMoves = sParty_Roxanne3},
},
[TRAINER_ROXANNE_4] =
@@ -10817,8 +10817,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Roxanne4 }
+ .partySize = ARRAY_COUNT(sParty_Roxanne4),
+ .party = {.ItemCustomMoves = sParty_Roxanne4},
},
[TRAINER_ROXANNE_5] =
@@ -10831,8 +10831,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Roxanne5 }
+ .partySize = ARRAY_COUNT(sParty_Roxanne5),
+ .party = {.ItemCustomMoves = sParty_Roxanne5},
},
[TRAINER_BRAWLY_2] =
@@ -10845,8 +10845,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Brawly2 }
+ .partySize = ARRAY_COUNT(sParty_Brawly2),
+ .party = {.ItemCustomMoves = sParty_Brawly2},
},
[TRAINER_BRAWLY_3] =
@@ -10859,8 +10859,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Brawly3 }
+ .partySize = ARRAY_COUNT(sParty_Brawly3),
+ .party = {.ItemCustomMoves = sParty_Brawly3},
},
[TRAINER_BRAWLY_4] =
@@ -10873,8 +10873,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Brawly4 }
+ .partySize = ARRAY_COUNT(sParty_Brawly4),
+ .party = {.ItemCustomMoves = sParty_Brawly4},
},
[TRAINER_BRAWLY_5] =
@@ -10887,8 +10887,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Brawly5 }
+ .partySize = ARRAY_COUNT(sParty_Brawly5),
+ .party = {.ItemCustomMoves = sParty_Brawly5},
},
[TRAINER_WATTSON_2] =
@@ -10901,8 +10901,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Wattson2 }
+ .partySize = ARRAY_COUNT(sParty_Wattson2),
+ .party = {.ItemCustomMoves = sParty_Wattson2},
},
[TRAINER_WATTSON_3] =
@@ -10915,8 +10915,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Wattson3 }
+ .partySize = ARRAY_COUNT(sParty_Wattson3),
+ .party = {.ItemCustomMoves = sParty_Wattson3},
},
[TRAINER_WATTSON_4] =
@@ -10929,8 +10929,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Wattson4 }
+ .partySize = ARRAY_COUNT(sParty_Wattson4),
+ .party = {.ItemCustomMoves = sParty_Wattson4},
},
[TRAINER_WATTSON_5] =
@@ -10943,8 +10943,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Wattson5 }
+ .partySize = ARRAY_COUNT(sParty_Wattson5),
+ .party = {.ItemCustomMoves = sParty_Wattson5},
},
[TRAINER_FLANNERY_2] =
@@ -10957,8 +10957,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Flannery2 }
+ .partySize = ARRAY_COUNT(sParty_Flannery2),
+ .party = {.ItemCustomMoves = sParty_Flannery2},
},
[TRAINER_FLANNERY_3] =
@@ -10971,8 +10971,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Flannery3 }
+ .partySize = ARRAY_COUNT(sParty_Flannery3),
+ .party = {.ItemCustomMoves = sParty_Flannery3},
},
[TRAINER_FLANNERY_4] =
@@ -10985,8 +10985,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Flannery4 }
+ .partySize = ARRAY_COUNT(sParty_Flannery4),
+ .party = {.ItemCustomMoves = sParty_Flannery4},
},
[TRAINER_FLANNERY_5] =
@@ -10999,8 +10999,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Flannery5 }
+ .partySize = ARRAY_COUNT(sParty_Flannery5),
+ .party = {.ItemCustomMoves = sParty_Flannery5},
},
[TRAINER_NORMAN_2] =
@@ -11013,8 +11013,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 4,
- .party = {.ItemCustomMoves = sParty_Norman2 }
+ .partySize = ARRAY_COUNT(sParty_Norman2),
+ .party = {.ItemCustomMoves = sParty_Norman2},
},
[TRAINER_NORMAN_3] =
@@ -11027,8 +11027,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Norman3 }
+ .partySize = ARRAY_COUNT(sParty_Norman3),
+ .party = {.ItemCustomMoves = sParty_Norman3},
},
[TRAINER_NORMAN_4] =
@@ -11041,8 +11041,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Norman4 }
+ .partySize = ARRAY_COUNT(sParty_Norman4),
+ .party = {.ItemCustomMoves = sParty_Norman4},
},
[TRAINER_NORMAN_5] =
@@ -11055,8 +11055,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Norman5 }
+ .partySize = ARRAY_COUNT(sParty_Norman5),
+ .party = {.ItemCustomMoves = sParty_Norman5},
},
[TRAINER_WINONA_2] =
@@ -11069,8 +11069,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Winona2 }
+ .partySize = ARRAY_COUNT(sParty_Winona2),
+ .party = {.ItemCustomMoves = sParty_Winona2},
},
[TRAINER_WINONA_3] =
@@ -11083,8 +11083,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Winona3 }
+ .partySize = ARRAY_COUNT(sParty_Winona3),
+ .party = {.ItemCustomMoves = sParty_Winona3},
},
[TRAINER_WINONA_4] =
@@ -11097,8 +11097,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Winona4 }
+ .partySize = ARRAY_COUNT(sParty_Winona4),
+ .party = {.ItemCustomMoves = sParty_Winona4},
},
[TRAINER_WINONA_5] =
@@ -11111,8 +11111,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Winona5 }
+ .partySize = ARRAY_COUNT(sParty_Winona5),
+ .party = {.ItemCustomMoves = sParty_Winona5},
},
[TRAINER_TATE_AND_LIZA_2] =
@@ -11125,8 +11125,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_TateAndLiza2 }
+ .partySize = ARRAY_COUNT(sParty_TateAndLiza2),
+ .party = {.ItemCustomMoves = sParty_TateAndLiza2},
},
[TRAINER_TATE_AND_LIZA_3] =
@@ -11139,8 +11139,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_TateAndLiza3 }
+ .partySize = ARRAY_COUNT(sParty_TateAndLiza3),
+ .party = {.ItemCustomMoves = sParty_TateAndLiza3},
},
[TRAINER_TATE_AND_LIZA_4] =
@@ -11153,8 +11153,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_TateAndLiza4 }
+ .partySize = ARRAY_COUNT(sParty_TateAndLiza4),
+ .party = {.ItemCustomMoves = sParty_TateAndLiza4},
},
[TRAINER_TATE_AND_LIZA_5] =
@@ -11167,8 +11167,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_TateAndLiza5 }
+ .partySize = ARRAY_COUNT(sParty_TateAndLiza5),
+ .party = {.ItemCustomMoves = sParty_TateAndLiza5},
},
[TRAINER_JUAN_2] =
@@ -11181,8 +11181,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Juan2 }
+ .partySize = ARRAY_COUNT(sParty_Juan2),
+ .party = {.ItemCustomMoves = sParty_Juan2},
},
[TRAINER_JUAN_3] =
@@ -11195,8 +11195,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 5,
- .party = {.ItemCustomMoves = sParty_Juan3 }
+ .partySize = ARRAY_COUNT(sParty_Juan3),
+ .party = {.ItemCustomMoves = sParty_Juan3},
},
[TRAINER_JUAN_4] =
@@ -11209,8 +11209,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Juan4 }
+ .partySize = ARRAY_COUNT(sParty_Juan4),
+ .party = {.ItemCustomMoves = sParty_Juan4},
},
[TRAINER_JUAN_5] =
@@ -11223,8 +11223,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE},
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Juan5 }
+ .partySize = ARRAY_COUNT(sParty_Juan5),
+ .party = {.ItemCustomMoves = sParty_Juan5},
},
[TRAINER_ANGELO] =
@@ -11237,8 +11237,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.ItemCustomMoves = sParty_Angelo }
+ .partySize = ARRAY_COUNT(sParty_Angelo),
+ .party = {.ItemCustomMoves = sParty_Angelo},
},
[TRAINER_DARIUS] =
@@ -11251,8 +11251,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Darius }
+ .partySize = ARRAY_COUNT(sParty_Darius),
+ .party = {.NoItemDefaultMoves = sParty_Darius},
},
[TRAINER_STEVEN] =
@@ -11265,8 +11265,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 6,
- .party = {.ItemCustomMoves = sParty_Steven }
+ .partySize = ARRAY_COUNT(sParty_Steven),
+ .party = {.ItemCustomMoves = sParty_Steven},
},
[TRAINER_ANABEL] =
@@ -11279,8 +11279,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Anabel }
+ .partySize = ARRAY_COUNT(sParty_Anabel),
+ .party = {.NoItemDefaultMoves = sParty_Anabel},
},
[TRAINER_TUCKER] =
@@ -11293,8 +11293,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Tucker }
+ .partySize = ARRAY_COUNT(sParty_Tucker),
+ .party = {.NoItemDefaultMoves = sParty_Tucker},
},
[TRAINER_SPENSER] =
@@ -11307,8 +11307,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Spenser }
+ .partySize = ARRAY_COUNT(sParty_Spenser),
+ .party = {.NoItemDefaultMoves = sParty_Spenser},
},
[TRAINER_GRETA] =
@@ -11321,8 +11321,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Greta }
+ .partySize = ARRAY_COUNT(sParty_Greta),
+ .party = {.NoItemDefaultMoves = sParty_Greta},
},
[TRAINER_NOLAND] =
@@ -11335,8 +11335,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Noland }
+ .partySize = ARRAY_COUNT(sParty_Noland),
+ .party = {.NoItemDefaultMoves = sParty_Noland},
},
[TRAINER_LUCY] =
@@ -11349,8 +11349,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Lucy }
+ .partySize = ARRAY_COUNT(sParty_Lucy),
+ .party = {.NoItemDefaultMoves = sParty_Lucy},
},
[TRAINER_BRANDON] =
@@ -11363,8 +11363,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brandon }
+ .partySize = ARRAY_COUNT(sParty_Brandon),
+ .party = {.NoItemDefaultMoves = sParty_Brandon},
},
[TRAINER_ANDRES_2] =
@@ -11377,8 +11377,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Andres2 }
+ .partySize = ARRAY_COUNT(sParty_Andres2),
+ .party = {.NoItemDefaultMoves = sParty_Andres2},
},
[TRAINER_ANDRES_3] =
@@ -11391,8 +11391,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Andres3 }
+ .partySize = ARRAY_COUNT(sParty_Andres3),
+ .party = {.NoItemDefaultMoves = sParty_Andres3},
},
[TRAINER_ANDRES_4] =
@@ -11405,8 +11405,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Andres4 }
+ .partySize = ARRAY_COUNT(sParty_Andres4),
+ .party = {.NoItemDefaultMoves = sParty_Andres4},
},
[TRAINER_ANDRES_5] =
@@ -11419,8 +11419,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Andres5 }
+ .partySize = ARRAY_COUNT(sParty_Andres5),
+ .party = {.NoItemDefaultMoves = sParty_Andres5},
},
[TRAINER_CORY_2] =
@@ -11433,8 +11433,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cory2 }
+ .partySize = ARRAY_COUNT(sParty_Cory2),
+ .party = {.NoItemDefaultMoves = sParty_Cory2},
},
[TRAINER_CORY_3] =
@@ -11447,8 +11447,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cory3 }
+ .partySize = ARRAY_COUNT(sParty_Cory3),
+ .party = {.NoItemDefaultMoves = sParty_Cory3},
},
[TRAINER_CORY_4] =
@@ -11461,8 +11461,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cory4 }
+ .partySize = ARRAY_COUNT(sParty_Cory4),
+ .party = {.NoItemDefaultMoves = sParty_Cory4},
},
[TRAINER_CORY_5] =
@@ -11475,8 +11475,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cory5 }
+ .partySize = ARRAY_COUNT(sParty_Cory5),
+ .party = {.NoItemDefaultMoves = sParty_Cory5},
},
[TRAINER_PABLO_2] =
@@ -11489,8 +11489,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Pablo2 }
+ .partySize = ARRAY_COUNT(sParty_Pablo2),
+ .party = {.NoItemDefaultMoves = sParty_Pablo2},
},
[TRAINER_PABLO_3] =
@@ -11503,8 +11503,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Pablo3 }
+ .partySize = ARRAY_COUNT(sParty_Pablo3),
+ .party = {.NoItemDefaultMoves = sParty_Pablo3},
},
[TRAINER_PABLO_4] =
@@ -11517,8 +11517,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Pablo4 }
+ .partySize = ARRAY_COUNT(sParty_Pablo4),
+ .party = {.NoItemDefaultMoves = sParty_Pablo4},
},
[TRAINER_PABLO_5] =
@@ -11531,8 +11531,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Pablo5 }
+ .partySize = ARRAY_COUNT(sParty_Pablo5),
+ .party = {.NoItemDefaultMoves = sParty_Pablo5},
},
[TRAINER_KOJI_2] =
@@ -11545,8 +11545,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Koji2 }
+ .partySize = ARRAY_COUNT(sParty_Koji2),
+ .party = {.NoItemDefaultMoves = sParty_Koji2},
},
[TRAINER_KOJI_3] =
@@ -11559,8 +11559,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Koji3 }
+ .partySize = ARRAY_COUNT(sParty_Koji3),
+ .party = {.NoItemDefaultMoves = sParty_Koji3},
},
[TRAINER_KOJI_4] =
@@ -11573,8 +11573,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Koji4 }
+ .partySize = ARRAY_COUNT(sParty_Koji4),
+ .party = {.NoItemDefaultMoves = sParty_Koji4},
},
[TRAINER_KOJI_5] =
@@ -11587,8 +11587,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Koji5 }
+ .partySize = ARRAY_COUNT(sParty_Koji5),
+ .party = {.NoItemDefaultMoves = sParty_Koji5},
},
[TRAINER_CRISTIN_2] =
@@ -11601,8 +11601,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Cristin2 }
+ .partySize = ARRAY_COUNT(sParty_Cristin2),
+ .party = {.NoItemDefaultMoves = sParty_Cristin2},
},
[TRAINER_CRISTIN_3] =
@@ -11615,8 +11615,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cristin3 }
+ .partySize = ARRAY_COUNT(sParty_Cristin3),
+ .party = {.NoItemDefaultMoves = sParty_Cristin3},
},
[TRAINER_CRISTIN_4] =
@@ -11629,8 +11629,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cristin4 }
+ .partySize = ARRAY_COUNT(sParty_Cristin4),
+ .party = {.NoItemDefaultMoves = sParty_Cristin4},
},
[TRAINER_CRISTIN_5] =
@@ -11643,8 +11643,8 @@ const struct Trainer gTrainers[] = {
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Cristin5 }
+ .partySize = ARRAY_COUNT(sParty_Cristin5),
+ .party = {.NoItemDefaultMoves = sParty_Cristin5},
},
[TRAINER_FERNANDO_2] =
@@ -11657,8 +11657,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Fernando2 }
+ .partySize = ARRAY_COUNT(sParty_Fernando2),
+ .party = {.NoItemDefaultMoves = sParty_Fernando2},
},
[TRAINER_FERNANDO_3] =
@@ -11671,8 +11671,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Fernando3 }
+ .partySize = ARRAY_COUNT(sParty_Fernando3),
+ .party = {.NoItemDefaultMoves = sParty_Fernando3},
},
[TRAINER_FERNANDO_4] =
@@ -11685,8 +11685,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Fernando4 }
+ .partySize = ARRAY_COUNT(sParty_Fernando4),
+ .party = {.NoItemDefaultMoves = sParty_Fernando4},
},
[TRAINER_FERNANDO_5] =
@@ -11699,8 +11699,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Fernando5 }
+ .partySize = ARRAY_COUNT(sParty_Fernando5),
+ .party = {.NoItemDefaultMoves = sParty_Fernando5},
},
[TRAINER_SAWYER_2] =
@@ -11713,8 +11713,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Sawyer2 }
+ .partySize = ARRAY_COUNT(sParty_Sawyer2),
+ .party = {.NoItemDefaultMoves = sParty_Sawyer2},
},
[TRAINER_SAWYER_3] =
@@ -11727,8 +11727,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Sawyer3 }
+ .partySize = ARRAY_COUNT(sParty_Sawyer3),
+ .party = {.NoItemDefaultMoves = sParty_Sawyer3},
},
[TRAINER_SAWYER_4] =
@@ -11741,8 +11741,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Sawyer4 }
+ .partySize = ARRAY_COUNT(sParty_Sawyer4),
+ .party = {.NoItemDefaultMoves = sParty_Sawyer4},
},
[TRAINER_SAWYER_5] =
@@ -11755,8 +11755,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Sawyer5 }
+ .partySize = ARRAY_COUNT(sParty_Sawyer5),
+ .party = {.NoItemDefaultMoves = sParty_Sawyer5},
},
[TRAINER_GABRIELLE_2] =
@@ -11769,8 +11769,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Gabrielle2 }
+ .partySize = ARRAY_COUNT(sParty_Gabrielle2),
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle2},
},
[TRAINER_GABRIELLE_3] =
@@ -11783,8 +11783,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Gabrielle3 }
+ .partySize = ARRAY_COUNT(sParty_Gabrielle3),
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle3},
},
[TRAINER_GABRIELLE_4] =
@@ -11797,8 +11797,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Gabrielle4 }
+ .partySize = ARRAY_COUNT(sParty_Gabrielle4),
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle4},
},
[TRAINER_GABRIELLE_5] =
@@ -11811,8 +11811,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 6,
- .party = {.NoItemDefaultMoves = sParty_Gabrielle5 }
+ .partySize = ARRAY_COUNT(sParty_Gabrielle5),
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle5},
},
[TRAINER_THALIA_2] =
@@ -11825,8 +11825,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Thalia2 }
+ .partySize = ARRAY_COUNT(sParty_Thalia2),
+ .party = {.NoItemDefaultMoves = sParty_Thalia2},
},
[TRAINER_THALIA_3] =
@@ -11839,8 +11839,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Thalia3 }
+ .partySize = ARRAY_COUNT(sParty_Thalia3),
+ .party = {.NoItemDefaultMoves = sParty_Thalia3},
},
[TRAINER_THALIA_4] =
@@ -11853,8 +11853,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Thalia4 }
+ .partySize = ARRAY_COUNT(sParty_Thalia4),
+ .party = {.NoItemDefaultMoves = sParty_Thalia4},
},
[TRAINER_THALIA_5] =
@@ -11867,8 +11867,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
- .partySize = 3,
- .party = {.NoItemDefaultMoves = sParty_Thalia5 }
+ .partySize = ARRAY_COUNT(sParty_Thalia5),
+ .party = {.NoItemDefaultMoves = sParty_Thalia5},
},
[TRAINER_MARIELA] =
@@ -11881,8 +11881,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Mariela }
+ .partySize = ARRAY_COUNT(sParty_Mariela),
+ .party = {.NoItemDefaultMoves = sParty_Mariela},
},
[TRAINER_ALVARO] =
@@ -11895,8 +11895,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 2,
- .party = {.NoItemDefaultMoves = sParty_Alvaro }
+ .partySize = ARRAY_COUNT(sParty_Alvaro),
+ .party = {.NoItemDefaultMoves = sParty_Alvaro},
},
[TRAINER_EVERETT] =
@@ -11909,8 +11909,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Everett }
+ .partySize = ARRAY_COUNT(sParty_Everett),
+ .party = {.NoItemDefaultMoves = sParty_Everett},
},
[TRAINER_RED] =
@@ -11923,8 +11923,8 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Red }
+ .partySize = ARRAY_COUNT(sParty_Red),
+ .party = {.NoItemDefaultMoves = sParty_Red},
},
[TRAINER_LEAF] =
@@ -11937,35 +11937,35 @@ const struct Trainer gTrainers[] = {
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Leaf }
+ .partySize = ARRAY_COUNT(sParty_Leaf),
+ .party = {.NoItemDefaultMoves = sParty_Leaf},
},
[TRAINER_BRENDAN_16] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_PKMN_TRAINER_4,
+ .trainerClass = TRAINER_CLASS_RS_PROTAG,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
.trainerPic = TRAINER_PIC_RS_BRENDAN,
.trainerName = _("BRENDAN"),
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_Brendan16 }
+ .partySize = ARRAY_COUNT(sParty_Brendan16),
+ .party = {.NoItemDefaultMoves = sParty_Brendan16},
},
[TRAINER_MAY_16] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_PKMN_TRAINER_4,
+ .trainerClass = TRAINER_CLASS_RS_PROTAG,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE,
.trainerPic = TRAINER_PIC_RS_MAY,
.trainerName = _("MAY"),
.items = {},
.doubleBattle = FALSE,
.aiFlags = 0,
- .partySize = 1,
- .party = {.NoItemDefaultMoves = sParty_May16 }
+ .partySize = ARRAY_COUNT(sParty_May16),
+ .party = {.NoItemDefaultMoves = sParty_May16},
},
};
diff --git a/src/data/wild_encounters.h b/src/data/wild_encounters.h
deleted file mode 100644
index d1f2eb616..000000000
--- a/src/data/wild_encounters.h
+++ /dev/null
@@ -1,4573 +0,0 @@
-// const rom data
-
-/*This file consists of several parts.
- *First, the actual tables that define the available Pokemon and their level ranges.
- *Second, the headers for each area that links the tables to the actual maps.
- *Third, Battle Pyramid-specific tables and headers.
- *Fourth, Battle Pike-specific tables and headers.
- *And then finally, Feebas-related data.
- *You can search for // to jump between the sections.
- */
-
- //Start of regular Pokemon tables.
-
-const struct WildPokemon gRoute101_LandMons[] =
-{
- {2, 2, SPECIES_WURMPLE},
- {2, 2, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WURMPLE},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {2, 2, SPECIES_ZIGZAGOON},
- {2, 2, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
-};
-
-const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
-
-const struct WildPokemon gRoute102_LandMons[] =
-{
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {3, 3, SPECIES_LOTAD},
- {4, 4, SPECIES_LOTAD},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_RALTS},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
-
-const struct WildPokemon gRoute102_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
-
-const struct WildPokemon gRoute102_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
-
-const struct WildPokemon gRoute103_LandMons[] =
-{
- {2, 2, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {4, 4, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WINGULL},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {2, 2, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
-
-const struct WildPokemon gRoute103_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
-
-const struct WildPokemon gRoute103_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
-
-const struct WildPokemon gRoute104_LandMons[] =
-{
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_MARILL},
- {4, 4, SPECIES_MARILL},
- {5, 5, SPECIES_POOCHYENA},
- {4, 4, SPECIES_TAILLOW},
- {5, 5, SPECIES_TAILLOW},
- {4, 4, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {5, 5, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
-
-const struct WildPokemon gRoute104_WaterMons[] =
-{
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
-
-const struct WildPokemon gRoute104_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {20, 25, SPECIES_MAGIKARP},
- {35, 40, SPECIES_MAGIKARP},
- {40, 45, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
-
-const struct WildPokemon gRoute105_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
-
-const struct WildPokemon gRoute105_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
-
-const struct WildPokemon gRoute110_LandMons[] =
-{
- {12, 12, SPECIES_POOCHYENA},
- {12, 12, SPECIES_ELECTRIKE},
- {12, 12, SPECIES_GULPIN},
- {13, 13, SPECIES_ELECTRIKE},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_GULPIN},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_PLUSLE},
- {13, 13, SPECIES_PLUSLE},
-};
-
-const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
-
-const struct WildPokemon gRoute110_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
-
-const struct WildPokemon gRoute110_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
-
-const struct WildPokemon gRoute111_LandMons[] =
-{
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {19, 19, SPECIES_BALTOY},
- {21, 21, SPECIES_BALTOY},
- {19, 19, SPECIES_SANDSHREW},
- {19, 19, SPECIES_TRAPINCH},
- {20, 20, SPECIES_BALTOY},
- {20, 20, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
-};
-
-const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
-
-const struct WildPokemon gRoute111_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
-
-const struct WildPokemon gRoute111_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
-
-const struct WildPokemon gRoute111_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
-
-const struct WildPokemon gRoute112_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_MARILL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
-};
-
-const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
-
-const struct WildPokemon gRoute113_LandMons[] =
-{
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SLUGMA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
-};
-
-const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
-
-const struct WildPokemon gRoute114_LandMons[] =
-{
- {16, 16, SPECIES_SWABLU},
- {16, 16, SPECIES_LOTAD},
- {17, 17, SPECIES_SWABLU},
- {15, 15, SPECIES_SWABLU},
- {15, 15, SPECIES_LOTAD},
- {16, 16, SPECIES_LOMBRE},
- {16, 16, SPECIES_LOMBRE},
- {18, 18, SPECIES_LOMBRE},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_SEVIPER},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_NUZLEAF},
-};
-
-const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
-
-const struct WildPokemon gRoute114_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
-
-const struct WildPokemon gRoute114_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
-
-const struct WildPokemon gRoute114_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
-
-const struct WildPokemon gRoute116_LandMons[] =
-{
- {6, 6, SPECIES_POOCHYENA},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_NINCADA},
- {7, 7, SPECIES_ABRA},
- {7, 7, SPECIES_NINCADA},
- {6, 6, SPECIES_TAILLOW},
- {7, 7, SPECIES_TAILLOW},
- {8, 8, SPECIES_TAILLOW},
- {7, 7, SPECIES_POOCHYENA},
- {8, 8, SPECIES_POOCHYENA},
- {7, 7, SPECIES_SKITTY},
- {8, 8, SPECIES_SKITTY},
-};
-
-const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
-
-const struct WildPokemon gRoute117_LandMons[] =
-{
- {13, 13, SPECIES_POOCHYENA},
- {13, 13, SPECIES_ODDISH},
- {14, 14, SPECIES_POOCHYENA},
- {14, 14, SPECIES_ODDISH},
- {13, 13, SPECIES_MARILL},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_ILLUMISE},
- {13, 13, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {13, 13, SPECIES_VOLBEAT},
- {13, 13, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
-
-const struct WildPokemon gRoute117_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
-
-const struct WildPokemon gRoute117_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
-
-const struct WildPokemon gRoute118_LandMons[] =
-{
- {24, 24, SPECIES_ZIGZAGOON},
- {24, 24, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_ZIGZAGOON},
- {26, 26, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_LINOONE},
- {26, 26, SPECIES_MANECTRIC},
- {25, 25, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
-
-const struct WildPokemon gRoute118_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
-
-const struct WildPokemon gRoute118_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
-
-const struct WildPokemon gRoute124_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
-
-const struct WildPokemon gRoute124_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
-
-const struct WildPokemon gPetalburgWoods_LandMons[] =
-{
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_WURMPLE},
- {5, 5, SPECIES_SHROOMISH},
- {6, 6, SPECIES_POOCHYENA},
- {5, 5, SPECIES_SILCOON},
- {5, 5, SPECIES_CASCOON},
- {6, 6, SPECIES_WURMPLE},
- {6, 6, SPECIES_SHROOMISH},
- {5, 5, SPECIES_TAILLOW},
- {5, 5, SPECIES_SLAKOTH},
- {6, 6, SPECIES_TAILLOW},
- {6, 6, SPECIES_SLAKOTH},
-};
-
-const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
-
-const struct WildPokemon gRusturfTunnel_LandMons[] =
-{
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
-
-const struct WildPokemon gGraniteCave_1F_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_GEODUDE},
- {8, 8, SPECIES_GEODUDE},
- {6, 6, SPECIES_GEODUDE},
- {9, 9, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
-
-const struct WildPokemon gGraniteCave_B1F_LandMons[] =
-{
- {9, 9, SPECIES_ZUBAT},
- {10, 10, SPECIES_ARON},
- {9, 9, SPECIES_ARON},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ZUBAT},
- {9, 9, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {11, 11, SPECIES_MAKUHITA},
- {10, 10, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {9, 9, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
-
-const struct WildPokemon gMtPyre_1F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LOUDRED},
- {36, 36, SPECIES_ZUBAT},
- {36, 36, SPECIES_MAKUHITA},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
-
-const struct WildPokemon gSafariZone_South_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {25, 25, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
-
-const struct WildPokemon gUnderwater2_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
-
-const struct WildPokemon gGraniteCave_B2F_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ARON},
- {11, 11, SPECIES_ZUBAT},
- {12, 12, SPECIES_ARON},
- {10, 10, SPECIES_ABRA},
- {10, 10, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
-
-const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {10, 20, SPECIES_NOSEPASS},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
-
-const struct WildPokemon gFieryPath_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_KOFFING},
- {16, 16, SPECIES_NUMEL},
- {15, 15, SPECIES_MACHOP},
- {15, 15, SPECIES_TORKOAL},
- {15, 15, SPECIES_SLUGMA},
- {16, 16, SPECIES_KOFFING},
- {16, 16, SPECIES_MACHOP},
- {14, 14, SPECIES_TORKOAL},
- {16, 16, SPECIES_TORKOAL},
- {14, 14, SPECIES_GRIMER},
- {14, 14, SPECIES_GRIMER},
-};
-
-const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {30, 30, SPECIES_BAGON},
- {35, 35, SPECIES_SOLROCK},
- {35, 35, SPECIES_BAGON},
- {37, 37, SPECIES_SOLROCK},
- {25, 25, SPECIES_BAGON},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
-
-const struct WildPokemon gJaggedPass_LandMons[] =
-{
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_MACHOP},
- {20, 20, SPECIES_NUMEL},
- {20, 20, SPECIES_SPOINK},
- {20, 20, SPECIES_MACHOP},
- {21, 21, SPECIES_SPOINK},
- {22, 22, SPECIES_MACHOP},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
-};
-
-const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
-
-const struct WildPokemon gRoute106_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
-
-const struct WildPokemon gRoute106_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
-
-const struct WildPokemon gRoute107_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
-
-const struct WildPokemon gRoute107_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
-
-const struct WildPokemon gRoute108_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
-
-const struct WildPokemon gRoute108_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
-
-const struct WildPokemon gRoute109_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
-
-const struct WildPokemon gRoute109_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
-
-const struct WildPokemon gRoute115_LandMons[] =
-{
- {23, 23, SPECIES_SWABLU},
- {23, 23, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWABLU},
- {24, 24, SPECIES_TAILLOW},
- {25, 25, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWELLOW},
- {24, 24, SPECIES_JIGGLYPUFF},
- {25, 25, SPECIES_JIGGLYPUFF},
- {24, 24, SPECIES_WINGULL},
- {24, 24, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
-
-const struct WildPokemon gRoute115_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
-
-const struct WildPokemon gRoute115_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
-
-const struct WildPokemon gNewMauville_Inside_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_ELECTRODE},
- {26, 26, SPECIES_MAGNETON},
-};
-
-const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
-
-const struct WildPokemon gRoute119_LandMons[] =
-{
- {25, 25, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_LINOONE},
- {27, 27, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_LINOONE},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {24, 24, SPECIES_ODDISH},
- {25, 25, SPECIES_TROPIUS},
- {26, 26, SPECIES_TROPIUS},
- {27, 27, SPECIES_TROPIUS},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
-
-const struct WildPokemon gRoute119_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
-
-const struct WildPokemon gRoute119_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {25, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
-
-const struct WildPokemon gRoute120_LandMons[] =
-{
- {25, 25, SPECIES_POOCHYENA},
- {25, 25, SPECIES_MIGHTYENA},
- {27, 27, SPECIES_MIGHTYENA},
- {25, 25, SPECIES_ODDISH},
- {25, 25, SPECIES_MARILL},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {27, 27, SPECIES_MARILL},
- {25, 25, SPECIES_ABSOL},
- {27, 27, SPECIES_ABSOL},
- {25, 25, SPECIES_KECLEON},
- {25, 25, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
-
-const struct WildPokemon gRoute120_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
-
-const struct WildPokemon gRoute120_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
-
-const struct WildPokemon gRoute121_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
-
-const struct WildPokemon gRoute121_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
-
-const struct WildPokemon gRoute121_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
-
-const struct WildPokemon gRoute122_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
-
-const struct WildPokemon gRoute122_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
-
-const struct WildPokemon gRoute123_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
-
-const struct WildPokemon gRoute123_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
-
-const struct WildPokemon gRoute123_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
-
-const struct WildPokemon gMtPyre_2F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
-
-const struct WildPokemon gMtPyre_3F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
-
-const struct WildPokemon gMtPyre_4F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
-
-const struct WildPokemon gMtPyre_5F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
-
-const struct WildPokemon gMtPyre_6F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
-
-const struct WildPokemon gMtPyre_Exterior_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {29, 29, SPECIES_VULPIX},
- {27, 27, SPECIES_VULPIX},
- {29, 29, SPECIES_VULPIX},
- {25, 25, SPECIES_VULPIX},
- {27, 27, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
-
-const struct WildPokemon gMtPyre_Summit_LandMons[] =
-{
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {30, 30, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {28, 28, SPECIES_DUSKULL},
- {26, 26, SPECIES_DUSKULL},
- {30, 30, SPECIES_DUSKULL},
- {28, 28, SPECIES_CHIMECHO},
- {28, 28, SPECIES_CHIMECHO},
-};
-
-const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
-
-const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
-};
-
-const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
-
-const struct WildPokemon gRoute125_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
-
-const struct WildPokemon gRoute125_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
-
-const struct WildPokemon gRoute126_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
-
-const struct WildPokemon gRoute126_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
-
-const struct WildPokemon gRoute127_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
-
-const struct WildPokemon gRoute127_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
-
-const struct WildPokemon gRoute128_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
-
-const struct WildPokemon gRoute128_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
-
-const struct WildPokemon gRoute129_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_WAILORD},
-};
-
-const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
-
-const struct WildPokemon gRoute129_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
-
-const struct WildPokemon gRoute130_LandMons[] =
-{
- {30, 30, SPECIES_WYNAUT},
- {35, 35, SPECIES_WYNAUT},
- {25, 25, SPECIES_WYNAUT},
- {40, 40, SPECIES_WYNAUT},
- {20, 20, SPECIES_WYNAUT},
- {45, 45, SPECIES_WYNAUT},
- {15, 15, SPECIES_WYNAUT},
- {50, 50, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
-};
-
-const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
-
-const struct WildPokemon gRoute130_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
-
-const struct WildPokemon gRoute130_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
-
-const struct WildPokemon gRoute131_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
-
-const struct WildPokemon gRoute131_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
-
-const struct WildPokemon gRoute132_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
-
-const struct WildPokemon gRoute132_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
-
-const struct WildPokemon gRoute133_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
-
-const struct WildPokemon gRoute133_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
-
-const struct WildPokemon gRoute134_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
-
-const struct WildPokemon gRoute134_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
-
-const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
-
-const struct WildPokemon gNewMauville_Entrance_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
-};
-
-const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {27, 27, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
-
-const struct WildPokemon gSafariZone_North_LandMons[] =
-{
- {27, 27, SPECIES_PHANPY},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_PHANPY},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_NATU},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_NATU},
- {29, 29, SPECIES_XATU},
- {27, 27, SPECIES_HERACROSS},
- {31, 31, SPECIES_XATU},
- {29, 29, SPECIES_HERACROSS},
-};
-
-const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
-
-const struct WildPokemon gSafariZone_North_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {20, 25, SPECIES_GEODUDE},
- {25, 30, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
-
-const struct WildPokemon gSafariZone_Northwest_LandMons[] =
-{
- {27, 27, SPECIES_RHYHORN},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_RHYHORN},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_DODUO},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_DODUO},
- {29, 29, SPECIES_DODRIO},
- {27, 27, SPECIES_PINSIR},
- {31, 31, SPECIES_DODRIO},
- {29, 29, SPECIES_PINSIR},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
-
-const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_GOLDUCK},
- {25, 40, SPECIES_GOLDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
-
-const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_HARIYAMA},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
-{
- {30, 40, SPECIES_GRAVELER},
- {30, 40, SPECIES_GEODUDE},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
-
-const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_SABLEYE},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_SABLEYE},
- {44, 44, SPECIES_GOLBAT},
- {44, 44, SPECIES_SABLEYE},
- {42, 42, SPECIES_LAIRON},
- {42, 42, SPECIES_MAWILE},
- {44, 44, SPECIES_LAIRON},
- {44, 44, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {25, 30, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
-
-const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
-{
- {16, 16, SPECIES_ZUBAT},
- {17, 17, SPECIES_ZUBAT},
- {18, 18, SPECIES_ZUBAT},
- {15, 15, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {16, 16, SPECIES_SOLROCK},
- {18, 18, SPECIES_SOLROCK},
- {14, 14, SPECIES_SOLROCK},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
-{
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
-
-const struct WildPokemon gLilycoveCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
-
-const struct WildPokemon gLilycoveCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_STARYU},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
-
-const struct WildPokemon gDewfordTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
-
-const struct WildPokemon gDewfordTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
-
-const struct WildPokemon gSlateportCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
-
-const struct WildPokemon gSlateportCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
-
-const struct WildPokemon gMossdeepCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
-
-const struct WildPokemon gMossdeepCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
-
-const struct WildPokemon gPacifidlogTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
-
-const struct WildPokemon gPacifidlogTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
-
-const struct WildPokemon gEverGrandeCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
-
-const struct WildPokemon gEverGrandeCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
-
-const struct WildPokemon gPetalburgCity_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
-};
-
-const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
-
-const struct WildPokemon gPetalburgCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
-
-const struct WildPokemon gUnderwater1_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {26, 26, SPECIES_SNORUNT},
- {32, 32, SPECIES_SPHEAL},
- {30, 30, SPECIES_GOLBAT},
- {28, 28, SPECIES_SNORUNT},
- {32, 32, SPECIES_GOLBAT},
- {30, 30, SPECIES_SNORUNT},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
-
-const struct WildPokemon gSkyPillar_1F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
-
-const struct WildPokemon gSootopolisCity_WaterMons[] =
-{
- {5, 35, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {15, 25, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
-
-const struct WildPokemon gSootopolisCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {35, 40, SPECIES_GYARADOS},
- {35, 45, SPECIES_GYARADOS},
- {5, 45, SPECIES_GYARADOS},
-};
-
-const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
-
-const struct WildPokemon gSkyPillar_3F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
-
-const struct WildPokemon gSkyPillar_5F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
-};
-
-const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_LandMons[] =
-{
- {33, 33, SPECIES_SUNKERN},
- {34, 34, SPECIES_MAREEP},
- {35, 35, SPECIES_SUNKERN},
- {36, 36, SPECIES_MAREEP},
- {34, 34, SPECIES_AIPOM},
- {33, 33, SPECIES_SPINARAK},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_SNUBBULL},
- {36, 36, SPECIES_STANTLER},
- {37, 37, SPECIES_GLIGAR},
- {39, 39, SPECIES_STANTLER},
- {40, 40, SPECIES_GLIGAR},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
-{
- {25, 30, SPECIES_WOOPER},
- {25, 30, SPECIES_MARILL},
- {25, 30, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {35, 40, SPECIES_QUAGSIRE},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
-
-const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
-{
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_REMORAID},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {35, 40, SPECIES_OCTILLERY},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
-
-const struct WildPokemon gSafariZone_Northeast_LandMons[] =
-{
- {33, 33, SPECIES_AIPOM},
- {34, 34, SPECIES_TEDDIURSA},
- {35, 35, SPECIES_AIPOM},
- {36, 36, SPECIES_TEDDIURSA},
- {34, 34, SPECIES_SUNKERN},
- {33, 33, SPECIES_LEDYBA},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_PINECO},
- {36, 36, SPECIES_HOUNDOUR},
- {37, 37, SPECIES_MILTANK},
- {39, 39, SPECIES_HOUNDOUR},
- {40, 40, SPECIES_MILTANK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
-
-const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
-{
- {25, 30, SPECIES_SHUCKLE},
- {20, 25, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {35, 40, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
-
-const struct WildPokemon gMagmaHideout_1F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_4F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
-
-const struct WildPokemon gMirageTower_1F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
-
-const struct WildPokemon gMirageTower_2F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
-
-const struct WildPokemon gMirageTower_3F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
-
-const struct WildPokemon gMirageTower_4F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
-
-const struct WildPokemon gDesertUnderpass_LandMons[] =
-{
- {38, 38, SPECIES_DITTO},
- {35, 35, SPECIES_WHISMUR},
- {40, 40, SPECIES_DITTO},
- {40, 40, SPECIES_LOUDRED},
- {41, 41, SPECIES_DITTO},
- {36, 36, SPECIES_WHISMUR},
- {38, 38, SPECIES_LOUDRED},
- {42, 42, SPECIES_DITTO},
- {38, 38, SPECIES_WHISMUR},
- {43, 43, SPECIES_DITTO},
- {44, 44, SPECIES_LOUDRED},
- {45, 45, SPECIES_DITTO},
-};
-
-const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
-
-const struct WildPokemon gArtisanCave_B1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
-
-const struct WildPokemon gArtisanCave_1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
-
-const struct WildPokemon gAlteringCave1_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {16, 16, SPECIES_ZUBAT},
- {6, 6, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
-
-const struct WildPokemon gAlteringCave2_LandMons[] =
-{
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {13, 13, SPECIES_MAREEP},
- {3, 3, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
-};
-
-const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
-
-const struct WildPokemon gAlteringCave3_LandMons[] =
-{
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {22, 22, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {29, 29, SPECIES_PINECO},
- {19, 19, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
-};
-
-const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
-
-const struct WildPokemon gAlteringCave4_LandMons[] =
-{
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {22, 22, SPECIES_HOUNDOUR},
- {12, 12, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
-};
-
-const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
-
-const struct WildPokemon gAlteringCave5_LandMons[] =
-{
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {16, 16, SPECIES_TEDDIURSA},
- {6, 6, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
-};
-
-const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
-
-const struct WildPokemon gAlteringCave6_LandMons[] =
-{
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {28, 28, SPECIES_AIPOM},
- {18, 18, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
-};
-
-const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
-
-const struct WildPokemon gAlteringCave7_LandMons[] =
-{
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {28, 28, SPECIES_SHUCKLE},
- {18, 18, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
-
-const struct WildPokemon gAlteringCave8_LandMons[] =
-{
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {28, 28, SPECIES_STANTLER},
- {18, 18, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
-};
-
-const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
-
-const struct WildPokemon gAlteringCave9_LandMons[] =
-{
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {28, 28, SPECIES_SMEARGLE},
- {18, 18, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
-
-const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
-
-//The actual headers that link the encounter tables to particular maps start here.
-
-const struct WildPokemonHeader gWildMonHeaders[] =
-{
- {
- .mapGroup = MAP_GROUP(ROUTE101),
- .mapNum = MAP_NUM(ROUTE101),
- .landMonsInfo = &gRoute101_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE102),
- .mapNum = MAP_NUM(ROUTE102),
- .landMonsInfo = &gRoute102_LandMonsInfo,
- .waterMonsInfo = &gRoute102_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute102_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE103),
- .mapNum = MAP_NUM(ROUTE103),
- .landMonsInfo = &gRoute103_LandMonsInfo,
- .waterMonsInfo = &gRoute103_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute103_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE104),
- .mapNum = MAP_NUM(ROUTE104),
- .landMonsInfo = &gRoute104_LandMonsInfo,
- .waterMonsInfo = &gRoute104_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute104_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE105),
- .mapNum = MAP_NUM(ROUTE105),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute105_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute105_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE110),
- .mapNum = MAP_NUM(ROUTE110),
- .landMonsInfo = &gRoute110_LandMonsInfo,
- .waterMonsInfo = &gRoute110_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute110_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE111),
- .mapNum = MAP_NUM(ROUTE111),
- .landMonsInfo = &gRoute111_LandMonsInfo,
- .waterMonsInfo = &gRoute111_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute111_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE112),
- .mapNum = MAP_NUM(ROUTE112),
- .landMonsInfo = &gRoute112_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE113),
- .mapNum = MAP_NUM(ROUTE113),
- .landMonsInfo = &gRoute113_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE114),
- .mapNum = MAP_NUM(ROUTE114),
- .landMonsInfo = &gRoute114_LandMonsInfo,
- .waterMonsInfo = &gRoute114_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute114_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE116),
- .mapNum = MAP_NUM(ROUTE116),
- .landMonsInfo = &gRoute116_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE117),
- .mapNum = MAP_NUM(ROUTE117),
- .landMonsInfo = &gRoute117_LandMonsInfo,
- .waterMonsInfo = &gRoute117_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute117_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE118),
- .mapNum = MAP_NUM(ROUTE118),
- .landMonsInfo = &gRoute118_LandMonsInfo,
- .waterMonsInfo = &gRoute118_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute118_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE124),
- .mapNum = MAP_NUM(ROUTE124),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute124_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute124_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_WOODS),
- .mapNum = MAP_NUM(PETALBURG_WOODS),
- .landMonsInfo = &gPetalburgWoods_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
- .mapNum = MAP_NUM(RUSTURF_TUNNEL),
- .landMonsInfo = &gRusturfTunnel_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_1F),
- .landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B1F),
- .landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_1F),
- .mapNum = MAP_NUM(MT_PYRE_1F),
- .landMonsInfo = &gMtPyre_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_1F),
- .landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTH),
- .landMonsInfo = &gSafariZone_South_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER2),
- .mapNum = MAP_NUM(UNDERWATER2),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater2_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
- .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B2F),
- .landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(FIERY_PATH),
- .mapNum = MAP_NUM(FIERY_PATH),
- .landMonsInfo = &gFieryPath_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
- .landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(JAGGED_PASS),
- .mapNum = MAP_NUM(JAGGED_PASS),
- .landMonsInfo = &gJaggedPass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE106),
- .mapNum = MAP_NUM(ROUTE106),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute106_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute106_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE107),
- .mapNum = MAP_NUM(ROUTE107),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute107_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute107_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE108),
- .mapNum = MAP_NUM(ROUTE108),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute108_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute108_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE109),
- .mapNum = MAP_NUM(ROUTE109),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute109_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute109_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE115),
- .mapNum = MAP_NUM(ROUTE115),
- .landMonsInfo = &gRoute115_LandMonsInfo,
- .waterMonsInfo = &gRoute115_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute115_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
- .landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE119),
- .mapNum = MAP_NUM(ROUTE119),
- .landMonsInfo = &gRoute119_LandMonsInfo,
- .waterMonsInfo = &gRoute119_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute119_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE120),
- .mapNum = MAP_NUM(ROUTE120),
- .landMonsInfo = &gRoute120_LandMonsInfo,
- .waterMonsInfo = &gRoute120_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute120_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE121),
- .mapNum = MAP_NUM(ROUTE121),
- .landMonsInfo = &gRoute121_LandMonsInfo,
- .waterMonsInfo = &gRoute121_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute121_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE122),
- .mapNum = MAP_NUM(ROUTE122),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute122_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute122_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE123),
- .mapNum = MAP_NUM(ROUTE123),
- .landMonsInfo = &gRoute123_LandMonsInfo,
- .waterMonsInfo = &gRoute123_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute123_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_2F),
- .mapNum = MAP_NUM(MT_PYRE_2F),
- .landMonsInfo = &gMtPyre_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_3F),
- .mapNum = MAP_NUM(MT_PYRE_3F),
- .landMonsInfo = &gMtPyre_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_4F),
- .mapNum = MAP_NUM(MT_PYRE_4F),
- .landMonsInfo = &gMtPyre_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_5F),
- .mapNum = MAP_NUM(MT_PYRE_5F),
- .landMonsInfo = &gMtPyre_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_6F),
- .mapNum = MAP_NUM(MT_PYRE_6F),
- .landMonsInfo = &gMtPyre_6F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
- .mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
- .landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
- .mapNum = MAP_NUM(MT_PYRE_SUMMIT),
- .landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
- .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
- .landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE125),
- .mapNum = MAP_NUM(ROUTE125),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute125_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute125_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE126),
- .mapNum = MAP_NUM(ROUTE126),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute126_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute126_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE127),
- .mapNum = MAP_NUM(ROUTE127),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute127_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute127_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE128),
- .mapNum = MAP_NUM(ROUTE128),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute128_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute128_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE129),
- .mapNum = MAP_NUM(ROUTE129),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute129_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute129_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE130),
- .mapNum = MAP_NUM(ROUTE130),
- .landMonsInfo = &gRoute130_LandMonsInfo,
- .waterMonsInfo = &gRoute130_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute130_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE131),
- .mapNum = MAP_NUM(ROUTE131),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute131_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute131_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE132),
- .mapNum = MAP_NUM(ROUTE132),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute132_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute132_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE133),
- .mapNum = MAP_NUM(ROUTE133),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute133_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute133_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE134),
- .mapNum = MAP_NUM(ROUTE134),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute134_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute134_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
- .landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
- .landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
- .landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
- .landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
- .landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
- .landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
- .landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
- .landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
- .landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
- .landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
- .landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
- .landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTH),
- .landMonsInfo = &gSafariZone_North_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
- .landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B1F),
- .landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B2F),
- .landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
- .waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
- .landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
- .landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
- .landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(LILYCOVE_CITY),
- .mapNum = MAP_NUM(LILYCOVE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(DEWFORD_TOWN),
- .mapNum = MAP_NUM(DEWFORD_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gDewfordTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SLATEPORT_CITY),
- .mapNum = MAP_NUM(SLATEPORT_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSlateportCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MOSSDEEP_CITY),
- .mapNum = MAP_NUM(MOSSDEEP_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
- .mapNum = MAP_NUM(PACIFIDLOG_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
- .mapNum = MAP_NUM(EVER_GRANDE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_CITY),
- .mapNum = MAP_NUM(PETALBURG_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER1),
- .mapNum = MAP_NUM(UNDERWATER1),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater1_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_1F),
- .mapNum = MAP_NUM(SKY_PILLAR_1F),
- .landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
- .mapNum = MAP_NUM(SOOTOPOLIS_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_3F),
- .mapNum = MAP_NUM(SKY_PILLAR_3F),
- .landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_5F),
- .mapNum = MAP_NUM(SKY_PILLAR_5F),
- .landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
- .landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
- .landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
- .landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
- .landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
- .landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
- .landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
- .landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
- .landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
- .landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
- .landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_1F),
- .landMonsInfo = &gMirageTower_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_2F),
- .landMonsInfo = &gMirageTower_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_3F),
- .landMonsInfo = &gMirageTower_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_4F),
- .landMonsInfo = &gMirageTower_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(DESERT_UNDERPASS),
- .mapNum = MAP_NUM(DESERT_UNDERPASS),
- .landMonsInfo = &gDesertUnderpass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
- .landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_1F),
- .landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave6_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave7_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave9_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
- .mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
- .landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDEFINED),
- .mapNum = MAP_NUM(UNDEFINED),
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Battle Pyramid-specific tables and headers start here.
-
-const struct WildPokemon gBattlePyramidPlaceholders_1[] =
-{
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
-
-const struct WildPokemon gBattlePyramidPlaceholders_2[] =
-{
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
-
-const struct WildPokemon gBattlePyramidPlaceholders_3[] =
-{
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
-
-const struct WildPokemon gBattlePyramidPlaceholders_4[] =
-{
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
-
-const struct WildPokemon gBattlePyramidPlaceholders_5[] =
-{
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
-
-const struct WildPokemon gBattlePyramidPlaceholders_6[] =
-{
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
-
-const struct WildPokemon gBattlePyramidPlaceholders_7[] =
-{
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
-
-const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePyramidPlaceholders_1Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePyramidPlaceholders_2Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePyramidPlaceholders_3Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePyramidPlaceholders_4Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 5,
- .landMonsInfo = &gBattlePyramidPlaceholders_5Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 6,
- .landMonsInfo = &gBattlePyramidPlaceholders_6Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 7,
- .landMonsInfo = &gBattlePyramidPlaceholders_7Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Battle Pike-specific tables and headers start here.
-
-const struct WildPokemon gBattlePikeMons_1[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
-
-const struct WildPokemon gBattlePikeMons_2[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
-
-const struct WildPokemon gBattlePikeMons_3[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
-
-const struct WildPokemon gBattlePikeMons_4[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
-
-const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePikeMonsInfo_1,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePikeMonsInfo_2,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePikeMonsInfo_3,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePikeMonsInfo_4,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Special Feebas-related data.
-
-const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
-
-const u16 gRoute119WaterTileData[] =
-{
- 0, 0x2D, 0,
- 0x2E, 0x5B, 0x83,
- 0x5C, 0x8B, 0x12A,
-};
-
diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json
new file mode 100755
index 000000000..6dd24bfed
--- /dev/null
+++ b/src/data/wild_encounters.json
@@ -0,0 +1,12186 @@
+{
+ "wild_encounter_groups": [
+ {
+ "label": "gWildMonHeaders",
+ "for_maps": true,
+ "encounters": [
+ {
+ "map": "MAP_ROUTE101",
+ "base_label": "gRoute101",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE102",
+ "base_label": "gRoute102",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_RALTS"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE103",
+ "base_label": "gRoute103",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE104",
+ "base_label": "gRoute104",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_MAGIKARP"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE105",
+ "base_label": "gRoute105",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE110",
+ "base_label": "gRoute110",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_GULPIN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MINUN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MINUN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_GULPIN"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_PLUSLE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_PLUSLE"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE111",
+ "base_label": "gRoute111",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_CACNEA"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_CACNEA"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_CACNEA"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE112",
+ "base_label": "gRoute112",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE113",
+ "base_label": "gRoute113",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SKARMORY"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SKARMORY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE114",
+ "base_label": "gRoute114",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUZLEAF"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE116",
+ "base_label": "gRoute116",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_NINCADA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_NINCADA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_SKITTY"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_SKITTY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE117",
+ "base_label": "gRoute117",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_VOLBEAT"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE118",
+ "base_label": "gRoute118",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MANECTRIC"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CARVANHA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE124",
+ "base_label": "gRoute124",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PETALBURG_WOODS",
+ "base_label": "gPetalburgWoods",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SHROOMISH"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SILCOON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CASCOON"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_SHROOMISH"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SLAKOTH"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_SLAKOTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_RUSTURF_TUNNEL",
+ "base_label": "gRusturfTunnel",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_1F",
+ "base_label": "gGraniteCave_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_B1F",
+ "base_label": "gGraniteCave_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_SABLEYE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_1F",
+ "base_label": "gMtPyre_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_1F",
+ "base_label": "gVictoryRoad_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTH",
+ "base_label": "gSafariZone_South",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_WOBBUFFET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_UNDERWATER2",
+ "base_label": "gUnderwater2",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CHINCHOU"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ABANDONED_SHIP_ROOMS_B1F",
+ "base_label": "gAbandonedShip_Rooms_B1F",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_B2F",
+ "base_label": "gGraniteCave_B2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_NOSEPASS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_FIERY_PATH",
+ "base_label": "gFieryPath",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_KOFFING"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_KOFFING"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_GRIMER"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_GRIMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_B1F_2R",
+ "base_label": "gMeteorFalls_B1F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_JAGGED_PASS",
+ "base_label": "gJaggedPass",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SPOINK"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE106",
+ "base_label": "gRoute106",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE107",
+ "base_label": "gRoute107",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE108",
+ "base_label": "gRoute108",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE109",
+ "base_label": "gRoute109",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE115",
+ "base_label": "gRoute115",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SWELLOW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_JIGGLYPUFF"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_JIGGLYPUFF"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_NEW_MAUVILLE_INSIDE",
+ "base_label": "gNewMauville_Inside",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNETON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE119",
+ "base_label": "gRoute119",
+ "land_mons": {
+ "encounter_rate": 15,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CARVANHA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE120",
+ "base_label": "gRoute120",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ABSOL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ABSOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE121",
+ "base_label": "gRoute121",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE122",
+ "base_label": "gRoute122",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE123",
+ "base_label": "gRoute123",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_2F",
+ "base_label": "gMtPyre_2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_3F",
+ "base_label": "gMtPyre_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_4F",
+ "base_label": "gMtPyre_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_5F",
+ "base_label": "gMtPyre_5F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_6F",
+ "base_label": "gMtPyre_6F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_EXTERIOR",
+ "base_label": "gMtPyre_Exterior",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_SUMMIT",
+ "base_label": "gMtPyre_Summit",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_CHIMECHO"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_CHIMECHO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_STEVENS_ROOM",
+ "base_label": "gGraniteCave_StevensRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ARON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE125",
+ "base_label": "gRoute125",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE126",
+ "base_label": "gRoute126",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE127",
+ "base_label": "gRoute127",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE128",
+ "base_label": "gRoute128",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORSOLA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE129",
+ "base_label": "gRoute129",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILORD"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE130",
+ "base_label": "gRoute130",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WYNAUT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE131",
+ "base_label": "gRoute131",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE132",
+ "base_label": "gRoute132",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE133",
+ "base_label": "gRoute133",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE134",
+ "base_label": "gRoute134",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS",
+ "base_label": "gAbandonedShip_HiddenFloorCorridors",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM1",
+ "base_label": "gSeafloorCavern_Room1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM2",
+ "base_label": "gSeafloorCavern_Room2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM3",
+ "base_label": "gSeafloorCavern_Room3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM4",
+ "base_label": "gSeafloorCavern_Room4",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM5",
+ "base_label": "gSeafloorCavern_Room5",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM6",
+ "base_label": "gSeafloorCavern_Room6",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM7",
+ "base_label": "gSeafloorCavern_Room7",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM8",
+ "base_label": "gSeafloorCavern_Room8",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ENTRANCE",
+ "base_label": "gSeafloorCavern_Entrance",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_ENTRANCE",
+ "base_label": "gCaveOfOrigin_Entrance",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_1F",
+ "base_label": "gCaveOfOrigin_1F",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_NEW_MAUVILLE_ENTRANCE",
+ "base_label": "gNewMauville_Entrance",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTHWEST",
+ "base_label": "gSafariZone_Southwest",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_WOBBUFFET"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 25,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SEAKING"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTH",
+ "base_label": "gSafariZone_North",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PHANPY"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PHANPY"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_XATU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_HERACROSS"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_XATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_HERACROSS"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTHWEST",
+ "base_label": "gSafariZone_Northwest",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_RHYHORN"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_RHYHORN"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DODRIO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINSIR"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_DODRIO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PINSIR"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDUCK"
+ },
+ {
+ "min_level": 25,
+ "max_level": 40,
+ "species": "SPECIES_GOLDUCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 25,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SEAKING"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_B1F",
+ "base_label": "gVictoryRoad_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_MAWILE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_MAWILE"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 40,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_B2F",
+ "base_label": "gVictoryRoad_B2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_MAWILE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_MAWILE"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_1F_1R",
+ "base_label": "gMeteorFalls_1F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_ZUBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_1F_2R",
+ "base_label": "gMeteorFalls_1F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_B1F_1R",
+ "base_label": "gMeteorFalls_B1F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM",
+ "base_label": "gShoalCave_LowTideStairsRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM",
+ "base_label": "gShoalCave_LowTideLowerRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM",
+ "base_label": "gShoalCave_LowTideInnerRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM",
+ "base_label": "gShoalCave_LowTideEntranceRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_LILYCOVE_CITY",
+ "base_label": "gLilycoveCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_STARYU"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_DEWFORD_TOWN",
+ "base_label": "gDewfordTown",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SLATEPORT_CITY",
+ "base_label": "gSlateportCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MOSSDEEP_CITY",
+ "base_label": "gMossdeepCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PACIFIDLOG_TOWN",
+ "base_label": "gPacifidlogTown",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_EVER_GRANDE_CITY",
+ "base_label": "gEverGrandeCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORSOLA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PETALBURG_CITY",
+ "base_label": "gPetalburgCity",
+ "water_mons": {
+ "encounter_rate": 1,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_UNDERWATER1",
+ "base_label": "gUnderwater1",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CHINCHOU"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM",
+ "base_label": "gShoalCave_LowTideIceRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SNORUNT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SNORUNT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SNORUNT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_1F",
+ "base_label": "gSkyPillar_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SOOTOPOLIS_CITY",
+ "base_label": "gSootopolisCity",
+ "water_mons": {
+ "encounter_rate": 1,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GYARADOS"
+ },
+ {
+ "min_level": 35,
+ "max_level": 45,
+ "species": "SPECIES_GYARADOS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 45,
+ "species": "SPECIES_GYARADOS"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_3F",
+ "base_label": "gSkyPillar_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_5F",
+ "base_label": "gSkyPillar_5F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_ALTARIA"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_ALTARIA"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_ALTARIA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTHEAST",
+ "base_label": "gSafariZone_Southeast",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SPINARAK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_HOOTHOOT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SNUBBULL"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_GLIGAR"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GLIGAR"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WOOPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_QUAGSIRE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_OCTILLERY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTHEAST",
+ "base_label": "gSafariZone_Northeast",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_LEDYBA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_HOOTHOOT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_MILTANK"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_MILTANK"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SHUCKLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_1F",
+ "base_label": "gMagmaHideout_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_1R",
+ "base_label": "gMagmaHideout_2F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_2R",
+ "base_label": "gMagmaHideout_2F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_1R",
+ "base_label": "gMagmaHideout_3F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_2R",
+ "base_label": "gMagmaHideout_3F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_4F",
+ "base_label": "gMagmaHideout_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_3R",
+ "base_label": "gMagmaHideout_3F_3R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_3R",
+ "base_label": "gMagmaHideout_2F_3R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_1F",
+ "base_label": "gMirageTower_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_2F",
+ "base_label": "gMirageTower_2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_3F",
+ "base_label": "gMirageTower_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_4F",
+ "base_label": "gMirageTower_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_DESERT_UNDERPASS",
+ "base_label": "gDesertUnderpass",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_DITTO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ARTISAN_CAVE_B1F",
+ "base_label": "gArtisanCave_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 46,
+ "max_level": 46,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 47,
+ "max_level": 47,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 48,
+ "max_level": 48,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 49,
+ "max_level": 49,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ARTISAN_CAVE_1F",
+ "base_label": "gArtisanCave_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 46,
+ "max_level": 46,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 47,
+ "max_level": 47,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 48,
+ "max_level": 48,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 49,
+ "max_level": 49,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave1",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave2",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave3",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave4",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave5",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave6",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave7",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave8",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave9",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_STEVENS_CAVE",
+ "base_label": "gMeteorFalls_StevensCave",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "label": "gBattlePyramidWildMonHeaders",
+ "for_maps": false,
+ "encounters": [
+ {
+ "base_label": "gBattlePyramid_1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_4",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_5",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_6",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_7",
+ "land_mons": {
+ "encounter_rate": 8,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "label": "gBattlePikeWildMonHeaders",
+ "for_maps": false,
+ "encounters": [
+ {
+ "base_label": "gBattlePike_1",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_2",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_3",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_4",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt
new file mode 100755
index 000000000..8f88cc587
--- /dev/null
+++ b/src/data/wild_encounters.json.txt
@@ -0,0 +1,67 @@
+{{ doNotModifyHeader }}
+## for wild_encounter_group in wild_encounter_groups
+## for encounter in wild_encounter_group.encounters
+{% if existsIn(encounter, "land_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
+{
+## for wild_mon in encounter.land_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_LandMonsInfo = { {{encounter.land_mons.encounter_rate}}, {{ encounter.base_label }}_LandMons };
+{% endif %}
+{% if existsIn(encounter, "water_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_WaterMons[] =
+{
+## for wild_mon in encounter.water_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_WaterMonsInfo = { {{encounter.water_mons.encounter_rate}}, {{ encounter.base_label }}_WaterMons };
+{% endif %}
+{% if existsIn(encounter, "rock_smash_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_RockSmashMons[] =
+{
+## for wild_mon in encounter.rock_smash_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_RockSmashMonsInfo = { {{encounter.rock_smash_mons.encounter_rate}}, {{ encounter.base_label }}_RockSmashMons };
+{% endif %}
+{% if existsIn(encounter, "fishing_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_FishingMons[] =
+{
+## for wild_mon in encounter.fishing_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_FishingMonsInfo = { {{encounter.fishing_mons.encounter_rate}}, {{ encounter.base_label }}_FishingMons };
+{% endif %}
+## endfor
+
+const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
+{
+## for encounter in wild_encounter_group.encounters
+ {
+ .mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ removePrefix(encounter.map, "MAP_") }}){% else %}0{% endif %},
+ .mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ removePrefix(encounter.map, "MAP_") }}){% else %}{{ loop.index1 }}{% endif %},
+ .landMonsInfo = {% if existsIn(encounter, "land_mons") %}&{{ encounter.base_label }}_LandMonsInfo{% else %}NULL{% endif %},
+ .waterMonsInfo = {% if existsIn(encounter, "water_mons") %}&{{ encounter.base_label }}_WaterMonsInfo{% else %}NULL{% endif %},
+ .rockSmashMonsInfo = {% if existsIn(encounter, "rock_smash_mons") %}&{{ encounter.base_label }}_RockSmashMonsInfo{% else %}NULL{% endif %},
+ .fishingMonsInfo = {% if existsIn(encounter, "fishing_mons") %}&{{ encounter.base_label }}_FishingMonsInfo{% else %}NULL{% endif %},
+ },
+## endfor
+ {
+ .mapGroup = MAP_GROUP(UNDEFINED),
+ .mapNum = MAP_NUM(UNDEFINED),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+## endfor
diff --git a/src/decoration.c b/src/decoration.c
index 0f6dd082b..974859c88 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -36,6 +36,7 @@
#include "constants/event_objects.h"
#include "constants/songs.h"
#include "constants/region_map_sections.h"
+#include "constants/metatile_labels.h"
#define PLACE_DECORATION_SELECTOR_TAG 0xbe5
#define PLACE_DECORATION_PLAYER_TAG 0x008
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 51fa7072d..43744883f 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -8,7 +8,7 @@
#define DMA_REQUEST_COPY16 3
#define DMA_REQUEST_FILL16 4
-IWRAM_DATA struct
+BSS_DATA struct
{
const u8 *src;
u8 *dest;
@@ -17,7 +17,7 @@ IWRAM_DATA struct
u32 value;
} gDma3Requests[MAX_DMA_REQUESTS];
-static bool8 gDma3ManagerLocked;
+static volatile bool8 gDma3ManagerLocked;
static u8 gDma3RequestCursor;
void ClearDma3Requests(void)
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
new file mode 100644
index 000000000..714b10ef6
--- /dev/null
+++ b/src/dodrio_berry_picking.c
@@ -0,0 +1,5086 @@
+#include "global.h"
+#include "alloc.h"
+#include "bg.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
+#include "item.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "m4a.h"
+#include "main.h"
+#include "palette.h"
+#include "pokemon_jump.h"
+#include "random.h"
+#include "save.h"
+#include "script.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct DodrioSubstruct_0160
+{
+ /*0x0000 : 0x3000*/ u16 ALIGNED(4) tilemapBuffers[3][BG_SCREEN_SIZE];
+ /*0x3000 : 0x3160*/ bool32 finished;
+ /*0x3004 : 0x3164*/ u8 ALIGNED(4) unk3004;
+ /*0x3008 : 0x3168*/ u8 ALIGNED(4) unk3008[10];
+ /*0x3014 : 0x3174*/ u8 ALIGNED(4) state;
+ /*0x3018 : 0x3178*/ u8 ALIGNED(4) unk3018;
+ /*0x301C : 0x317C*/ u16 ALIGNED(4) unk301C;
+ /*0x3020 : 0x3180*/ u8 ALIGNED(4) unk3020;
+ /*0x3024 : 0x3184*/ u8 ALIGNED(4) unk3024;
+ /*0x3024 : 0x3184*/ void (*unk3028)(void);
+}; // size = 0x302C
+
+struct DodrioStruct_2022CF4
+{
+ u8 filler_00[0xc];
+ u8 unkC[10];
+ s16 unk16[10];
+ u16 unk2A[10];
+ u16 unk3E;
+}; // size = 0x40
+
+struct DodrioSubstruct_31A0_14
+{
+ u8 unk0[11];
+ u8 unkB[11];
+};
+
+struct DodrioSubstruct_31A0_2C
+{
+ u8 unk0;
+ u8 ALIGNED(4) unk4;
+ u8 ALIGNED(4) unk8;
+};
+
+struct DodrioSubstruct_31A0
+{
+ u8 name[0x10];
+ u32 unk10;
+ struct DodrioSubstruct_31A0_14 unk14;
+ struct DodrioSubstruct_31A0_2C unk2C;
+ u8 filler_35[4];
+}; // size = 0x3C
+
+struct DodrioSubstruct_318C
+{
+ bool8 isShiny;
+};
+
+struct DodrioSubstruct_3308
+{
+ u8 unk0;
+ u32 unk4;
+};
+
+struct DodrioStruct
+{
+ /*0x0000*/ void (*savedCallback)(void);
+ /*0x0004*/ u8 ALIGNED(4) unk04;
+ /*0x0008*/ u8 ALIGNED(4) unk08;
+ /*0x000C*/ u8 ALIGNED(4) unk0C;
+ /*0x0010*/ u8 ALIGNED(4) unk10;
+ /*0x0014*/ u8 ALIGNED(4) unk14;
+ /*0x0018*/ u8 ALIGNED(4) unk18;
+ /*0x001C*/ u8 ALIGNED(4) unk1C;
+ /*0x0020*/ u8 ALIGNED(4) unk20;
+ /*0x0024*/ u8 ALIGNED(4) unk24;
+ /*0x0028*/ u8 ALIGNED(4) multiplayerId;
+ /*0x0029*/ u8 filler_0029[7];
+ /*0x0030*/ u8 ALIGNED(4) unk30;
+ /*0x0034*/ u8 ALIGNED(4) unk34[5];
+ /*0x003C*/ u8 ALIGNED(4) unk3C;
+ /*0x0040*/ u8 ALIGNED(4) unk40;
+ /*0x0044*/ u8 ALIGNED(4) unk44;
+ /*0x0048*/ u8 ALIGNED(4) unk48;
+ /*0x004A*/ u16 unk4A[5][6];
+ /*0x0086*/ u16 unk86[5];
+ /*0x0090*/ u8 ALIGNED(4) unk90[5];
+ /*0x0098*/ u8 ALIGNED(4) unk98[4];
+ /*0x009C*/ u8 ALIGNED(4) unk9C[11];
+ /*0x00A8*/ u8 ALIGNED(4) unkA8[5];
+ /*0x00B0*/ u8 ALIGNED(4) unkB0[5];
+ /*0x00B8*/ u8 ALIGNED(4) unkB8[11];
+ /*0x00C4*/ u8 ALIGNED(4) unkC4[11];
+ /*0x00D0*/ u8 ALIGNED(4) unkD0[11];
+ /*0x00DC*/ u8 ALIGNED(4) unkDC[11];
+ /*0x00E8*/ u8 ALIGNED(4) unkE8[11];
+ /*0x00F4*/ u8 ALIGNED(4) unkF4[11][2];
+ /*0x010C*/ u8 ALIGNED(4) unk10C[5];
+ /*0x0112*/ u16 unk112;
+ /*0x0114*/ u16 unk114;
+ /*0x0118*/ u32 unk118;
+ /*0x011C*/ u32 unk11C;
+ /*0x0120*/ u32 unk120;
+ /*0x0124*/ u8 ALIGNED(4) unk124;
+ /*0x0128*/ u8 ALIGNED(4) unk128;
+ /*0x012C*/ u32 unk12C;
+ /*0x0130*/ u32 unk130[5];
+ /*0x0144*/ u8 ALIGNED(4) unk144;
+ /*0x0148*/ u8 ALIGNED(4) unk148[11];
+ /*0x0154*/ u8 ALIGNED(4) unk154;
+ /*0x0158*/ u8 ALIGNED(4) unk158[5];
+ /*0x0160*/ struct DodrioSubstruct_0160 unk160;
+ /*0x318C*/ struct DodrioSubstruct_318C unk318C[5];
+ /*0x31A0*/ struct DodrioSubstruct_31A0 unk31A0[5];
+ /*0x32CC*/ struct DodrioSubstruct_31A0 unk32CC;
+ /*0x3308*/ struct DodrioSubstruct_3308 unk3308[5];
+}; // size = 0x3330
+
+EWRAM_DATA static struct DodrioStruct * gUnknown_02022C98 = NULL;
+EWRAM_DATA static u16 *gUnknown_02022C9C[5] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CB0[2] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CB8[11] = {NULL};
+EWRAM_DATA static u16 *gUnknown_02022CE4[4] = {NULL};
+EWRAM_DATA static struct DodrioStruct_2022CF4 *gUnknown_02022CF4 = NULL;
+EWRAM_DATA static struct DodrioSubstruct_0160 *gUnknown_02022CF8 = NULL;
+
+static bool32 gUnknown_03000DB0;
+
+static void sub_8024A1C(void);
+static void sub_8024A30(struct DodrioStruct *);
+static void sub_8024BC8(u8 taskId);
+static void sub_8024DBC(void);
+static void sub_8024E00(void);
+static void sub_8024E38(void);
+static void sub_8024F10(void);
+static void sub_8024F38(void);
+static void sub_8024FFC(void);
+static void sub_80250D4(void);
+static void sub_8025158(void);
+static void sub_8025198(void);
+static void sub_8025230(void);
+static void sub_8025324(void);
+static void sub_8025470(void);
+static void sub_8025644(void);
+static void sub_80256AC(void);
+static void sub_8025758(void);
+static void sub_802589C(u8 taskId);
+static void sub_8025910(u8 taskId);
+static void sub_8025D04(void);
+static void sub_8025D50(void);
+static void sub_8025E0C(void);
+static void sub_8025ED8(void);
+static void sub_8025F48(void);
+static void sub_8026044(void);
+static void sub_80261CC(void);
+static void sub_80261E4(void);
+static void sub_80261F8(struct DodrioSubstruct_318C *, struct Pokemon *);
+static void sub_802620C(TaskFunc, u8);
+static void sub_802621C(TaskFunc);
+static void sub_8026240(u8);
+static bool32 sub_8026264(void);
+static void sub_80262C0(void);
+static bool32 sub_8026634(u8, u8, u8);
+static void sub_802671C(void);
+static void sub_8026AF4(void);
+static void sub_8026B28(void);
+static void sub_8026B5C(u8, u8*, u8*);
+static bool32 sub_8026BB8(void);
+static void sub_8026C28(void);
+static bool32 sub_8026C50(void);
+static bool32 sub_8026C90(void);
+static void sub_8026D1C(u8);
+static u8 sub_8026D8C(u8);
+static u8 sub_8026DB0(u8, u8);
+static void sub_8026F1C(u8, u8, u8);
+static void sub_8027234(bool32 arg0);
+static void sub_80272A4(void);
+static void sub_80272E8(void);
+static void sub_80273F0(void);
+static void sub_802749C(void);
+static u8 sub_8027518(u8);
+static void sub_8027554(void);
+static void sub_8027608(void);
+static u32 sub_8027748(void);
+static void sub_8027DD0(u32 arg0);
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8);
+static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8);
+static void sub_80282EC(u8);
+static u32 sub_8028318(u32 arg0, u8 *arg1);
+static void sub_8028350(u32 arg0);
+static u32 sub_8028374(u32 arg0);
+static void sub_80283A8(void);
+static void sub_8028408(struct DodrioSubstruct_318C *arg0, u8 arg1, u8 id, u8 arg3);
+static void sub_80284CC(u8);
+static void sub_8028504(u8);
+static void sub_8028614(u8 count);
+static void sub_802868C(bool8 invisible, u8 count);
+static void sub_8028734(void);
+static void sub_80287E4(void);
+static void sub_80289E8(bool8 invisible);
+static void sub_80286E4(void);
+static bool32 sub_8028828(void);
+static void sub_8028A34(void);
+static void sub_8028A88(void);
+static void sub_8028B80(void);
+static void sub_8028D44(void);
+static void sub_8028DFC(void);
+static void sub_8028E4C(void);
+static void sub_8028E84(void);
+static void sub_8028EC8(bool8 invisible);
+static void sub_8028FCC(void);
+static void sub_802903C(void);
+static void sub_8029274(struct DodrioSubstruct_0160 *PTR);
+static void sub_80292E0(u8);
+static bool32 sub_802A770(void);
+static u8 sub_802A794(void);
+static void sub_8028BF8(u8 id, bool8 invisible);
+static void sub_8028C30(bool8 invisible);
+static void sub_8028CA4(u16 id, u8 frameNum);
+static void sub_8028C7C(u8 id, u8 y);
+static void sub_80286B4(u8 id, u8 frameNum);
+static u8 sub_8026E70(u8 arg0, u8 arg1);
+static void sub_80288D4(u8 arg0);
+static u32 sub_8027DFC(u32 arg0);
+static u32 IncrementWithLimit(u32 arg0, u32 arg1);
+static u32 Min(u32 arg0, u32 arg1);
+static u32 sub_80276C0(u8 arg0);
+static void sub_8027ACC(u8 taskId);
+static void sub_8029314(u8 taskId);
+static void sub_8027BEC(u8 windowId, s32 width);
+static void nullsub_15(struct Sprite *sprite);
+static void sub_80284A8(struct Sprite *sprite);
+static u32 sub_802853C(struct Sprite *sprite);
+static u32 sub_80285AC(struct Sprite *sprite);
+static s16 sub_8028F14(u8 arg0, u8 arg1);
+static void sub_8028654(bool8 invisible, u8 id);
+static void sub_8029338(void);
+static bool32 sub_802A8E8(void);
+static void sub_802A7A8(void);
+static void sub_802A72C(void (*func)(void));
+static void (*sub_802A75C(void))(void);
+static void sub_8029338(void);
+static void sub_8029440(void);
+static void sub_802988C(void);
+static void sub_802A010(void);
+static void sub_802A380(void);
+static void sub_802A454(void);
+static void sub_802A534(void);
+static void sub_802A588(void);
+static void sub_802A6FC(void);
+static void nullsub_16(void);
+
+// const rom data
+static const u8 gUnknown_082F449C[5][5][11] =
+{
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0},
+ {0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0},
+ {0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0},
+ {0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0},
+ {0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0},
+ {0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0},
+ {0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0},
+ },
+ {
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+ {2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2},
+ {4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4},
+ {6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6},
+ {8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8},
+ },
+};
+
+static const u8 gUknnown_082F45AF[5][5][3] =
+{
+ {
+ {4, 5, 6},
+ },
+ {
+ {3, 4, 5},
+ {5, 6, 3},
+ },
+ {
+ {4, 5, 6},
+ {6, 7, 2},
+ {2, 3, 4},
+ },
+ {
+ {3, 4, 5},
+ {5, 6, 7},
+ {7, 8, 1},
+ {1, 2, 3},
+ },
+ {
+ {4, 5, 6},
+ {6, 7, 8},
+ {8, 9, 0},
+ {0, 1, 2},
+ {2, 3, 4},
+ },
+};
+
+static const u8 gUnknown_082F45FA[5][5][3] =
+{
+ {
+ {1, 0, 1},
+ },
+ {
+ {1, 0, 1},
+ {0, 1, 0},
+ },
+ {
+ {2, 0, 1},
+ {0, 1, 2},
+ {1, 2, 0},
+ },
+ {
+ {3, 0, 1},
+ {0, 1, 2},
+ {1, 2, 3},
+ {2, 3, 0},
+ },
+ {
+ {4, 0, 1},
+ {0, 1, 2},
+ {1, 2, 3},
+ {2, 3, 4},
+ {3, 4, 0},
+ },
+};
+
+ALIGNED(4)
+static const u8 gUnknown_082F4648[5][11] =
+{
+ {9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9},
+ {9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9},
+ {9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9},
+ {9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9},
+ {3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3},
+};
+
+static const u8 gUnknown_082F467F[5][5] =
+{
+ {5},
+ {4, 6},
+ {3, 5, 7},
+ {2, 4, 6, 8},
+ {1, 3, 5, 6, 9},
+};
+
+// Duplicate and unused gfx. Feel free to remove.
+static const u32 sDuplicateGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.gbapal",
+ "graphics/link_games/dodrioberry_bg2.gbapal",
+ "graphics/link_games/dodrioberry_pkmn.gbapal",
+ "graphics/link_games/dodrioberry_shiny.gbapal",
+ "graphics/link_games/dodrioberry_status.gbapal",
+ "graphics/link_games/dodrioberry_berrysprites.gbapal",
+ "graphics/link_games/dodrioberry_berrysprites.4bpp.lz",
+ "graphics/link_games/dodrioberry_platform.gbapal",
+ "graphics/link_games/dodrioberry_bg1.4bpp.lz",
+ "graphics/link_games/dodrioberry_bg2.4bpp.lz",
+ "graphics/link_games/dodrioberry_status.4bpp.lz",
+ "graphics/link_games/dodrioberry_platform.4bpp.lz",
+ "graphics/link_games/dodrioberry_pkmn.4bpp.lz",
+ "graphics/link_games/dodrioberry_bg1.bin.lz",
+ "graphics/link_games/dodrioberry_bg2right.bin.lz",
+ "graphics/link_games/dodrioberry_bg2left.bin.lz");
+
+
+static const u8 gUnknown_082F7A88[][3] =
+{
+ {40, 24, 13},
+ {32, 19, 10},
+ {22, 13, 7},
+};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7A94[] = {8, 5, 8, 11, 15};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7A9C[] = {5, 10, 20, 30, 50, 70, 100};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7AA4[][10] =
+{
+ {15, 16, 17, 18, 19, 19, 18, 17, 16, 15},
+ {20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
+ {30, 31, 32, 33, 34, 34, 33, 32, 31, 30},
+};
+
+static void (*const gUnknown_082F7AC4[])(void) =
+{
+ sub_8024DBC,
+ sub_8024E00,
+ sub_8024E38,
+ sub_8024F10,
+ sub_8024F38,
+ sub_8025198,
+ sub_8025324,
+ sub_8025470,
+ sub_8025644,
+ sub_80256AC,
+ sub_8025758,
+ sub_80250D4
+};
+
+static void (*const gUnknown_082F7AF4[])(void) =
+{
+ sub_8024DBC,
+ sub_8024E00,
+ sub_8024E38,
+ sub_8024F10,
+ sub_8024FFC,
+ sub_8025230,
+ sub_8025324,
+ sub_8025470,
+ sub_8025644,
+ sub_80256AC,
+ sub_8025758,
+ sub_8025158
+};
+
+// code
+void sub_802493C(u16 a0, void (*callback)(void))
+{
+ gUnknown_03000DB0 = FALSE;
+
+ if (gReceivedRemoteLinkPlayers != 0 && (gUnknown_02022C98 = AllocZeroed(sizeof(*gUnknown_02022C98))) != NULL)
+ {
+ sub_8024A1C();
+ sub_8024A30(gUnknown_02022C98);
+ gUnknown_02022C98->savedCallback = callback;
+ gUnknown_02022C98->multiplayerId = GetMultiplayerId();
+ gUnknown_02022C98->unk32CC = gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ sub_80261F8(&gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId], &gPlayerParty[a0]);
+ CreateTask(sub_8024BC8, 1);
+ SetMainCallback2(sub_80261CC);
+ sub_80273F0();
+ sub_8026B5C(gUnknown_02022C98->unk24, &gUnknown_02022C98->unk44, &gUnknown_02022C98->unk48);
+ StopMapMusic();
+ PlayNewMapMusic(MUS_RG_KINOMIKUI);
+ }
+ else
+ {
+ SetMainCallback2(callback);
+ return;
+ }
+}
+
+static void sub_8024A1C(void)
+{
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+}
+
+static void sub_8024A30(struct DodrioStruct * data)
+{
+ u8 i;
+
+ data->unk0C = 0;
+ data->unk10 = 0;
+ data->unk14 = 0;
+ data->unk18 = 0;
+ data->unk1C = 0;
+ data->unk11C = 0;
+ data->unk120 = 0;
+ data->unk30 = 0;
+ data->unk40 = 0;
+ data->unk3C = 0;
+ data->unk12C = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ data->unk98[i] = 0;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ data->unkA8[i] = 0;
+ data->unkB0[i] = 0;
+ data->unk4A[i][0] = 0;
+ data->unk4A[i][1] = 0;
+ data->unk4A[i][2] = 0;
+ data->unk4A[i][3] = 0;
+ data->unk4A[i][5] = 0;
+ data->unk10C[i] = 0;
+ data->unk130[i] = 0;
+ }
+
+ for (i = 0; i < 11; i++)
+ {
+ data->unkD0[i] = 0;
+ data->unkDC[i] = 0;
+ data->unkC4[i] = 0;
+ data->unkF4[i][0] = 0xFF;
+ data->unkF4[i][1] = 0xFF;
+ }
+
+ data->unk20 = GetMultiplayerId() == 0 ? 1 : 0;
+ data->unk24 = GetLinkPlayerCount();
+ data->unk34[0] = GetMultiplayerId();
+ for (i = 1; i < data->unk24; i++)
+ {
+ data->unk34[i] = data->unk34[i - 1] + 1;
+ if (data->unk34[i] > data->unk24 - 1)
+ data->unk34[i] %= data->unk24;
+ }
+}
+
+static void sub_8024BC8(u8 taskId)
+{
+ u8 r4, r5;
+
+ switch (gUnknown_02022C98->unk0C)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ sub_802620C(sub_8025910, 4);
+ gUnknown_02022C98->unk0C++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_8025910))
+ {
+ sub_8029274(&gUnknown_02022C98->unk160);
+ gUnknown_02022C98->unk0C++;
+ }
+ break;
+ case 2:
+ if (!sub_802A770())
+ {
+ sub_8010434();
+ gUnknown_02022C98->unk0C++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ gUnknown_02022C98->unk0C++;
+ }
+ break;
+ case 4:
+ r5 = gUnknown_02022C98->unk24;
+ sub_80283A8();
+ for (r4 = 0; r4 < r5; r4++)
+ {
+ sub_8028408(&gUnknown_02022C98->unk318C[gUnknown_02022C98->unk34[r4]], r4, gUnknown_02022C98->unk34[r4], gUnknown_02022C98->unk24);
+ }
+ sub_802868C(FALSE, gUnknown_02022C98->unk24);
+ gUnknown_02022C98->unk0C++;
+ break;
+ case 5:
+ sub_8028A34();
+ sub_8028A88();
+ sub_8028D44();
+ sub_8028734();
+ gUnknown_02022C98->unk0C++;
+ break;
+ case 6:
+ BlendPalettes(0xFFFFFFFF, 0x10, 0x00);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ SetVBlankCallback(sub_80261E4);
+ gUnknown_02022C98->unk0C++;
+ break;
+ case 7:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022C98->unk0C++;
+ }
+ break;
+ default:
+ DestroyTask(taskId);
+ sub_802621C(sub_802589C);
+ break;
+ }
+}
+
+static void sub_8024D4C(u8 taskId)
+{
+ sub_8025D04();
+ gUnknown_082F7AC4[gUnknown_02022C98->unk18]();
+ if (!gUnknown_03000DB0)
+ {
+ sub_8026AF4();
+ }
+ sub_8025D50();
+}
+
+static void sub_8024D84(u8 taskId)
+{
+ sub_8025E0C();
+ gUnknown_082F7AF4[gUnknown_02022C98->unk18]();
+ if (!gUnknown_03000DB0)
+ {
+ sub_8026B28();
+ }
+ sub_8025ED8();
+}
+
+static void sub_8024DBC(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ sub_8028504(1);
+ sub_80292E0(1);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ if (!sub_802A770())
+ sub_8026240(1);
+ break;
+ }
+}
+
+static void sub_8024E00(void)
+{
+ if (gUnknown_02022C98->unk10 == 0)
+ {
+ sub_80262C0();
+ gUnknown_02022C98->unk10++;
+ }
+ else
+ {
+ gUnknown_02022C98->unk118 = 1;
+ sub_8026240(2);
+ }
+}
+
+static void sub_8024E38(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ sub_802EB24(7, 8, 120, 80, 0);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ sub_8010434();
+ gUnknown_02022C98->unk10++;
+ break;
+ case 2:
+ if (IsLinkTaskFinished())
+ {
+ gUnknown_02022C98->unk10++;
+ gUnknown_02022C98->unk30 = 0;
+ }
+ break;
+ case 3:
+ if (!sub_802EB84())
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 4:
+ if (++gUnknown_02022C98->unk30 > 5)
+ {
+ sub_8010434();
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 5:
+ if (IsLinkTaskFinished())
+ {
+ sub_8026240(3);
+ }
+ break;
+ }
+}
+
+static void sub_8024F10(void)
+{
+ if (gUnknown_02022C98->unk10 == 0)
+ {
+ if (gUnknown_02022C98->unk11C != 0)
+ {
+ sub_8026240(4);
+ }
+ }
+}
+
+static void sub_8024F38(void)
+{
+ if (gUnknown_02022C98->unk10 == 0)
+ {
+ if (gUnknown_02022C98->unk40 < 10)
+ {
+ if (gUnknown_02022C98->unkA8[0] == 0)
+ {
+ if (JOY_NEW(DPAD_UP))
+ {
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(2);
+ }
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(1);
+ }
+ }
+ else if (JOY_NEW(DPAD_LEFT))
+ {
+ if (gUnknown_02022C98->unk31A0[0].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk31A0[0].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(3);
+ }
+ }
+ else
+ {
+ gUnknown_02022C98->unk31A0[0].unk2C.unk0 = sub_8027518(0);
+ }
+ }
+ }
+ else
+ {
+ sub_8026240(11);
+ }
+ sub_802671C();
+ sub_8025F48();
+ }
+}
+
+static void sub_8024FFC(void)
+{
+ if (gUnknown_02022C98->unk40 < 10)
+ {
+ if (JOY_NEW(DPAD_UP))
+ {
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 2;
+ }
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 1;
+ }
+ }
+ else if (JOY_NEW(DPAD_LEFT))
+ {
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
+ {
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 3;
+ }
+ }
+ else
+ {
+ gUnknown_02022C98->unk32CC.unk2C.unk0 = 0;
+ }
+ }
+ else
+ {
+ sub_8026240(11);
+ }
+ sub_8026044();
+}
+
+static void sub_80250D4(void)
+{
+ u8 i;
+
+ sub_802671C();
+ sub_8025F48();
+ if (sub_8026C50() == 1)
+ {
+ sub_80272A4();
+ sub_8026240(5);
+ }
+ else
+ {
+ gUnknown_02022C98->unk12C = 1;
+ for (i = 1; i < gUnknown_02022C98->unk24; i++)
+ {
+ if (gUnknown_02022C98->unk130[i] != 1)
+ {
+ gUnknown_02022C98->unk12C = 0;
+ break;
+ }
+ }
+ }
+}
+
+static void sub_8025158(void)
+{
+ sub_8026044();
+ if (sub_8026C90() == 1)
+ sub_8026240(5);
+}
+
+static bool32 sub_8025170(void)
+{
+ u8 r4 = GetBlockReceivedStatus();
+ u8 r0 = sub_800A9D8();
+ if (r4 == r0)
+ {
+ ResetBlockReceivedFlags();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_8025198(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ if (SendBlock(0, gUnknown_02022C98->unk4A, sizeof(gUnknown_02022C98->unk4A)))
+ {
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 1:
+ if (IsLinkTaskFinished())
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ if (sub_8025170())
+ {
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
+ }
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24)
+ {
+ gUnknown_02022C98->unk14++;
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ default:
+ if (WaitFanfare(TRUE))
+ {
+ sub_8026240(6);
+ FadeOutAndPlayNewMapMusic(MUS_RG_WIN_YASEI, 4);
+ }
+ break;
+ }
+}
+
+static void sub_8025230(void)
+{
+ u8 i;
+
+ switch (gUnknown_02022C98->unk10) {
+ case 0:
+ if (SendBlock(0, gUnknown_02022C98->unk4A[gUnknown_02022C98->unk14],
+ sizeof(gUnknown_02022C98->unk4A))) {
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 1:
+ if (IsLinkTaskFinished()) {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ if (sub_8025170()) {
+ for (i = 0; i < gUnknown_02022C98->unk24; i++) {
+ memcpy(gUnknown_02022C98->unk4A, gBlockRecvBuffer, sizeof(gUnknown_02022C98->unk4A));
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
+ }
+ }
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ gUnknown_02022C98->unk14++;
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ default:
+ if (WaitFanfare(TRUE)) {
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk4A[gUnknown_02022C98->multiplayerId][5];
+ sub_8026240(6);
+ FadeOutAndPlayNewMapMusic(MUS_RG_WIN_YASEI, 4);
+ }
+ break;
+ }
+}
+
+static void sub_8025324(void)
+{
+ u8 sp00 = 1;
+ u8 i;
+
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ sub_802749C();
+ sub_80289E8(TRUE);
+ sub_8028DFC();
+ sub_8028EC8(TRUE);
+ sub_80292E0(2);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ if (!sub_802A770())
+ {
+ sub_80292E0(5);
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ sp00 = sub_802A794();
+ if (SendBlock(0, &sp00, sizeof(sp00)))
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ gUnknown_02022C98->unk10++;
+ gUnknown_02022C98->unk08 = 0;
+ }
+ break;
+ case 4:
+ if (sub_8025170())
+ {
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ {
+ *(gUnknown_02022C98->unk10C + i) = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
+ }
+ }
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ if (++gUnknown_02022C98->unk14 >= 120)
+ {
+ sub_80292E0(6);
+ gUnknown_02022C98->unk10++;
+ }
+ }
+ break;
+ default:
+ if (!sub_802A770())
+ {
+ sub_8026240(7);
+ }
+ break;
+ }
+}
+
+static void sub_8025470(void)
+{
+ u8 sp0;
+ u8 i;
+
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ if (sub_8027748() >= 3000)
+ {
+ sub_80292E0(4);
+ }
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ if (!sub_802A770())
+ {
+ sub_80292E0(3);
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ sub_8028FCC();
+ sub_80272E8();
+ gUnknown_02022C98->unk10++;
+ break;
+ case 3:
+ if ((sp0 = sub_802A794()) != 0)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 4:
+ if (!sub_802A770())
+ {
+ sub_80292E0(5);
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 5:
+ sp0 = sub_802A794();
+ if (SendBlock(0, &sp0, sizeof(sp0)))
+ {
+ gUnknown_02022C98->unk08 = 0;
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 6:
+ if (IsLinkTaskFinished())
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 7:
+ if (sub_8025170())
+ {
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ {
+ *(gUnknown_02022C98->unk10C + i) = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
+ }
+ }
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24) {
+ if (++gUnknown_02022C98->unk14 >= 120)
+ {
+ sub_8027608();
+ sub_80292E0(6);
+ gUnknown_02022C98->unk10++;
+ }
+ }
+ else
+ {
+ sub_8027554();
+ }
+ break;
+ default:
+ if (!sub_802A770())
+ {
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ {
+ if (gUnknown_02022C98->unk10C[i] == 2)
+ {
+ sub_8026240(8);
+ return;
+ }
+ }
+ sub_8026240(10);
+ }
+ break;
+ }
+}
+
+static void sub_8025644(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ sub_800AC34();
+ sub_80292E0(7);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ if (!sub_802A770())
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ if (sub_802A794() == 5)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ default:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ sub_8026240(9);
+ }
+ break;
+ }
+}
+
+static void sub_80256AC(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ sub_8028B80();
+ sub_80287E4();
+ sub_8028614(gUnknown_02022C98->unk24);
+ sub_8028E84();
+ gUnknown_03000DB0 = TRUE;
+ sub_80292E0(8);
+ gUnknown_02022C98->unk10++;
+ break;
+ default:
+ if (!sub_802A770())
+ {
+ SetMainCallback2(gUnknown_02022C98->savedCallback);
+ DestroyTask(gUnknown_02022C98->unk04);
+ Free(gUnknown_02022C98);
+ FreeAllWindowBuffers();
+ }
+ break;
+ }
+}
+
+static void sub_8025758(void)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ sub_80292E0(9);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 2:
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 3:
+ StopMapMusic();
+ gUnknown_02022C98->unk10++;
+ break;
+ case 4:
+ PlayNewMapMusic(MUS_RG_KINOMIKUI);
+ sub_8028E4C();
+ gUnknown_02022C98->unk10++;
+ break;
+ case 5:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ gUnknown_02022C98->unk10++;
+ break;
+ case 6:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ default:
+ DestroyTask(gUnknown_02022C98->unk04);
+ sub_802621C(sub_802589C);
+ sub_802903C();
+ sub_8024A30(gUnknown_02022C98);
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gUnknown_02022C98->unk24 = 1;
+ }
+ sub_80273F0();
+ sub_8028EC8(FALSE);
+ break;
+ }
+}
+
+static void sub_802589C(u8 taskId)
+{
+ switch (gUnknown_02022C98->unk10)
+ {
+ case 0:
+ if (sub_8026264() == 1)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ case 1:
+ sub_80286E4();
+ gUnknown_02022C98->unk10++;
+ break;
+ case 2:
+ if (sub_8028828() == TRUE)
+ {
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ default:
+ if (gUnknown_02022C98->unk20 != 0)
+ {
+ sub_802621C(sub_8024D4C);
+ }
+ else
+ {
+ sub_802621C(sub_8024D84);
+ }
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_8025910(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 i;
+
+ switch (data[0])
+ {
+ case 0:
+ if (SendBlock(0, &gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId].isShiny, sizeof(gUnknown_02022C98->unk318C[gUnknown_02022C98->multiplayerId].isShiny)))
+ {
+ gUnknown_02022C98->unk08 = 0;
+ data[0]++;
+ }
+ break;
+ case 1:
+ if (IsLinkTaskFinished())
+ {
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_8025170())
+ {
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ {
+ *(u8 *)&gUnknown_02022C98->unk318C[i] = *(u8 *)gBlockRecvBuffer[i];
+ gUnknown_02022C98->unk08 = gUnknown_02022C98->unk24;
+ }
+ }
+ if (gUnknown_02022C98->unk08 >= gUnknown_02022C98->unk24)
+ {
+ DestroyTask(taskId);
+ sub_80292E0(6);
+ gUnknown_02022C98->unk10++;
+ }
+ break;
+ }
+}
+
+static void sub_80259FC(void)
+{
+ u8 i;
+ u8 r7 = gUnknown_02022C98->unk24;
+
+ gUnknown_02022C98->unk31A0[0].unk10 = sub_8028164(0, &gUnknown_02022C98->unk31A0[0], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ gUnknown_02022C98->unk128 = 1;
+
+ for (i = 1; i < r7; i++)
+ {
+ if ( gUnknown_02022C98->unkA8[i] == 0
+ && sub_8028318(i, &gUnknown_02022C98->unk31A0[i].unk2C.unk0) == 0)
+ {
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk128 = 0;
+ }
+ }
+ if (++gUnknown_02022C98->unk124 >= 60)
+ {
+ if (gUnknown_02022C98->unk128 != 0)
+ {
+ sub_8011AC8();
+ gUnknown_02022C98->unk124 = 0;
+ }
+ else if (gUnknown_02022C98->unk124 > 70)
+ {
+ sub_8011AC8();
+ gUnknown_02022C98->unk124 = 0;
+ }
+ }
+
+ for (i = 0; i < r7; i++)
+ {
+ if ( gUnknown_02022C98->unk31A0[i].unk2C.unk0 != 0
+ && gUnknown_02022C98->unkA8[i] == 0)
+ {
+ gUnknown_02022C98->unkA8[i] = 1;
+ }
+ switch (gUnknown_02022C98->unkA8[i])
+ {
+ case 0:
+ default:
+ break;
+ case 1 ... 3:
+ if (++gUnknown_02022C98->unkB0[i] >= 6)
+ {
+ gUnknown_02022C98->unkB0[i] = 0;
+ gUnknown_02022C98->unkA8[i] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk8 = 0;
+ }
+ break;
+ case 4:
+ if (++gUnknown_02022C98->unkB0[i] >= 40)
+ {
+ gUnknown_02022C98->unkB0[i] = 0;
+ gUnknown_02022C98->unkA8[i] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk8 = 0;
+ }
+ break;
+ }
+ }
+}
+
+static void sub_8025C0C(void)
+{
+ u8 i;
+ u8 r6 = gUnknown_02022C98->unk24;
+
+ gUnknown_02022C98->unk31A0[0].unk10 = sub_8028164(0, &gUnknown_02022C98->unk31A0[0], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ gUnknown_02022C98->unk128 = 1;
+
+ for (i = 1; i < r6; i++)
+ {
+ if (sub_8028374(i) != 0)
+ {
+ gUnknown_02022C98->unk130[i] = 1;
+ gUnknown_02022C98->unk128 = 0;
+ }
+ }
+ if (++gUnknown_02022C98->unk124 >= 60)
+ {
+ if (gUnknown_02022C98->unk128 != 0)
+ {
+ sub_8011AC8();
+ gUnknown_02022C98->unk124 = 0;
+ }
+ else if (gUnknown_02022C98->unk124 > 70)
+ {
+ sub_8011AC8();
+ gUnknown_02022C98->unk124 = 0;
+ }
+ }
+}
+
+static void sub_8025D04(void)
+{
+ switch (gUnknown_02022C98->unk18)
+ {
+ case 3:
+ if (sub_8026BB8() == TRUE)
+ {
+ sub_8026C28();
+ gUnknown_02022C98->unk11C = 1;
+ }
+ break;
+ case 4:
+ sub_80259FC();
+ break;
+ case 11:
+ sub_8025C0C();
+ break;
+ }
+}
+
+static void sub_8025D50(void)
+{
+ switch (gUnknown_02022C98->unk18)
+ {
+ case 4:
+ sub_8027E30(&gUnknown_02022C98->unk32CC, &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, gUnknown_02022C98->unk40, gUnknown_02022C98->unk120, gUnknown_02022C98->unk12C);
+ break;
+ case 11:
+ sub_8027E30(&gUnknown_02022C98->unk32CC, &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, gUnknown_02022C98->unk40, gUnknown_02022C98->unk120, gUnknown_02022C98->unk12C);
+ break;
+ }
+}
+
+static void sub_8025E0C(void)
+{
+ switch (gUnknown_02022C98->unk18)
+ {
+ case 4:
+ sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ break;
+ case 11:
+ sub_8028164(gUnknown_02022C98->multiplayerId, &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId], &gUnknown_02022C98->unk31A0[0].unk2C, &gUnknown_02022C98->unk31A0[1].unk2C, &gUnknown_02022C98->unk31A0[2].unk2C, &gUnknown_02022C98->unk31A0[3].unk2C, &gUnknown_02022C98->unk31A0[4].unk2C, &gUnknown_02022C98->unk40, &gUnknown_02022C98->unk120, &gUnknown_02022C98->unk12C);
+ break;
+ }
+}
+
+static void sub_8025ED8(void)
+{
+ switch (gUnknown_02022C98->unk18)
+ {
+ case 3:
+ sub_8027DD0(1);
+ gUnknown_02022C98->unk11C = 1;
+ break;
+ case 4:
+ if (gUnknown_02022C98->unk32CC.unk2C.unk0 != 0)
+ {
+ sub_80282EC(gUnknown_02022C98->unk32CC.unk2C.unk0);
+ }
+ break;
+ case 11:
+ if (gUnknown_02022C98->unk120 == 0 && gUnknown_02022C98->unk12C == 0)
+ {
+ sub_8028350(1);
+ }
+ break;
+ }
+}
+
+static void sub_8025F48(void)
+{
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
+ {
+ if (!IsSEPlaying())
+ {
+ gUnknown_02022C98->unk144 = 0;
+ }
+ }
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 == 1)
+ {
+ if (gUnknown_02022C98->unk144 == 0)
+ {
+ m4aSongNumStop(SE_SEIKAI);
+ PlaySE(SE_SEIKAI);
+ gUnknown_02022C98->unk144 = 1;
+ }
+ }
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 == 1)
+ {
+ if (gUnknown_02022C98->unk144 == 0 && !IsSEPlaying())
+ {
+ PlaySE(SE_BOO);
+ sub_80284CC(1);
+ gUnknown_02022C98->unk144 = 1;
+ }
+ }
+
+ if (gUnknown_02022C98->unk154 == 0 && gUnknown_02022C98->unk40 >= 10)
+ {
+ StopMapMusic();
+ gUnknown_02022C98->unk154 = 1;
+ }
+ else if (gUnknown_02022C98->unk154 == 1)
+ {
+ PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN
+ gUnknown_02022C98->unk154 = 2;
+ }
+}
+
+static void sub_8026044(void)
+{
+ u8 r8 = gUnknown_02022C98->unk44;
+ u8 r7 = gUnknown_02022C98->unk48;
+ u8 r4;
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 == 0)
+ {
+ if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 != 1 && gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 != 1)
+ {
+ gUnknown_02022C98->unk144 = 0;
+ }
+ }
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk4 == 1)
+ {
+ if (gUnknown_02022C98->unk144 == 0)
+ {
+ m4aSongNumStop(SE_SEIKAI);
+ PlaySE(SE_SEIKAI);
+ gUnknown_02022C98->unk144 = 1;
+ }
+ }
+ else if (gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk8 == 1)
+ {
+ if (gUnknown_02022C98->unk144 == 0 && !IsSEPlaying())
+ {
+ PlaySE(SE_BOO);
+ sub_80284CC(1);
+ gUnknown_02022C98->unk144 = 1;
+ }
+ }
+ for (r4 = r8; r4 < r7; r4++)
+ {
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk14;
+ if (ptr->unkB[r4] >= 10)
+ {
+ if (gUnknown_02022C98->unk148[r4] == 0)
+ {
+ PlaySE(SE_FUUSEN1 + ptr->unk0[r4]);
+ gUnknown_02022C98->unk148[r4] = 1;
+ }
+ }
+ else
+ {
+ gUnknown_02022C98->unk148[r4] = 0;
+ }
+ }
+ if (gUnknown_02022C98->unk154 == 0 && gUnknown_02022C98->unk40 >= 10)
+ {
+ StopMapMusic();
+ gUnknown_02022C98->unk154 = 1;
+ }
+ else if (gUnknown_02022C98->unk154 == 1)
+ {
+ PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN
+ gUnknown_02022C98->unk154 = 2;
+ }
+}
+
+static void sub_80261CC(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80261E4(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+static void sub_80261F8(struct DodrioSubstruct_318C * a0, struct Pokemon * a1)
+{
+ a0->isShiny = IsMonShiny(a1);
+}
+
+static void sub_802620C(TaskFunc func, u8 priority)
+{
+ CreateTask(func, priority);
+}
+
+static void sub_802621C(TaskFunc func)
+{
+ gUnknown_02022C98->unk04 = CreateTask(func, 1);
+ gUnknown_02022C98->unk10 = 0;
+ gUnknown_02022C98->unk0C = 0;
+ gUnknown_02022C98->unk14 = 0;
+}
+
+static void sub_8026240(u8 a0)
+{
+ gUnknown_02022C98->unk1C = gUnknown_02022C98->unk18;
+ gUnknown_02022C98->unk18 = a0;
+ gUnknown_02022C98->unk10 = 0;
+ gUnknown_02022C98->unk14 = 0;
+}
+
+static bool32 sub_8026264(void)
+{
+ u8 r2 = gUnknown_02022C98->unk14 / 4;
+ gUnknown_02022C98->unk14++;
+ if (r2 != 0 && gUnknown_02022C98->unk14 % 4 == 0)
+ {
+ if (r2 < gUnknown_082F7A94[gUnknown_02022C98->unk24 - 1])
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, (r2 * 8));
+ SetGpuReg(REG_OFFSET_BG2HOFS, -(r2 * 8));
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_80262C0(void)
+{
+ u8 i;
+ u8 start = gUnknown_02022C98->unk44;
+ u8 finish = gUnknown_02022C98->unk48;
+
+ for (i = start; i < finish; i++)
+ {
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk32CC.unk14;
+ ptr->unkB[i] = (i % 2 == 0) ? 1 : 0;
+ ptr->unk0[i] = 0;
+ }
+}
+
+static void sub_8026324(void)
+{
+ u8 sp0 = gUnknown_02022C98->unk44;
+ u8 sp4 = gUnknown_02022C98->unk48;
+ u8 sp8 = gUnknown_02022C98->unk24;
+ u8 i, j, k, r5;
+
+ if (gUnknown_02022C98->unk40 >= 10)
+ return;
+
+ for (i = 0; i < sp8; i++)
+ {
+ u8 *ptr = &gUnknown_02022C98->unk31A0[i].unk2C.unk0;
+ if (*ptr != 0 && gUnknown_02022C98->unkA8[i] == 1)
+ {
+ for (j = sp0; j < sp4; j++)
+ {
+ r5 = gUnknown_082F449C[0][0][j];
+ if (gUnknown_02022C98->unkF4[r5][0] == i || gUnknown_02022C98->unkF4[r5][1] == i)
+ break;
+ if (sub_8026634(i, *ptr, r5) == TRUE)
+ {
+ for (k = 0; k < 2; k++)
+ {
+ if (gUnknown_02022C98->unkF4[r5][k] == 0xFF)
+ {
+ gUnknown_02022C98->unkF4[r5][k] = i;
+ gUnknown_02022C98->unkA8[i] = 2;
+ gUnknown_02022C98->unkC4[r5] = 1;
+ break;
+ }
+ }
+ break;
+ }
+ if (gUnknown_02022C98->unk31A0[i].unk2C.unk8 == 1)
+ break;
+ }
+ }
+ }
+
+ for (j = sp0; j < sp4; j++)
+ {
+ u8 id = 0xFF;
+ r5 = gUnknown_082F449C[0][0][j];
+ if (gUnknown_02022C98->unkC4[r5] == 1)
+ {
+ s32 r2;
+ u8 r4, r3 = gUnknown_02022C98->unk90[sub_8026D8C(r5)] / 7;
+ if (r3 >= ARRAY_COUNT(gUnknown_082F7A88) - 1)
+ r3 = ARRAY_COUNT(gUnknown_082F7A88) - 1;
+
+ r2 = gUnknown_082F7A88[r3][gUnknown_02022C98->unk31A0[0].unk14.unk0[r5]] - gUnknown_02022C98->unkD0[r5];
+ if (r2 < 6)
+ gUnknown_02022C98->unk9C[r5] += r2;
+
+ if (++gUnknown_02022C98->unk9C[r5] >= 6)
+ {
+ gUnknown_02022C98->unk9C[r5] = 0;
+ if (gUnknown_02022C98->unkF4[r5][0] == 0xFF && gUnknown_02022C98->unkF4[r5][1] == 0xFF)
+ {
+ continue;
+ }
+ else if (gUnknown_02022C98->unkF4[r5][0] != 0xFF && gUnknown_02022C98->unkF4[r5][1] == 0xFF)
+ {
+ r4 = gUnknown_02022C98->unkF4[r5][0];
+ }
+ else
+ {
+ u8 unk0 = gUnknown_02022C98->unkF4[r5][0];
+ i = gUnknown_02022C98->unkF4[r5][1]; // Have to re-use the variable to match.
+ if (!(Random() & 1))
+ {
+ r4 = unk0;
+ id = i;
+ }
+ else
+ {
+ r4 = i;
+ id = unk0;
+ }
+ }
+ gUnknown_02022C98->unk32CC.unk14.unkB[r5] = 7;
+ gUnknown_02022C98->unkC4[r5] = 2;
+ gUnknown_02022C98->unkA8[r4] = 3;
+ gUnknown_02022C98->unkB8[r5] = r4;
+ gUnknown_02022C98->unk31A0[r4].unk2C.unk4 = 1;
+ gUnknown_02022C98->unk31A0[id].unk2C.unk8 = 1;
+ gUnknown_02022C98->unk86[r4]++;
+ sub_8026F1C(0, r5, r4);
+ sub_8027234(TRUE);
+ sub_8026D1C(r4);
+ gUnknown_02022C98->unkE8[r5] = gUnknown_02022C98->unk32CC.unk14.unk0[r5];
+ gUnknown_02022C98->unk32CC.unk14.unk0[r5] = 3;
+ gUnknown_02022C98->unkF4[r5][0] = 0xFF;
+ gUnknown_02022C98->unkF4[r5][1] = 0xFF;
+ }
+ }
+ }
+}
+
+static bool32 sub_8026634(u8 a0, u8 a1, u8 a2)
+{
+ s32 r7 = 0;
+ u8 r5 = gUnknown_02022C98->unk24 - 1;
+ struct DodrioSubstruct_31A0_14 * ptr = &gUnknown_02022C98->unk32CC.unk14;
+
+ switch (a1)
+ {
+ case 3:
+ default:
+ r7 = 0;
+ break;
+ case 2:
+ r7 = 1;
+ break;
+ case 1:
+ r7 = 2;
+ break;
+ }
+ if (ptr->unkB[a2] == 6 || ptr->unkB[a2] == 7)
+ {
+ if (a2 == gUknnown_082F45AF[r5][a0][r7])
+ {
+ if (gUnknown_02022C98->unkC4[a2] == 1 || gUnknown_02022C98->unkC4[a2] == 2)
+ {
+ gUnknown_02022C98->unk31A0[a0].unk2C.unk8 = 1;
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ }
+ else
+ {
+ if (a2 == gUknnown_082F45AF[r5][a0][r7])
+ {
+ gUnknown_02022C98->unkA8[a0] = 4;
+ gUnknown_02022C98->unk31A0[a0].unk2C.unk8 = 1;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_802671C(void)
+{
+ u8 r1 = gUnknown_02022C98->unk44;
+ u8 r9 = gUnknown_02022C98->unk48;
+ u8 r3 = 0;
+ u8 r10 = 0;
+ u8 i;
+ u8 r2;
+ struct DodrioStruct *ptr;
+
+ gUnknown_02022C98->unk120 = 0;
+
+ for (i = r1; i < r9 - 1; i++)
+ {
+ ptr = gUnknown_02022C98;
+
+ if (gUnknown_02022C98->unkC4[i] == 0 || gUnknown_02022C98->unkC4[i] == 1)
+ {
+ gUnknown_02022C98->unk120 = 1;
+ if (ptr->unk32CC.unk14.unkB[i] >= 10)
+ {
+ ptr->unk32CC.unk14.unkB[i] = 10;
+ gUnknown_02022C98->unkC4[i] = 3;
+ if (gUnknown_02022C98->unk148[i] == 0)
+ {
+ gUnknown_02022C98->unk148[i] = 1;
+ PlaySE(SE_FUUSEN1 + ptr->unk32CC.unk14.unk0[i]);
+ }
+ if (gUnknown_02022C98->unk40 < 10 || r10 == 1)
+ {
+ r10 = 1;
+ gUnknown_02022C98->unk148[i] = 0;
+ if (gUnknown_02022C98->unk40 < 10)
+ {
+ gUnknown_02022C98->unk40++;
+ }
+ sub_8026F1C(3, i, 0);
+ sub_8027234(FALSE);
+ }
+ }
+ else
+ {
+ r3 = gUnknown_02022C98->unk90[sub_8026D8C(i)] / 7;
+ if (r3 >= 2)
+ {
+ r3 = 2;
+ }
+ r2 = gUnknown_082F7A88[r3][ptr->unk32CC.unk14.unk0[i]];
+ if (++gUnknown_02022C98->unkD0[i] >= r2)
+ {
+ ptr->unk32CC.unk14.unkB[i]++;
+ gUnknown_02022C98->unkD0[i] = 0;
+ }
+ sub_8026324();
+ }
+ }
+ else if (gUnknown_02022C98->unkC4[i] == 2)
+ {
+ gUnknown_02022C98->unk120 = 1;
+ if (++gUnknown_02022C98->unkDC[i] >= 20)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->unkB8[i]].unk2C.unk4 = 0;
+ gUnknown_02022C98->unkDC[i] = 0;
+ gUnknown_02022C98->unkD0[i] = 0;
+ gUnknown_02022C98->unkC4[i] = 0;
+ ptr->unk32CC.unk14.unkB[i] = 1;
+ ptr->unk32CC.unk14.unk0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ }
+ }
+ else if (gUnknown_02022C98->unkC4[i] == 3)
+ {
+ if (++gUnknown_02022C98->unkDC[i] >= 20)
+ {
+ if (gUnknown_02022C98->unk40 < 10)
+ {
+ gUnknown_02022C98->unkDC[i] = 0;
+ gUnknown_02022C98->unkD0[i] = 0;
+ gUnknown_02022C98->unkC4[i] = 0;
+ ptr->unk32CC.unk14.unkB[i] = 1;
+ gUnknown_02022C98->unkE8[i] = ptr->unk32CC.unk14.unk0[i];
+ ptr->unk32CC.unk14.unk0[i] = sub_8026DB0(sub_8026D8C(i), i);
+ }
+ }
+ }
+ }
+}
+
+static void sub_8026988(void)
+{
+ u8 i, first, count;
+
+ first = gUnknown_02022C98->unk44;
+ count = gUnknown_02022C98->unk48;
+ for (i = first; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ u8 var = gUnknown_082F449C[gUnknown_02022C98->unk24 - 1][gUnknown_02022C98->multiplayerId][i];
+
+ if (ptr->unk14.unkB[var] != 0)
+ sub_8028BF8(i, FALSE);
+ else
+ sub_8028BF8(i, TRUE);
+
+ if (ptr->unk14.unkB[var] > 9)
+ {
+ sub_8028CA4(i, ptr->unk14.unk0[var] + 3);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2 - 1);
+ }
+ else if (ptr->unk14.unk0[var] == 3)
+ {
+ ptr->unk14.unkB[var] = 7;
+ sub_8028CA4(i, 6);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2 - 1);
+ }
+ else
+ {
+ sub_8028CA4(i, ptr->unk14.unk0[var]);
+ sub_8028C7C(i, ptr->unk14.unkB[var] * 2);
+ }
+ }
+}
+
+static void sub_8026A88(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 0; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[i];
+ sub_80286B4(i, ptr->unk2C.unk0);
+ }
+}
+
+static void sub_8026AC8(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 0; i < count; i++)
+ sub_80286B4(i, 4);
+}
+
+static void sub_8026AF4(void)
+{
+ sub_8026988();
+ if (gUnknown_02022C98->unk40 > 9)
+ sub_8026AC8();
+ else
+ sub_8026A88();
+
+ sub_80288D4(gUnknown_02022C98->unk40);
+}
+
+// This function is literally the same as the one above...Why?
+static void sub_8026B28(void)
+{
+ sub_8026988();
+ if (gUnknown_02022C98->unk40 > 9)
+ sub_8026AC8();
+ else
+ sub_8026A88();
+
+ sub_80288D4(gUnknown_02022C98->unk40);
+}
+
+static void sub_8026B5C(u8 arg0, u8 *arg1, u8 *arg2)
+{
+ switch (arg0)
+ {
+ case 1:
+ *arg1 = 4, *arg2 = 7;
+ break;
+ case 2:
+ *arg1 = 3, *arg2 = 8;
+ break;
+ case 3:
+ *arg1 = 2, *arg2 = 9;
+ break;
+ case 4:
+ *arg1 = 1, *arg2 = 10;
+ break;
+ case 5:
+ *arg1 = 0, *arg2 = 11;
+ break;
+ }
+}
+
+static bool32 sub_8026BB8(void)
+{
+ u8 i, count;
+
+ count = gUnknown_02022C98->unk24;
+ for (i = 1; i < count; i++)
+ {
+ if (gUnknown_02022C98->unk158[i] == 0)
+ gUnknown_02022C98->unk158[i] = sub_8027DFC(i);
+ }
+
+ // This loop won't ever run, the seemingly poitnless assingment below is to make the compiler
+ // generate code for it.
+ count = count;
+ for (; i < count; i++)
+ {
+ if (gUnknown_02022C98->unk158[i] == 0)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_8026C28(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ gUnknown_02022C98->unk158[i] = 0;
+}
+
+static bool32 sub_8026C50(void)
+{
+ if (gUnknown_02022C98->unk40 > 9 && gUnknown_02022C98->unk120 == 0)
+ {
+ gUnknown_02022C98->unk40 = 10;
+ if (gUnknown_02022C98->unk12C != 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_8026C90(void)
+{
+ u8 i, first, count;
+
+ if (gUnknown_02022C98->unk40 > 9)
+ {
+ first = gUnknown_02022C98->unk44;
+ count = gUnknown_02022C98->unk48;
+ gUnknown_02022C98->unk40 = 10;
+ if (gUnknown_02022C98->unk12C != 0)
+ {
+ for (i = first; i < count; i++)
+ {
+ struct DodrioSubstruct_31A0 *ptr = &gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId];
+ u8 var = gUnknown_082F449C[gUnknown_02022C98->unk24 - 1][gUnknown_02022C98->multiplayerId][i];
+
+ if (ptr->unk14.unkB[var] != 10)
+ return FALSE;
+ }
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void sub_8026D1C(u8 arg0)
+{
+ u8 var = gUnknown_082F7A9C[gUnknown_02022C98->unk90[arg0] % 7] + (gUnknown_02022C98->unk90[arg0] / 7) * 100;
+ if (gUnknown_02022C98->unk86[arg0] >= var)
+ gUnknown_02022C98->unk90[arg0]++;
+}
+
+static u8 sub_8026D8C(u8 arg0)
+{
+ return gUnknown_082F4648[gUnknown_02022C98->unk24 - 1][arg0];
+}
+
+static u8 sub_8026DB0(u8 arg0, u8 arg1)
+{
+ u8 i, var3;
+ u8 count = gUnknown_02022C98->unk24 - 1;
+ u8 var0 = gUnknown_082F45FA[count][arg0][0];
+ u8 var1 = gUnknown_082F45FA[count][arg0][1];
+ u8 var2 = gUnknown_082F45FA[count][arg0][2];
+
+ for (i = 0; gUnknown_082F467F[count][i] != 0; i++)
+ {
+ if (arg1 == gUnknown_082F467F[count][i])
+ return sub_8026E70(gUnknown_02022C98->unk90[var1], arg1);
+ }
+
+ // Gets the highest of the three.
+ if (gUnknown_02022C98->unk90[var0] > gUnknown_02022C98->unk90[var1])
+ var3 = gUnknown_02022C98->unk90[var0];
+ else
+ var3 = gUnknown_02022C98->unk90[var1];
+
+ if (gUnknown_02022C98->unk90[var2] > var3)
+ var3 = gUnknown_02022C98->unk90[var2];
+
+ return sub_8026E70(var3, arg1);
+}
+
+static u8 sub_8026E70(u8 arg0, u8 arg1)
+{
+ u8 var = gUnknown_02022C98->unkE8[arg1];
+ switch (arg0 % 7)
+ {
+ default: return 0;
+ case 0: return 0;
+ case 1: return 1;
+ case 2: return 2;
+ case 3:
+ if (var == 0)
+ return 1;
+ else
+ return 0;
+ case 4:
+ if (var == 0)
+ return 2;
+ else
+ return 0;
+ case 5:
+ if (var == 2)
+ return 1;
+ else
+ return 2;
+ case 6:
+ if (var == 0)
+ return 1;
+ else if (var == 1)
+ return 2;
+ else
+ return 0;
+ }
+}
+
+static bool32 sub_8026EEC(u16 arg0[5][6])
+{
+ int sum, i;
+ for (sum = 0, i = 0; i < GetLinkPlayerCount(); sum += arg0[i][3], i++)
+ ;
+
+ if (sum >= 11)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_8026F1C(u8 arg0, u8 arg1, u8 arg2)
+{
+ u8 var;
+ u8 count = gUnknown_02022C98->unk24;
+ switch (arg0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ var = gUnknown_02022C98->unk31A0[0].unk14.unk0[arg1];
+ gUnknown_02022C98->unk4A[arg2][var] = IncrementWithLimit(gUnknown_02022C98->unk4A[arg2][var], 20000);
+ break;
+ case 3:
+ if (sub_8026EEC(gUnknown_02022C98->unk4A))
+ break;
+ switch (count)
+ {
+ case 5:
+ switch (arg1)
+ {
+ case 0:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 1:
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 2:
+ gUnknown_02022C98->unk4A[3][3]++;
+ gUnknown_02022C98->unk4A[4][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[4][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[4][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 8:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 9:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ }
+ break;
+ case 4:
+ switch (arg1)
+ {
+ case 1:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 2:
+ gUnknown_02022C98->unk4A[3][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[3][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 8:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ }
+ break;
+ case 3:
+ switch (arg1)
+ {
+ case 2:
+ gUnknown_02022C98->unk4A[1][3]++;
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 3:
+ gUnknown_02022C98->unk4A[2][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[2][3]++;
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 7:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ }
+ break;
+ case 2:
+ switch (arg1)
+ {
+ case 3:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 4:
+ gUnknown_02022C98->unk4A[0][3]++;
+ break;
+ case 5:
+ gUnknown_02022C98->unk4A[0][3]++;
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ case 6:
+ gUnknown_02022C98->unk4A[1][3]++;
+ break;
+ }
+ break;
+ }
+ break;
+ }
+}
+
+static void sub_8027234(bool32 arg0)
+{
+ if (gUnknown_02022C98->unk24 != 5)
+ return;
+
+ if (arg0 == TRUE)
+ {
+ if (++gUnknown_02022C98->unk112 > gUnknown_02022C98->unk114)
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk112;
+ if (gUnknown_02022C98->unk112 > 9999)
+ gUnknown_02022C98->unk112 = 9999;
+ }
+ else
+ {
+ if (gUnknown_02022C98->unk112 > gUnknown_02022C98->unk114)
+ gUnknown_02022C98->unk114 = gUnknown_02022C98->unk112;
+ gUnknown_02022C98->unk112 = 0;
+ }
+}
+
+static void sub_80272A4(void)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_02022C98->unk24; i++)
+ gUnknown_02022C98->unk4A[i][5] = gUnknown_02022C98->unk114;
+}
+
+static void sub_80272E8(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 11; j++)
+ gUnknown_02022C98->unk31A0[i].unk14.unkB[j] = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk0 = 0;
+ gUnknown_02022C98->unk31A0[i].unk2C.unk4 = 0;
+ gUnknown_02022C98->unk90[i] = 0;
+ gUnknown_02022C98->unk86[i] = 0;
+ gUnknown_02022C98->unk3308[i].unk0 = 0;
+ gUnknown_02022C98->unk3308[i].unk4 = 0;
+ gUnknown_02022C98->unk4A[i][0] = 0;
+ gUnknown_02022C98->unk4A[i][1] = 0;
+ gUnknown_02022C98->unk4A[i][2] = 0;
+ gUnknown_02022C98->unk4A[i][3] = 0;
+ gUnknown_02022C98->unk4A[i][4] = 0;
+ gUnknown_02022C98->unk4A[i][5] = 0;
+ }
+ gUnknown_02022C98->unk154 = 0;
+ gUnknown_02022C98->unk112 = 0;
+ gUnknown_02022C98->unk40 = 0;
+ sub_8026A88();
+ sub_8026988();
+}
+
+static const s16 gUnknown_082F7B24[] = {10, 30, 50, 50};
+
+static void sub_80273F0(void)
+{
+ u8 i, var = 0, var2 = 0;
+
+ switch (gUnknown_02022C98->unk24)
+ {
+ case 4: var = 1; break;
+ case 5: var = 2; break;
+ }
+
+ var2 = Random() % 10;
+ for (i = 0; i < 5; i++)
+ gUnknown_02022C98->unk4A[i][4] = gUnknown_082F7AA4[var][var2];
+}
+
+static u32 sub_802745C(u8 arg0)
+{
+ u32 sum = gUnknown_02022C98->unk4A[arg0][0]
+ + gUnknown_02022C98->unk4A[arg0][1]
+ + gUnknown_02022C98->unk4A[arg0][2];
+ return min(sum, 9999);
+}
+
+static void sub_802749C(void)
+{
+ u32 berriesPicked = Min(sub_802745C(gUnknown_02022C98->multiplayerId), 9999);
+ u32 score = Min(sub_80276C0(gUnknown_02022C98->multiplayerId), 999990);
+
+ if (gSaveBlock2Ptr->berryPick.bestScore < score)
+ gSaveBlock2Ptr->berryPick.bestScore = score;
+ if (gSaveBlock2Ptr->berryPick.berriesPicked < berriesPicked)
+ gSaveBlock2Ptr->berryPick.berriesPicked = berriesPicked;
+ if (gSaveBlock2Ptr->berryPick.berriesPickedInRow < gUnknown_02022C98->unk114)
+ gSaveBlock2Ptr->berryPick.berriesPickedInRow = gUnknown_02022C98->unk114;
+}
+
+static u8 sub_8027518(u8 arg0)
+{
+ u8 i, saved;
+
+ saved = gUnknown_02022C98->unk98[3];
+ for (i = 3; i != 0; i--)
+ gUnknown_02022C98->unk98[i] = gUnknown_02022C98->unk98[i - 1];
+ gUnknown_02022C98->unk98[0] = arg0;
+ return saved;
+}
+
+static void sub_8027554(void)
+{
+ if (gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] == 0)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 2;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 3;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 1;
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
+ PlaySE(SE_W204);
+ }
+ else
+ {
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 0;
+ }
+ }
+ else
+ {
+ gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId]--;
+ }
+}
+
+static void sub_8027608(void)
+{
+ gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 0;
+}
+
+static u16 sub_802762C(void)
+{
+ return gUnknown_02022C98->unk4A[gUnknown_02022C98->multiplayerId][4] + FIRST_BERRY_INDEX;
+}
+
+static u8 sub_8027650(void)
+{
+ return gUnknown_02022C98->unk24;
+}
+
+static u8 *sub_8027660(u8 id)
+{
+ if (gReceivedRemoteLinkPlayers)
+ return gLinkPlayers[id].name;
+ else
+ return gUnknown_02022C98->unk31A0[id].name;
+}
+
+static u16 sub_80276A0(u8 arg0, u8 arg1)
+{
+ return gUnknown_02022C98->unk4A[arg0][arg1];
+}
+
+static u32 sub_80276C0(u8 arg0)
+{
+ u8 i;
+ u32 var, sum = 0;
+
+ for (i = 0; i < 3; i++)
+ sum += gUnknown_02022C98->unk4A[arg0][i] * gUnknown_082F7B24[i];
+
+ var = gUnknown_02022C98->unk4A[arg0][3] * gUnknown_082F7B24[3];
+ if (sum <= var)
+ return 0;
+ else
+ return sum - var;
+}
+
+static u32 sub_8027748(void)
+{
+ u8 i, count = gUnknown_02022C98->unk24;
+ u32 maxVar = sub_80276C0(0);
+
+ for (i = 1; i < count; i++)
+ {
+ u32 var = sub_80276C0(i);
+ if (var > maxVar)
+ maxVar = var;
+ }
+ return Min(maxVar, 999990);
+}
+
+static u32 sub_802778C(u8 arg0)
+{
+ u8 i, count = gUnknown_02022C98->unk24;
+ u16 maxVar = gUnknown_02022C98->unk4A[0][arg0];
+
+ for (i = 0; i < count; i++)
+ {
+ u16 var = gUnknown_02022C98->unk4A[i][arg0];
+ if (var > maxVar)
+ maxVar = var;
+ }
+ return maxVar;
+}
+
+static u32 sub_80277D0(u8 arg0)
+{
+ u32 vals[5], temp;
+ s16 r6 = TRUE;
+ u8 i, count = gUnknown_02022C98->unk24;
+
+ for (i = 0; i < count; i++)
+ vals[i] = temp = sub_80276C0(i);
+
+ while (r6)
+ {
+ r6 = FALSE;
+ for (i = 0; i < count - 1; i++)
+ {
+ if (vals[i] < vals[i + 1])
+ {
+ SWAP(vals[i], vals[i + 1], temp);
+ r6 = TRUE;
+ }
+ }
+ }
+
+ return vals[arg0];
+}
+
+static u32 sub_802784C(void)
+{
+ u8 i, r10 = 0, r8 = 0, r9 = 0, count = gUnknown_02022C98->unk24;
+
+ // Function called two times for some reason.
+ sub_8027748();
+ if (sub_8027748() == 0)
+ {
+ for (i = 0; i < count; i++)
+ {
+ gUnknown_02022C98->unk3308[i].unk0 = 4;
+ gUnknown_02022C98->unk3308[i].unk4 = 0;
+ }
+ }
+
+ for (i = 0; i < count; i++)
+ gUnknown_02022C98->unk3308[i].unk4 = Min(sub_80276C0(i), 999990);
+
+ do
+ {
+ u32 r6 = sub_80277D0(r10);
+ u8 r3 = r8;
+ for (i = 0; i < count; i++)
+ {
+ if (r6 == gUnknown_02022C98->unk3308[i].unk4)
+ {
+ gUnknown_02022C98->unk3308[i].unk0 = r3;
+ r8++;
+ r9++;
+ }
+ }
+ r10 = r8;
+ } while (r9 < count);
+
+ return 0;
+}
+
+static void sub_802793C(struct DodrioSubstruct_3308 *dst, u8 id)
+{
+ *dst = gUnknown_02022C98->unk3308[id];
+}
+
+// Unused function
+static u8 sub_802795C(u8 arg0)
+{
+ u8 i, ret = 0, count = gUnknown_02022C98->unk24;
+ u32 var, vars[5] = {0};
+
+ for (i = 0; i < count; i++)
+ vars[i] = sub_80276C0(i);
+
+ var = vars[arg0];
+ for (i = 0; i < 5; i++)
+ {
+ if (i != arg0 && var < vars[i])
+ ret++;
+ }
+
+ return ret;
+}
+
+static u8 sub_80279C8(void)
+{
+ u8 multiplayerId = gUnknown_02022C98->multiplayerId;
+ u16 itemId = sub_802762C();
+
+ if (sub_80276C0(multiplayerId) != sub_8027748())
+ return 3;
+ if (!CheckBagHasSpace(itemId, 1))
+ return 2;
+
+ AddBagItem(itemId, 1);
+ if (!CheckBagHasSpace(itemId, 1))
+ return 1;
+ return 0;
+}
+
+// Really? What next, u32 Add(u32 a)return a+1;?
+static u32 IncrementWithLimit(u32 a, u32 max)
+{
+ if (a < max)
+ return a + 1;
+ else
+ return max;
+}
+
+// Gamefreak pls, min(a, b) ((a) < (b) ? (a) : (b)) is a well-known macro
+static u32 Min(u32 a, u32 b)
+{
+ if (a < b)
+ return a;
+ else
+ return b;
+}
+
+static u8 sub_8027A48(u8 id)
+{
+ return gUnknown_02022C98->unk34[id];
+}
+
+void sub_8027A5C(void)
+{
+ int i;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES)
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_DODRIO)
+ {
+ gSpecialVar_Result = 1;
+ return;
+ }
+ }
+
+ gSpecialVar_Result = 0;
+}
+
+void sub_8027AAC(void)
+{
+ u8 taskId = CreateTask(sub_8027ACC, 0);
+ sub_8027ACC(taskId);
+}
+
+// Data related to printing saved results.
+static const struct WindowTemplate gUnknown_082F7B2C =
+{
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 1,
+ .width = 20,
+ .height = 11,
+ .paletteNum = 15,
+ .baseBlock = 0x1,
+};
+
+static const u8 *const gUnknown_082F7B34[3] = {gText_BerriesPicked, gText_BestScore, gText_BerriesInRowFivePlayers};
+static const u8 gUnknown_082F7B40[] = {4, 7, 4};
+
+ALIGNED(4)
+static const u8 gUnknown_082F7B44[][2] = {{25}, {41}, {57}};
+static const u8 gUnknown_082F7B4A[][2] = {{25}, {41}, {73}};
+
+static void sub_8027ACC(u8 taskId)
+{
+ struct WindowTemplate window;
+ s32 i, width, widthCurr;
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ window = gUnknown_082F7B2C;
+ width = GetStringWidth(1, gText_BerryPickingRecords, 0);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082F7B34); i++)
+ {
+ widthCurr = GetStringWidth(1, gUnknown_082F7B34[i], 0) + 50;
+ if (widthCurr > width)
+ width = widthCurr;
+ }
+ width = (width + 7) / 8;
+ if (width & 1)
+ width++;
+ window.tilemapLeft = (30 - width) / 2;
+ window.width = width;
+ data[1] = AddWindow(&window);
+ sub_8027BEC(data[1], width);
+ CopyWindowToVram(data[1], 3);
+ data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ data[0]++;
+ break;
+ case 2:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ rbox_fill_rectangle(data[1]);
+ CopyWindowToVram(data[1], 1);
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(data[1]);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ break;
+ }
+}
+
+static void sub_8027BEC(u8 windowId, s32 width)
+{
+ s32 i, x, numWidth;
+ s32 results[3];
+ results[0] = gSaveBlock2Ptr->berryPick.berriesPicked;
+ results[1] = gSaveBlock2Ptr->berryPick.bestScore;
+ results[2] = gSaveBlock2Ptr->berryPick.berriesPickedInRow;
+
+ LoadUserWindowBorderGfx_(windowId, 0x21D, 0xD0);
+ DrawTextBorderOuter(windowId, 0x21D, 0xD);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized(windowId, 1, gText_BerryPickingRecords, GetStringCenterAlignXOffset(1, gText_BerryPickingRecords, width * 8), 1, TEXT_SPEED_FF, NULL);
+ for (i = 0; i < 3; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, results[i], STR_CONV_MODE_LEFT_ALIGN, gUnknown_082F7B40[i]);
+ numWidth = GetStringWidth(1, gStringVar1, -1);
+ AddTextPrinterParameterized(windowId, 1, gUnknown_082F7B34[i], 0, gUnknown_082F7B44[i][0], TEXT_SPEED_FF, NULL);
+ x = (width * 8) - numWidth;
+ AddTextPrinterParameterized(windowId, 1, gStringVar1, x, gUnknown_082F7B4A[i][0], TEXT_SPEED_FF, NULL);
+ }
+ PutWindowTilemap(windowId);
+}
+
+// Debug functions?
+static const u16 gUnknown_082F7B50[][4] =
+{
+ {9999, 0, 90, 9999},
+ {9999, 9999, 70, 9999},
+ {9999, 0, 9999, 0},
+ {9999, 9999, 60, 0},
+ {9999, 9999, 9999, 0},
+};
+
+static const u8 gUnknown_082F7B78[] = _("あいうえおかき");
+static const u8 gUnknown_082F7B80[] = _("ABCDEFG");
+static const u8 gUnknown_082F7B88[] = _("0123456");
+
+static const u8 *const gUnknown_082F7B90[] =
+{
+ gUnknown_082F7B78,
+ gUnknown_082F7B78,
+ gUnknown_082F7B78,
+ gUnknown_082F7B80,
+ gUnknown_082F7B88
+};
+
+static void sub_8027D20(void)
+{
+ gUnknown_02022C98->unk24 = GetLinkPlayerCount();
+}
+
+static void sub_8027D38(void)
+{
+ u8 i, playerId;
+
+ for (playerId = gUnknown_02022C98->unk24; playerId < 5; playerId++)
+ StringCopy(gLinkPlayers[playerId].name, gUnknown_082F7B90[playerId]);
+
+ gUnknown_02022C98->unk24 = 5;
+ for (i = 0; i < 4; i++)
+ {
+ for (playerId = 0; playerId < gUnknown_02022C98->unk24; playerId++)
+ gUnknown_02022C98->unk4A[playerId][i] = gUnknown_082F7B50[playerId][i];
+ }
+}
+
+struct UnkPacket1
+{
+ u8 id;
+ u8 ALIGNED(4) unk4;
+};
+
+static void sub_8027DD0(u32 arg0)
+{
+ struct UnkPacket1 packet;
+ packet.id = 1;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8027DFC(u32 arg0)
+{
+ struct UnkPacket1 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 1)
+ return packet->unk4;
+
+ return 0;
+}
+
+struct UnkPacket2
+{
+ u8 id;
+ u8 unk1_0:4;
+ u8 unk1_1:4;
+ u8 unk2_0:4;
+ u8 unk2_1:4;
+ u8 unk3_0:4;
+ u8 unk3_1:4;
+ u8 unk4_0:4;
+ u8 unk4_1:4;
+ u8 unk5_0:4;
+ u8 unk5_1:4;
+ u8 unk6_0:2;
+ u8 unk6_1:2;
+ u8 unk6_2:2;
+ u8 unk6_3:2;
+ u8 unk7_0:2;
+ u8 unk7_1:2;
+ u8 unk7_2:2;
+ u8 unk7_3:2;
+ u8 unk8_0:2;
+ u8 unk8_1:2;
+ u8 unk8_2:2;
+ u8 unk8_3:2;
+ u8 unk9_0:2;
+ u8 unk9_1:2;
+ u8 unk9_2:2;
+ u8 unk9_3:1;
+ u8 unk9_4:1;
+ u8 unkA_0:1;
+ u8 unkA_1:1;
+ u8 unkA_2:1;
+ u8 unkA_3:5;
+ u8 unkB_0:1;
+ u8 unkB_1:1;
+ u8 unkB_2:1;
+ u8 unkB_3:1;
+ u8 unkB_4:1;
+ u8 unkB_5:1;
+ u8 unkB_6:1;
+};
+
+#ifdef NONMATCHING
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8)
+{
+ struct UnkPacket2 packet;
+ struct DodrioSubstruct_31A0_14 *ptr = &arg0->unk14;
+
+ packet.id = 2;
+ packet.unk1_0 = ptr->unkB[0];
+ packet.unk1_1 = ptr->unkB[1];
+ packet.unk2_0 = ptr->unkB[2];
+ packet.unk2_1 = ptr->unkB[3];
+ packet.unk3_0 = ptr->unkB[4];
+ packet.unk3_1 = ptr->unkB[5];
+ packet.unk4_0 = ptr->unkB[6];
+ packet.unk4_1 = ptr->unkB[7];
+ packet.unk5_0 = ptr->unkB[8];
+ packet.unk5_1 = ptr->unkB[9];
+
+ packet.unk6_0 = ptr->unk0[0];
+ packet.unk6_1 = ptr->unk0[1];
+ packet.unk6_2 = ptr->unk0[2];
+ packet.unk6_3 = ptr->unk0[3];
+ packet.unk7_0 = ptr->unk0[4];
+ packet.unk7_1 = ptr->unk0[5];
+ packet.unk7_2 = ptr->unk0[6];
+ packet.unk7_3 = ptr->unk0[7];
+ packet.unk8_0 = ptr->unk0[8];
+ packet.unk8_1 = ptr->unk0[9];
+
+ packet.unk8_2 = arg1->unk0;
+ packet.unk8_3 = arg2->unk0;
+ packet.unk9_0 = arg3->unk0;
+ packet.unk9_1 = arg4->unk0;
+ packet.unk9_2 = arg5->unk0;
+
+ packet.unk9_3 = arg1->unk4;
+ packet.unk9_4 = arg2->unk4;
+ packet.unkA_0 = arg3->unk4;
+ packet.unkA_1 = arg4->unk4;
+ packet.unkA_2 = arg5->unk4;
+
+ packet.unkB_2 = arg1->unk8;
+ packet.unkB_3 = arg2->unk8;
+ packet.unkB_4 = arg3->unk8;
+ packet.unkB_5 = arg4->unk8;
+ packet.unkB_6 = arg5->unk8;
+
+ packet.unkA_3 = arg6;
+ packet.unkB_1 = arg7;
+ packet.unkB_0 = arg8;
+ sub_800FE50(&packet);
+}
+#else
+NAKED
+static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 arg6, u32 arg7, u32 arg8)
+{
+ asm_unified(" push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ ldr r4, [sp, 0x48]\n\
+ lsls r4, 24\n\
+ str r4, [sp, 0x1C]\n\
+ movs r4, 0x14\n\
+ adds r4, r0\n\
+ mov r9, r4\n\
+ mov r5, sp\n\
+ movs r4, 0x2\n\
+ strb r4, [r5]\n\
+ mov r10, sp\n\
+ mov r5, r9\n\
+ ldrb r4, [r5, 0xB]\n\
+ movs r7, 0xF\n\
+ adds r5, r7, 0\n\
+ ands r5, r4\n\
+ mov r6, r10\n\
+ ldrb r6, [r6, 0x1]\n\
+ mov r8, r6\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x1]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0xC]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x1]\n\
+ ldrb r5, [r6, 0xD]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x2]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x2]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0xE]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x2]\n\
+ ldrb r5, [r6, 0xF]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x3]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x3]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x10]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x3]\n\
+ ldrb r5, [r6, 0x11]\n\
+ movs r6, 0xF\n\
+ ands r5, r6\n\
+ mov r4, r10\n\
+ ldrb r4, [r4, 0x4]\n\
+ mov r8, r4\n\
+ movs r4, 0x10\n\
+ negs r4, r4\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ orrs r4, r5\n\
+ mov r5, r10\n\
+ strb r4, [r5, 0x4]\n\
+ mov r8, sp\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x12]\n\
+ lsls r5, 4\n\
+ ands r4, r7\n\
+ orrs r4, r5\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x4]\n\
+ ldrb r4, [r6, 0x13]\n\
+ movs r6, 0xF\n\
+ ands r4, r6\n\
+ mov r6, r8\n\
+ ldrb r5, [r6, 0x5]\n\
+ movs r6, 0x10\n\
+ negs r6, r6\n\
+ ands r6, r5\n\
+ orrs r6, r4\n\
+ str r6, [sp, 0xC]\n\
+ mov r4, r8\n\
+ strb r6, [r4, 0x5]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x14]\n\
+ lsls r4, 4\n\
+ ldr r6, [sp, 0xC]\n\
+ ands r6, r7\n\
+ orrs r6, r4\n\
+ strb r6, [r5, 0x5]\n\
+ mov r7, sp\n\
+ movs r4, 0x3\n\
+ mov r8, r4\n\
+ ldrb r0, [r0, 0x14]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ ldrb r5, [r7, 0x6]\n\
+ movs r6, 0x4\n\
+ negs r6, r6\n\
+ mov r10, r6\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ strb r4, [r7, 0x6]\n\
+ mov r5, r9\n\
+ ldrb r0, [r5, 0x1]\n\
+ mov r6, r8\n\
+ ands r0, r6\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ strb r5, [r7, 0x6]\n\
+ mov r0, r9\n\
+ ldrb r4, [r0, 0x2]\n\
+ ands r4, r6\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ strb r0, [r7, 0x6]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x3]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x6]\n\
+ mov r4, r9\n\
+ ldrb r0, [r4, 0x4]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ ldrb r5, [r7, 0x7]\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ strb r4, [r7, 0x7]\n\
+ mov r6, r9\n\
+ ldrb r0, [r6, 0x5]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ strb r5, [r7, 0x7]\n\
+ ldrb r4, [r6, 0x6]\n\
+ mov r6, r8\n\
+ ands r4, r6\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ strb r0, [r7, 0x7]\n\
+ mov r5, sp\n\
+ mov r6, r9\n\
+ ldrb r4, [r6, 0x7]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x7]\n\
+ mov r8, sp\n\
+ mov r0, r9\n\
+ ldrb r4, [r0, 0x8]\n\
+ movs r7, 0x3\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ mov r4, r8\n\
+ ldrb r5, [r4, 0x8]\n\
+ mov r4, r10\n\
+ ands r4, r5\n\
+ orrs r4, r0\n\
+ mov r5, r8\n\
+ strb r4, [r5, 0x8]\n\
+ mov r6, r9\n\
+ ldrb r5, [r6, 0x9]\n\
+ adds r0, r7, 0\n\
+ ands r0, r5\n\
+ lsls r0, 2\n\
+ movs r5, 0xD\n\
+ negs r5, r5\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ mov r0, r8\n\
+ strb r5, [r0, 0x8]\n\
+ ldrb r0, [r1]\n\
+ adds r4, r7, 0\n\
+ ands r4, r0\n\
+ lsls r4, 4\n\
+ movs r0, 0x31\n\
+ negs r0, r0\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x8]\n\
+ mov r5, sp\n\
+ ldrb r4, [r2]\n\
+ lsls r4, 6\n\
+ movs r6, 0x3F\n\
+ ands r0, r6\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x8]\n\
+ ldrb r4, [r3]\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ ldrb r4, [r5, 0x9]\n\
+ mov r6, r10\n\
+ ands r6, r4\n\
+ orrs r6, r0\n\
+ mov r10, r6\n\
+ strb r6, [r5, 0x9]\n\
+ ldr r0, [sp, 0x40]\n\
+ ldrb r4, [r0]\n\
+ adds r0, r7, 0\n\
+ ands r0, r4\n\
+ lsls r0, 2\n\
+ movs r4, 0xD\n\
+ negs r4, r4\n\
+ ands r6, r4\n\
+ orrs r6, r0\n\
+ str r6, [sp, 0x10]\n\
+ strb r6, [r5, 0x9]\n\
+ mov r4, sp\n\
+ ldr r5, [sp, 0x44]\n\
+ ldrb r0, [r5]\n\
+ adds r6, r7, 0\n\
+ ands r6, r0\n\
+ lsls r0, r6, 4\n\
+ subs r7, 0x34\n\
+ ldr r5, [sp, 0x10]\n\
+ ands r7, r5\n\
+ orrs r7, r0\n\
+ strb r7, [r4, 0x9]\n\
+ mov r5, sp\n\
+ ldrb r0, [r1, 0x4]\n\
+ movs r6, 0x1\n\
+ mov r12, r6\n\
+ mov r4, r12\n\
+ ands r4, r0\n\
+ lsls r4, 6\n\
+ movs r0, 0x41\n\
+ negs r0, r0\n\
+ mov r10, r0\n\
+ ands r0, r7\n\
+ orrs r0, r4\n\
+ strb r0, [r5, 0x9]\n\
+ ldrb r4, [r2, 0x4]\n\
+ lsls r4, 7\n\
+ movs r5, 0x7F\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x9]\n\
+ ldrb r4, [r3, 0x4]\n\
+ mov r0, r12\n\
+ ands r0, r4\n\
+ mov r5, r8\n\
+ ldrb r4, [r5, 0xA]\n\
+ movs r7, 0x2\n\
+ negs r7, r7\n\
+ adds r5, r7, 0\n\
+ ands r5, r4\n\
+ orrs r5, r0\n\
+ mov r6, r8\n\
+ strb r5, [r6, 0xA]\n\
+ mov r9, sp\n\
+ ldr r4, [sp, 0x40]\n\
+ ldrb r0, [r4, 0x4]\n\
+ mov r4, r12\n\
+ ands r4, r0\n\
+ lsls r4, 1\n\
+ movs r6, 0x3\n\
+ negs r6, r6\n\
+ mov r8, r6\n\
+ mov r0, r8\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r9\n\
+ strb r0, [r4, 0xA]\n\
+ ldr r6, [sp, 0x44]\n\
+ ldrb r5, [r6, 0x4]\n\
+ mov r4, r12\n\
+ ands r4, r5\n\
+ lsls r4, 2\n\
+ movs r5, 0x5\n\
+ negs r5, r5\n\
+ ands r0, r5\n\
+ orrs r0, r4\n\
+ mov r4, r9\n\
+ strb r0, [r4, 0xA]\n\
+ mov r4, sp\n\
+ ldrb r1, [r1, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r1\n\
+ lsls r0, 2\n\
+ ldrb r1, [r4, 0xB]\n\
+ ands r5, r1\n\
+ orrs r5, r0\n\
+ strb r5, [r4, 0xB]\n\
+ ldrb r1, [r2, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r1\n\
+ lsls r0, 3\n\
+ movs r1, 0x9\n\
+ negs r1, r1\n\
+ ands r1, r5\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xB]\n\
+ ldrb r2, [r3, 0x8]\n\
+ mov r0, r12\n\
+ ands r0, r2\n\
+ lsls r0, 4\n\
+ movs r2, 0x11\n\
+ negs r2, r2\n\
+ ands r2, r1\n\
+ orrs r2, r0\n\
+ strb r2, [r4, 0xB]\n\
+ mov r3, sp\n\
+ ldr r5, [sp, 0x40]\n\
+ ldrb r0, [r5, 0x8]\n\
+ mov r1, r12\n\
+ ands r1, r0\n\
+ lsls r1, 5\n\
+ movs r0, 0x21\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0xB]\n\
+ mov r2, sp\n\
+ ldrb r1, [r6, 0x8]\n\
+ mov r6, r12\n\
+ ands r6, r1\n\
+ lsls r1, r6, 6\n\
+ mov r3, r10\n\
+ ands r0, r3\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0xB]\n\
+ ldr r4, [sp, 0x1C]\n\
+ lsrs r3, r4, 21\n\
+ ldrb r1, [r2, 0xA]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ orrs r0, r3\n\
+ strb r0, [r2, 0xA]\n\
+ mov r1, sp\n\
+ ldr r5, [sp, 0x4C]\n\
+ movs r6, 0x1\n\
+ ands r5, r6\n\
+ lsls r2, r5, 1\n\
+ ldrb r0, [r1, 0xB]\n\
+ mov r3, r8\n\
+ ands r3, r0\n\
+ orrs r3, r2\n\
+ mov r8, r3\n\
+ strb r3, [r1, 0xB]\n\
+ mov r0, sp\n\
+ ldr r4, [sp, 0x50]\n\
+ ands r4, r6\n\
+ mov r5, r8\n\
+ ands r5, r7\n\
+ orrs r5, r4\n\
+ strb r5, [r0, 0xB]\n\
+ bl sub_800FE50\n\
+ add sp, 0x20\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+");
+}
+#endif
+
+static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8)
+{
+ struct UnkPacket2 *packet;
+ struct DodrioSubstruct_31A0_14 *ptr = &arg0->unk14;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[0][1];
+ if (packet->id == 2)
+ {
+ ptr->unkB[0] = packet->unk1_0;
+ ptr->unkB[1] = packet->unk1_1;
+ ptr->unkB[2] = packet->unk2_0;
+ ptr->unkB[3] = packet->unk2_1;
+ ptr->unkB[4] = packet->unk3_0;
+ ptr->unkB[5] = packet->unk3_1;
+ ptr->unkB[6] = packet->unk4_0;
+ ptr->unkB[7] = packet->unk4_1;
+ ptr->unkB[8] = packet->unk5_0;
+ ptr->unkB[9] = packet->unk5_1;
+ ptr->unkB[10] = packet->unk1_0;
+
+ ptr->unk0[0] = packet->unk6_0;
+ ptr->unk0[1] = packet->unk6_1;
+ ptr->unk0[2] = packet->unk6_2;
+ ptr->unk0[3] = packet->unk6_3;
+ ptr->unk0[4] = packet->unk7_0;
+ ptr->unk0[5] = packet->unk7_1;
+ ptr->unk0[6] = packet->unk7_2;
+ ptr->unk0[7] = packet->unk7_3;
+ ptr->unk0[8] = packet->unk8_0;
+ ptr->unk0[9] = packet->unk8_1;
+ ptr->unk0[10] = packet->unk6_0;
+
+ arg1->unk0 = packet->unk8_2;
+ arg1->unk4 = packet->unk9_3;
+ arg1->unk8 = packet->unkB_2;
+
+ arg2->unk0 = packet->unk8_3;
+ arg2->unk4 = packet->unk9_4;
+ arg2->unk8 = packet->unkB_3;
+
+ arg3->unk0 = packet->unk9_0;
+ arg3->unk4 = packet->unkA_0;
+ arg3->unk8 = packet->unkB_4;
+
+ arg4->unk0 = packet->unk9_1;
+ arg4->unk4 = packet->unkA_1;
+ arg4->unk8 = packet->unkB_5;
+
+ arg5->unk0 = packet->unk9_2;
+ arg5->unk4 = packet->unkA_2;
+ arg5->unk8 = packet->unkB_6;
+
+ *arg6 = packet->unkA_3;
+ *arg7 = packet->unkB_1;
+ *arg8 = packet->unkB_0;
+ return 1;
+ }
+
+ return 0;
+}
+
+struct UnkPacket3
+{
+ u8 id;
+ u8 ALIGNED(4) unk4;
+};
+
+static void sub_80282EC(u8 arg0)
+{
+ struct UnkPacket3 packet;
+ packet.id = 3;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8028318(u32 arg0, u8 *arg1)
+{
+ struct UnkPacket3 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 3)
+ {
+ *arg1 = packet->unk4;
+ return 1;
+ }
+
+ return 0;
+}
+
+struct UnkPacket4
+{
+ u8 id;
+ u32 unk4;
+};
+
+static void sub_8028350(u32 arg0)
+{
+ struct UnkPacket4 packet;
+ packet.id = 4;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+static u32 sub_8028374(u32 arg0)
+{
+ struct UnkPacket4 *packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return 0;
+
+ packet = (void *)&gRecvCmds[arg0][1];
+ if (packet->id == 4)
+ return packet->unk4;
+
+ return 0;
+}
+
+// Large chunk of data
+static const struct BgTemplate gUnknown_082F7BA4[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+// Unknown unreferenced data, feel free to remove.
+static const u32 sUnused[] = {255, 0};
+
+static const struct WindowTemplate gUnknown_082F7BBC[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 14,
+ .paletteNum = 13,
+ .baseBlock = 0x4B,
+ }
+};
+static const struct WindowTemplate gUnknown_082F7BCC =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 7,
+ .paletteNum = 13,
+ .baseBlock = 0x4B,
+};
+static const struct WindowTemplate gUnknown_082F7BD4[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 8,
+ .width = 19,
+ .height = 3,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 7,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 13,
+ .baseBlock = 0x4C,
+ }
+};
+static const struct WindowTemplate gUnknown_082F7BE4 =
+{
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 6,
+ .width = 22,
+ .height = 5,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+};
+static const struct WindowTemplate gUnknown_082F7BEC =
+{
+ .bg = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 8,
+ .width = 19,
+ .height = 3,
+ .paletteNum = 13,
+ .baseBlock = 0x13,
+};
+
+// This is an unused copy of the tables from the top of the file. Feel free to remove.
+static const u8 sDuplicateArray[] =
+{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0, 0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 2, 9,
+ 0, 0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0, 0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0, 0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0, 0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0, 0, 7,
+ 8, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 3, 4, 5, 6, 7, 8, 9, 0,
+ 1, 2, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 5, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6, 7, 2, 2, 3, 4, 0, 0, 0, 0, 0, 0,
+ 3, 4, 5, 5, 6, 7, 7, 8, 1, 1, 2, 3, 0, 0, 0, 4, 5, 6, 6, 7, 8, 8, 9, 0, 0, 1, 2, 2, 3, 4, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 1,
+ 2, 1, 2, 3, 2, 3, 0, 0, 0, 0, 4, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 0, 0, 0, 0, 9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9, 9,
+ 9, 9, 0, 0, 1, 1, 0, 9, 9, 9, 9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9, 9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9, 3, 3, 4, 4, 0, 0, 1, 1,
+ 2, 2, 3, 5, 0, 0, 0, 0, 4, 6, 0, 0, 0, 3, 5, 7, 0, 0, 2, 4, 6, 8, 0, 1, 3, 5, 6, 9
+};
+
+static const u16 gDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal",
+ "graphics/link_games/dodrioberry_bg2.gbapal");
+static const u16 gDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal");
+static const u16 gDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal");
+static const u16 gDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal");
+static const u16 gDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal");
+static const u32 gDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz");
+static const u16 gDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal");
+static const u32 gDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz");
+static const u32 gDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz");
+static const u32 gDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz");
+static const u32 gDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz");
+static const u32 gDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz");
+static const u32 gDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz");
+static const u32 gDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz");
+static const u32 gDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz");
+
+static const struct OamData sOamData_82FB1E0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1E8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1F0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FB1F8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FB200[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB208[] =
+{
+ ANIMCMD_FRAME(64, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB210[] =
+{
+ ANIMCMD_FRAME(128, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB218[] =
+{
+ ANIMCMD_FRAME(192, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB220[] =
+{
+ ANIMCMD_FRAME(256, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB228[] =
+{
+ sSpriteAnim_82FB200,
+ sSpriteAnim_82FB208,
+ sSpriteAnim_82FB210,
+ sSpriteAnim_82FB218,
+ sSpriteAnim_82FB220
+};
+
+static const union AnimCmd sSpriteAnim_82FB23C[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB244[] =
+{
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB24C[] =
+{
+ ANIMCMD_FRAME(8, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB254[] =
+{
+ sSpriteAnim_82FB23C,
+ sSpriteAnim_82FB244,
+ sSpriteAnim_82FB24C
+};
+
+static const union AnimCmd sSpriteAnim_82FB260[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB268[] =
+{
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB270[] =
+{
+ ANIMCMD_FRAME(8, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB278[] =
+{
+ ANIMCMD_FRAME(12, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB280[] =
+{
+ ANIMCMD_FRAME(16, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB288[] =
+{
+ ANIMCMD_FRAME(20, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB290[] =
+{
+ ANIMCMD_FRAME(24, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB298[] =
+{
+ ANIMCMD_FRAME(28, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_82FB2A0[] =
+{
+ ANIMCMD_FRAME(32, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB2A8[] =
+{
+ sSpriteAnim_82FB260,
+ sSpriteAnim_82FB268,
+ sSpriteAnim_82FB270,
+ sSpriteAnim_82FB278,
+ sSpriteAnim_82FB280,
+ sSpriteAnim_82FB288,
+ sSpriteAnim_82FB290,
+ sSpriteAnim_82FB298,
+ sSpriteAnim_82FB2A0
+};
+
+static const union AnimCmd sSpriteAnim_82FB2CC[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FB2D4[] =
+{
+ sSpriteAnim_82FB2CC
+};
+
+static void sub_80283A8(void)
+{
+ void *ptr = AllocZeroed(0x3000);
+ struct SpritePalette pal1 = {gDodrioBerryPkmnPal, 0};
+ struct SpritePalette pal2 = {gDodrioBerryShinyPal, 1};
+
+ LZ77UnCompWram(gDodrioBerryPkmnGfx, ptr);
+ // This check should be one line up.
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sheet = {ptr, 0x3000, 0};
+ LoadSpriteSheet(&sheet);
+ Free(ptr);
+ }
+ LoadSpritePalette(&pal1);
+ LoadSpritePalette(&pal2);
+}
+
+static void sub_8028408(struct DodrioSubstruct_318C *arg0, u8 arg1, u8 id, u8 arg3)
+{
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 0,
+ .paletteTag = arg0->isShiny,
+ .oam = &sOamData_82FB1E0,
+ .anims = sSpriteAnimTable_82FB228,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80284A8,
+ };
+
+ gUnknown_02022C9C[id] = AllocZeroed(4);
+ *gUnknown_02022C9C[id] = CreateSprite(&sprTemplate, sub_8028F14(arg1, arg3), 136, 3);
+ sub_8028654(TRUE, id);
+}
+
+static void sub_80284A8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ break;
+ case 1:
+ sub_802853C(sprite);
+ break;
+ case 2:
+ sub_80285AC(sprite);
+ break;
+ }
+}
+
+static void sub_80284CC(u8 unused)
+{
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[GetMultiplayerId()]];
+ sprite->data[0] = 1;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+}
+
+static void sub_8028504(u8 unused)
+{
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[GetMultiplayerId()]];
+ sprite->data[0] = 2;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+}
+
+static u32 sub_802853C(struct Sprite *sprite)
+{
+ s8 var;
+ u8 mod = (++sprite->data[1] / 2) % 4;
+
+ if (sprite->data[1] >= 3)
+ {
+ switch (mod)
+ {
+ default:
+ var = 1;
+ break;
+ case 1:
+ case 2:
+ var = -1;
+ break;
+ }
+
+ sprite->pos1.x += var;
+ if (++sprite->data[1] >= 40)
+ {
+ sprite->data[0] = 0;
+ sprite->pos1.x = sub_8028F14(0, sub_8027650());
+ }
+ }
+
+ return 0;
+}
+
+static u32 sub_80285AC(struct Sprite *sprite)
+{
+ u8 mod = (++sprite->data[1] / 13) % 4;
+
+ if (sprite->data[1] % 13 == 0 && mod != 0)
+ PlaySE(SE_W204);
+ if (sprite->data[1] >= 104)
+ {
+ sprite->data[0] = 0;
+ mod = 0;
+ }
+ sub_80286B4(GetMultiplayerId(), mod);
+ return 0;
+}
+
+static void sub_8028614(u8 count)
+{
+ u8 i;
+ for (i = 0; i < count; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022C9C[i]];
+ if (sprite != NULL)
+ DestroySpriteAndFreeResources(sprite);
+ // Memory should be freed here but is not.
+ }
+}
+
+static void sub_8028654(bool8 invisible, u8 id)
+{
+ gSprites[*gUnknown_02022C9C[id]].invisible = invisible;
+}
+
+static void sub_802868C(bool8 invisible, u8 count)
+{
+ u8 i;
+ for (i = 0; i < count; i++)
+ sub_8028654(invisible, i);
+}
+
+static void sub_80286B4(u8 id, u8 frameNum)
+{
+ StartSpriteAnim(&gSprites[*gUnknown_02022C9C[id]], frameNum);
+}
+
+static void nullsub_15(struct Sprite *sprite)
+{
+
+}
+
+static void sub_80286E4(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ sprite->pos1.x = (i * 16) + 48;
+ sprite->pos1.y = -8 - (i * 8);
+ gUnknown_02022CF4->unkC[i] = 0;
+ }
+}
+
+static void sub_8028734(void)
+{
+ u8 i;
+ void *ptr = AllocZeroed(0x180);
+ struct SpritePalette spPal = {gDodrioBerryStatusPal, 2};
+
+ LZ77UnCompWram(gDodrioBerryStatusGfx, ptr);
+ // This check should be one line up.
+ if (ptr != NULL)
+ {
+ struct SpriteSheet spSheet = {ptr, 0x180, 1};
+ struct SpriteTemplate spTemplate =
+ {
+ .tileTag = 1,
+ .paletteTag = 2,
+ .oam = &sOamData_82FB1E8,
+ .anims = sSpriteAnimTable_82FB254,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_15,
+ };
+
+ gUnknown_02022CF4 = AllocZeroed(sizeof(*gUnknown_02022CF4));
+ LoadSpriteSheet(&spSheet);
+ LoadSpritePalette(&spPal);
+ for (i = 0; i < 10; i++)
+ gUnknown_02022CF4->unk2A[i] = CreateSprite(&spTemplate, (i * 16) + 48, -8 - (i * 8), 0);
+ }
+
+ Free(ptr);
+}
+
+static void sub_80287E4(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ if (sprite != NULL)
+ DestroySpriteAndFreeResources(sprite);
+ }
+ FREE_AND_SET_NULL(gUnknown_02022CF4);
+}
+
+static bool32 sub_8028828(void)
+{
+ u8 i;
+ bool32 r3 = FALSE;
+ for (i = 0; i < 10; i++)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_02022CF4->unk2A[i]];
+ gUnknown_02022CF4->unk16[i] = 2;
+ if (gUnknown_02022CF4->unkC[i] != 0 && sprite->pos1.y == 8)
+ continue;
+ r3 = TRUE;
+ if (sprite->pos1.y == 8)
+ {
+ if (gUnknown_02022CF4->unkC[i] != 0)
+ continue;
+ gUnknown_02022CF4->unkC[i] = 1;
+ gUnknown_02022CF4->unk16[i] = -16;
+ PlaySE(SE_TK_KASYA);
+ }
+ sprite->pos1.y += gUnknown_02022CF4->unk16[i];
+ }
+
+ if (r3)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void sub_80288D4(u8 arg0)
+{
+ u8 i;
+
+ if (arg0 > 10)
+ {
+ for (i = 0; i < 10; i++)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 1);
+ }
+ else
+ {
+ for (i = 0; i < 10 - arg0; i++)
+ {
+ if (arg0 > 6)
+ {
+ gUnknown_02022CF4->unk3E += arg0 - 6;
+ if (gUnknown_02022CF4->unk3E > 30)
+ gUnknown_02022CF4->unk3E = 0;
+ else if (gUnknown_02022CF4->unk3E > 10)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 2);
+ else
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 0);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 0);
+ }
+ }
+ for (; i < 10; i++)
+ StartSpriteAnim(&gSprites[gUnknown_02022CF4->unk2A[i]], 1);
+ }
+}
+
+static void sub_80289E8(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ gSprites[gUnknown_02022CF4->unk2A[i]].invisible = invisible;
+}
+
+// Unknown unused data, feel free to remove.
+static const u8 sUnused2[] = {0xD4, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0xFB, 0x0, 0x0};
+
+static void sub_8028A34(void)
+{
+ void *ptr = AllocZeroed(0x480);
+ struct SpritePalette sprPal = {gDodrioBerrySpritesPal, 3};
+
+ LZ77UnCompWram(gDodrioBerrySpritesGfx, ptr);
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sprSheet = {ptr, 0x480, 2};
+ LoadSpriteSheet(&sprSheet);
+ }
+
+ LoadSpritePalette(&sprPal);
+ Free(ptr);
+}
+
+static const s16 gUnknown_082FB31C[] = {88, 128, 168, 208};
+
+static void sub_8028A88(void)
+{
+ u8 i;
+ s16 x;
+
+ struct SpriteTemplate sprTemplate1 =
+ {
+ .tileTag = 2,
+ .paletteTag = 3,
+ .oam = &sOamData_82FB1F0,
+ .anims = sSpriteAnimTable_82FB2A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+ struct SpriteTemplate sprTemplate2 =
+ {
+ .tileTag = 2,
+ .paletteTag = 3,
+ .oam = &sOamData_82FB1E8,
+ .anims = sSpriteAnimTable_82FB2A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ for (i = 0; i < 11; i++)
+ {
+ gUnknown_02022CB8[i] = AllocZeroed(4);
+ x = i * 16;
+ *gUnknown_02022CB8[i] = CreateSprite(&sprTemplate1, x + (i * 8), 8, 1);
+ sub_8028BF8(i, TRUE);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_02022CE4[i] = AllocZeroed(4);
+ if (i == 3)
+ *gUnknown_02022CE4[i] = CreateSprite(&sprTemplate2, gUnknown_082FB31C[i], 49, 0);
+ else
+ *gUnknown_02022CE4[i] = CreateSprite(&sprTemplate2, gUnknown_082FB31C[i], 52, 0);
+ StartSpriteAnim(&gSprites[*gUnknown_02022CE4[i]], i);
+ }
+
+ sub_8028C30(TRUE);
+}
+
+static void sub_8028B80(void)
+{
+ struct Sprite *sprite;
+ u8 i;
+
+ for (i = 0; i < 11; i++)
+ {
+ sprite = &gSprites[*gUnknown_02022CB8[i]];
+ if (sprite != NULL)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CB8[i]);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ sprite = &gSprites[*gUnknown_02022CE4[i]];
+ if (sprite != NULL)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CE4[i]);
+ }
+}
+
+static void sub_8028BF8(u8 id, bool8 invisible)
+{
+ gSprites[*gUnknown_02022CB8[id]].invisible = invisible;
+}
+
+static void sub_8028C30(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ gSprites[*gUnknown_02022CE4[i]].invisible = invisible;
+}
+
+static void sub_8028C7C(u8 id, u8 y)
+{
+ gSprites[*gUnknown_02022CB8[id]].pos1.y = y * 8;
+}
+
+static void sub_8028CA4(u16 id, u8 frameNum)
+{
+ StartSpriteAnim(&gSprites[*gUnknown_02022CB8[id]], frameNum);
+}
+
+// Unused
+static void sub_8028CD0(u8 spriteId)
+{
+ gSprites[spriteId].pos1.x = 20 * spriteId + 50;
+ gSprites[spriteId].pos1.y = 50;
+}
+
+// Gamefreak made a mistake there and goes out of bounds for the data array as it holds 8 elements
+// in turn overwriting sprite's subpriority and subsprites fields.
+#if defined(NONMATCHING) || MODERN
+ #define sKeepPosX data[1]
+#else
+ #define sKeepPosX data[10]
+#endif // NONMATCHING
+
+static void sub_8028CF4(struct Sprite *sprite)
+{
+ u8 i;
+ static const u8 array[] = {30, 20};
+
+ if (sprite->sKeepPosX != TRUE)
+ {
+ for (i = 0; i < 2; i++)
+ {
+ if (++gUnknown_02022CB0[i][1] > array[i])
+ {
+ sprite->pos1.x--;
+ gUnknown_02022CB0[i][1] = 0;
+ }
+ }
+ }
+}
+
+static const s16 gUnknown_082FB356[][2] = {{230, 55}, {30, 74}};
+
+static void sub_8028D44(void)
+{
+ u8 i;
+ void *ptr = AllocZeroed(0x400);
+ struct SpritePalette sprPal = {gDodrioBerryPlatformPal, 6};
+
+ LZ77UnCompWram(gDodrioBerryPlatformGfx, ptr);
+ if (ptr != NULL)
+ {
+ struct SpriteSheet sprSheet = {ptr, 0x400, 5};
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 5,
+ .paletteTag = 6,
+ .oam = &sOamData_82FB1F8,
+ .anims = sSpriteAnimTable_82FB2D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8028CF4,
+ };
+
+ LoadSpriteSheet(&sprSheet);
+ LoadSpritePalette(&sprPal);
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02022CB0[i] = AllocZeroed(4);
+ *gUnknown_02022CB0[i] = CreateSprite(&sprTemplate, gUnknown_082FB356[i][0], gUnknown_082FB356[i][1], 4);
+ }
+ }
+
+ Free(ptr);
+}
+
+static void sub_8028DFC(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ sprite->sKeepPosX = TRUE;
+ sprite->pos1.x = gUnknown_082FB356[i][0];
+ sprite->pos1.y = gUnknown_082FB356[i][1];
+ }
+}
+
+static void sub_8028E4C(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ sprite->sKeepPosX = FALSE;
+ }
+}
+
+static void sub_8028E84(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ struct Sprite *sprite = &gSprites[*gUnknown_02022CB0[i]];
+ if (sprite)
+ DestroySprite(sprite);
+ FREE_AND_SET_NULL(gUnknown_02022CB0[i]);
+ }
+}
+
+static void sub_8028EC8(bool8 invisible)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ gSprites[*gUnknown_02022CB0[i]].invisible = invisible;
+}
+
+#undef sKeepPosX
+
+static s16 sub_8028F14(u8 arg0, u8 arg1)
+{
+ s16 x = 0;
+ switch (arg1)
+ {
+ case 1:
+ x = 15;
+ break;
+ case 2:
+ switch (arg0)
+ {
+ case 0: x = 12; break;
+ case 1: x = 18; break;
+ }
+ break;
+ case 3:
+ switch (arg0)
+ {
+ case 0: x = 15; break;
+ case 1: x = 21; break;
+ case 2: x = 9; break;
+ }
+ break;
+ case 4:
+ switch (arg0)
+ {
+ case 0: x = 12; break;
+ case 1: x = 18; break;
+ case 2: x = 24; break;
+ case 3: x = 6; break;
+ }
+ break;
+ case 5:
+ switch (arg0)
+ {
+ case 0: x = 15; break;
+ case 1: x = 21; break;
+ case 2: x = 27; break;
+ case 3: x = 3; break;
+ case 4: x = 9; break;
+ }
+ break;
+ }
+
+ return x * 8;
+}
+
+static void sub_8028FCC(void)
+{
+ u8 i;
+ for (i = 0; i < 11; i++)
+ {
+ sub_8028BF8(i, TRUE);
+ sub_8028C7C(i, 1);
+ }
+ sub_80289E8(FALSE);
+}
+
+static void sub_8028FF8(u8 frameId)
+{
+ LoadBgTiles(0, GetWindowFrameTilesPal(frameId)->tiles, 0x120, 1);
+ LoadPalette(GetWindowFrameTilesPal(frameId)->pal, 0xA0, 0x20);
+}
+
+static void sub_802902C(void)
+{
+ LoadUserWindowBorderGfx_(0, 0xA, 0xB0);
+}
+
+static void sub_802903C(void)
+{
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->unk3018 = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+}
+
+static void sub_8029074(const struct WindowTemplate *winTempl)
+{
+ u8 pal = 0xA;
+
+ FillBgTilemapBufferRect(0, 1, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 2, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 3, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 4, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 6, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 7, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 8, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 9, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+}
+
+static void sub_8029174(const struct WindowTemplate *winTempl)
+{
+ u8 pal = 0xB;
+
+ FillBgTilemapBufferRect(0, 10, winTempl->tilemapLeft - 1, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 11, winTempl->tilemapLeft, winTempl->tilemapTop - 1, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 12, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop - 1, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 13, winTempl->tilemapLeft - 1, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 15, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop, 1, winTempl->height, pal);
+ FillBgTilemapBufferRect(0, 16, winTempl->tilemapLeft - 1, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+ FillBgTilemapBufferRect(0, 17, winTempl->tilemapLeft, winTempl->tilemapTop + winTempl->height, winTempl->width, 1, pal);
+ FillBgTilemapBufferRect(0, 18, winTempl->tilemapLeft + winTempl->width, winTempl->tilemapTop + winTempl->height, 1, 1, pal);
+}
+
+static void sub_8029274(struct DodrioSubstruct_0160 *ptr)
+{
+ gUnknown_02022CF8 = ptr;
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->unk3018 = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ gUnknown_02022CF8->unk3004 = CreateTask(sub_8029314, 3);
+ sub_802A72C(sub_8029338);
+}
+
+static void sub_80292D4(void)
+{
+ FreeAllWindowBuffers();
+}
+
+// Data used by functions below.
+struct WinCoords
+{
+ u8 left;
+ u8 top;
+};
+
+static const u8 gUnknown_082FB380[][3] =
+{
+ {1, 2, 3},
+ {1, 4, 5},
+ {1, 8, 9},
+ {1, 6, 7},
+};
+
+static const struct WinCoords gUnknown_082FB38C[] = {{12, 6}};
+static const struct WinCoords gUnknown_082FB390[] = {{9, 10}, {15, 6}};
+static const struct WinCoords gUnknown_082FB398[] = {{12, 6}, {18, 10}, {6, 10}};
+static const struct WinCoords gUnknown_082FB3A4[] = {{9, 10}, {15, 6}, {21, 10}, {3, 6}};
+static const struct WinCoords gUnknown_082FB3B4[] = {{12, 6}, {18, 10}, {23, 6}, {1, 6}, {6, 10}};
+
+static const struct WinCoords *const gUnknown_082FB3C8[] =
+{
+ gUnknown_082FB38C,
+ gUnknown_082FB390,
+ gUnknown_082FB398,
+ gUnknown_082FB3A4,
+ gUnknown_082FB3B4,
+};
+
+static const u8 *const gUnknown_082FB3DC[] =
+{
+ gText_1Colon,
+ gText_2Colon,
+ gText_3Colon,
+ gText_4Colon,
+ gText_5Colon,
+};
+
+static const u16 gUnknown_082FB3F0[] = {92, 132, 172, 212};
+static const u16 gUnknown_082FB3F8[] = {33, 49, 65, 81, 97};
+static const u16 gUnknown_082FB402[] = {17, 33, 49, 65, 81};
+
+struct
+{
+ u8 id;
+ void (*func)(void);
+} const gUnknown_082FB40C[] =
+{
+ {0, sub_8029338},
+ {1, sub_8029440},
+ {2, sub_802988C},
+ {3, sub_802A010},
+ {4, sub_802A380},
+ {5, sub_802A454},
+ {6, sub_802A534},
+ {7, sub_802A588},
+ {8, sub_802A6FC},
+ {9, nullsub_16},
+};
+
+static void sub_80292E0(u8 arg0)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ {
+ if (gUnknown_082FB40C[i].id == arg0)
+ sub_802A72C(gUnknown_082FB40C[i].func);
+ }
+}
+
+static void sub_8029314(u8 taskId)
+{
+ if (!gUnknown_02022CF8->finished)
+ sub_802A75C()();
+}
+
+static void sub_8029338(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ sub_802A7A8();
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ if (sub_802A8E8() == TRUE)
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ CopyToBgTilemapBuffer(3, gDodrioBerryBgTilemap1, 0, 0);
+ CopyToBgTilemapBuffer(1, gDodrioBerryBgTilemap2Left, 0, 0);
+ CopyToBgTilemapBuffer(2, gDodrioBerryBgTilemap2Right, 0, 0);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 4:
+ sub_8028FF8(gSaveBlock2Ptr->optionsWindowFrameType);
+ sub_802902C();
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_8029440(void)
+{
+ u8 i, playersCount, id, colorsId, *name;
+ u32 left;
+ struct WindowTemplate window;
+ const struct WinCoords *ptr;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ playersCount = sub_8027650();
+ ptr = gUnknown_082FB3C8[playersCount - 1];
+ window.bg = 0;
+ window.width = 7;
+ window.height = 2;
+ window.paletteNum = 0xD;
+ window.baseBlock = 0x13;
+ for (i = 0; i < playersCount; ptr++, i++)
+ {
+ colorsId = 0;
+ id = sub_8027A48(i);
+ left = (56 - GetStringWidth(1, sub_8027660(id), -1)) / 2u;
+ window.tilemapLeft = ptr->left;
+ window.tilemapTop = ptr->top;
+ gUnknown_02022CF8->unk3008[i] = AddWindow(&window);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[i], PIXEL_FILL(1));
+ if (id == GetMultiplayerId())
+ colorsId = 2;
+ name = sub_8027660(id);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[i], 1, left, 1, gUnknown_082FB380[colorsId], -1, name);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[i], 2);
+ window.baseBlock += 0xE;
+ sub_8029174(&window);
+ }
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ playersCount = sub_8027650();
+ for (i = 0; i < playersCount; i++)
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ if (++gUnknown_02022CF8->state > 180)
+ {
+ playersCount = sub_8027650();
+ for (i = 0; i < playersCount; i++)
+ {
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[i]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[i]);
+ }
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ }
+ break;
+ }
+}
+
+static void sub_80296A8(u8 playersCount_)
+{
+ u8 i, r8 = 0, r6 = 0;
+ u8 playersCount = playersCount_; // Pointless variable, I know, but it's needed to match.
+ u8 *name;
+ u32 x, numWidth;
+ u8 numString[32];
+ u8 array[5] = {0, 1, 2, 3, 4};
+ struct DodrioSubstruct_3308 temp, structArray[5];
+
+ for (i = 0; i < playersCount; i++)
+ {
+ array[i] = i;
+ sub_802793C(&temp, i);
+ structArray[i] = temp;
+ }
+
+ if (sub_8027748() != 0)
+ {
+ do
+ {
+ for (i = 0; i < playersCount; i++)
+ {
+ if (structArray[i].unk0 == r8)
+ {
+ array[r6] = i;
+ r6++;
+ }
+ }
+ r8 = r6;
+ } while (r6 < playersCount);
+ }
+
+ for (i = 0; i < playersCount; i++)
+ {
+ if (structArray[i].unk4 == 0)
+ structArray[i].unk0 = playersCount - 1;
+ }
+
+ x = 216 - GetStringWidth(1, gText_SpacePoints, 0);
+ for (i = 0; i < playersCount; i++)
+ {
+ u8 colorsId = 0;
+ u8 id = array[i];
+ u32 points = structArray[id].unk4;
+
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gUnknown_082FB3DC[structArray[id].unk0], 8, gUnknown_082FB402[i], -1, NULL);
+ if (id == GetMultiplayerId())
+ colorsId = 2;
+ name = sub_8027660(id);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, 28, gUnknown_082FB402[i], gUnknown_082FB380[colorsId], -1, name);
+ ConvertIntToDecimalStringN(numString, points, STR_CONV_MODE_LEFT_ALIGN, 7);
+ numWidth = GetStringWidth(1, numString, -1);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, numString, x - numWidth, gUnknown_082FB402[i], -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SpacePoints, x, gUnknown_082FB402[i], -1, NULL);
+ }
+}
+
+static void sub_802988C(void)
+{
+ u8 i, j, itemGiveRet, playersCount = sub_8027650();
+ u8 *name;
+ u32 strWidth, x;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ sub_802784C();
+ gUnknown_02022CF8->unk301C = 0;
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BBC[0]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BBC[1]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BBC[0]);
+ sub_8029174(&gUnknown_082F7BBC[1]);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_BerryPickingResults, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_BerryPickingResults, x, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_10P30P50P50P, 68, 17, -1, NULL);
+ for (i = 0; i < playersCount; i++)
+ {
+ u8 colorsId = 0;
+ if (i == GetMultiplayerId())
+ colorsId = 2;
+
+ name = sub_8027660(i);
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, 0, gUnknown_082FB3F8[i], gUnknown_082FB380[colorsId], -1, name);
+ for (j = 0; j < 4; j++)
+ {
+ u32 width;
+ u16 result1 = Min(sub_80276A0(i, j), 9999);
+ u16 result2 = Min(sub_802778C(j), 9999);
+
+ ConvertIntToDecimalStringN(gStringVar4, result1, STR_CONV_MODE_LEFT_ALIGN, 4);
+ width = GetStringWidth(1, gStringVar4, -1);
+ if (result2 == result1 && result2 != 0)
+ AddTextPrinterParameterized3(gUnknown_02022CF8->unk3008[1], 1, gUnknown_082FB3F0[j] - width, gUnknown_082FB3F8[i], gUnknown_082FB380[1], -1, gStringVar4);
+ else
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, gUnknown_082FB3F0[j] - width, gUnknown_082FB3F8[i], -1, NULL);
+ }
+ }
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ sub_8028C30(FALSE);
+ gUnknown_02022CF8->state++;
+ break;
+ case 4:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ sub_8028C30(TRUE);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ case 5:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_AnnouncingRankings, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_AnnouncingRankings, x, 1, -1, NULL);
+ gUnknown_02022CF8->state++;
+ break;
+ case 6:
+ sub_80296A8(playersCount);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 7:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 8:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ if (sub_8027748() < 3000)
+ {
+ gUnknown_02022CF8->state = 127;
+ }
+ else
+ {
+ StopMapMusic();
+ gUnknown_02022CF8->state++;
+ }
+
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 5, 30, 15);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BCC);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BCC);
+ }
+ break;
+ case 9:
+ PlayNewMapMusic(MUS_FANFA1);
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ strWidth = GetStringWidth(1, gText_AnnouncingPrizes, -1);
+ x = (224 - strWidth) / 2;
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_AnnouncingPrizes, x, 1, -1, NULL);
+ DynamicPlaceholderTextUtil_Reset();
+ CopyItemName(sub_802762C(), gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_FirstPlacePrize);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, 0, 1, -1, NULL);
+ itemGiveRet = sub_80279C8();
+ if (itemGiveRet != 0 && itemGiveRet != 3)
+ {
+ DynamicPlaceholderTextUtil_Reset();
+ CopyItemName(sub_802762C(), gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ if (itemGiveRet == 2)
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_CantHoldAnyMore);
+ else if (itemGiveRet == 1)
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_FilledStorageSpace);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gStringVar4, 0, 41, -1, NULL);
+ }
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 10:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ FadeOutAndFadeInNewMapMusic(MUS_RG_WIN_YASEI, 20, 10);
+ gUnknown_02022CF8->state++;
+ break;
+ case 11:
+ if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_02022CF8->unk301C = 0;
+ PlaySE(SE_SELECT);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A010(void)
+{
+ u8 y;
+
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BD4[0]);
+ gUnknown_02022CF8->unk3008[1] = AddWindow(&gUnknown_082F7BD4[1]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ sub_8029174(&gUnknown_082F7BD4[0]);
+ sub_8029074(&gUnknown_082F7BD4[1]);
+ gUnknown_02022CF8->state++;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_WantToPlayAgain, 0, 5, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_Yes, 8, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_No, 8, 17, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SelectorArrow2, 0, 1, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ }
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ y = gUnknown_02022CF8->unk3020;
+ if (y == 0)
+ y = 1;
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_Yes, 8, 1, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_No, 8, 17, -1, NULL);
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SelectorArrow2, 0, ((y - 1) * 16) + 1, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 3);
+ // Increment state only if A or B button have been pressed.
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_02022CF8->unk3020 == 0)
+ gUnknown_02022CF8->unk3020 = 1;
+ gUnknown_02022CF8->state++;
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ switch (gUnknown_02022CF8->unk3020)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3020 = 2;
+ break;
+ case 1:
+ gUnknown_02022CF8->unk3020 = 2;
+ break;
+ case 2:
+ gUnknown_02022CF8->unk3020 = 1;
+ break;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_02022CF8->unk3020 = 2;
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ default:
+ gUnknown_02022CF8->unk3024 = gUnknown_02022CF8->unk3020;
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[1]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[1]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A380(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ DrawDialogueFrame(0, FALSE);
+ AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ CopyWindowToVram(0, 3);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CreateTask(sub_8153688, 0);
+ gUnknown_02022CF8->state++;
+ }
+ break;
+ case 3:
+ if (!FuncIsActiveTask(sub_8153688))
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A454(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BEC);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ sub_8029174(&gUnknown_082F7BEC);
+ gUnknown_02022CF8->state++;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_CommunicationStandby3, 0, 5, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A534(void)
+{
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+}
+
+static void sub_802A588(void)
+{
+ switch (gUnknown_02022CF8->state)
+ {
+ case 0:
+ gUnknown_02022CF8->unk3008[0] = AddWindow(&gUnknown_082F7BE4);
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ sub_8029174(&gUnknown_082F7BE4);
+ gUnknown_02022CF8->state++;
+ gUnknown_02022CF8->unk301C = 0;
+ gUnknown_02022CF8->unk3020 = 0;
+ gUnknown_02022CF8->unk3024 = 0;
+ break;
+ case 1:
+ FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1));
+ AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[0], 1, gText_SomeoneDroppedOut, 0, 5, -1, NULL);
+ CopyWindowToVram(gUnknown_02022CF8->unk3008[0], 2);
+ gUnknown_02022CF8->state++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ PutWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->state++;
+ break;
+ case 3:
+ if (++gUnknown_02022CF8->unk301C >= 120)
+ gUnknown_02022CF8->state++;
+ break;
+ default:
+ gUnknown_02022CF8->unk3024 = 5;
+ ClearWindowTilemap(gUnknown_02022CF8->unk3008[0]);
+ RemoveWindow(gUnknown_02022CF8->unk3008[0]);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022CF8->finished = TRUE;
+ break;
+ }
+}
+
+static void sub_802A6FC(void)
+{
+ DestroyTask(gUnknown_02022CF8->unk3004);
+ gUnknown_02022CF8->finished = TRUE;
+}
+
+static void nullsub_16(void)
+{
+
+}
+
+static void sub_802A72C(void (*func)(void))
+{
+ gUnknown_02022CF8->state = 0;
+ gUnknown_02022CF8->finished = FALSE;
+ gUnknown_02022CF8->unk3028 = func;
+}
+
+static void (*sub_802A75C(void))(void)
+{
+ return gUnknown_02022CF8->unk3028;
+}
+
+static bool32 sub_802A770(void)
+{
+ if (gUnknown_02022CF8->finished == TRUE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static u8 sub_802A794(void)
+{
+ return gUnknown_02022CF8->unk3024;
+}
+
+static void sub_802A7A8(void)
+{
+ DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3,(void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_082F7BA4, ARRAY_COUNT(gUnknown_082F7BA4));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ InitStandardTextBoxWindows();
+ sub_8197200();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetBgTilemapBuffer(3, gUnknown_02022CF8->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, gUnknown_02022CF8->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, gUnknown_02022CF8->tilemapBuffers[2]);
+}
+
+static bool32 sub_802A8E8(void)
+{
+ switch (gUnknown_02022CF8->unk3018)
+ {
+ case 0:
+ LoadPalette(gDodrioBerryBgPal1, 0, sizeof(gDodrioBerryBgPal1));
+ break;
+ case 1:
+ reset_temp_tile_data_buffers();
+ break;
+ case 2:
+ decompress_and_copy_tile_data_to_vram(3, gDodrioBerryBgGfx1, 0, 0, 0);
+ break;
+ case 3:
+ decompress_and_copy_tile_data_to_vram(1, gDodrioBerryBgGfx2, 0, 0, 0);
+ break;
+ case 4:
+ if (free_temp_tile_data_buffers_if_possible() == TRUE)
+ return FALSE;
+ break;
+ case 5:
+ LoadPalette(stdpal_get(3), 0xD0, 0x20);
+ break;
+ default:
+ gUnknown_02022CF8->unk3018 = 0;
+ return TRUE;
+ }
+
+ gUnknown_02022CF8->unk3018++;
+ return FALSE;
+}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 605cd0366..835141ef2 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -73,7 +73,7 @@ static void CreateRandomEggShardSprite(void);
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
// IWRAM bss
-static IWRAM_DATA struct EggHatchData *sEggHatchData;
+static struct EggHatchData *sEggHatchData;
// rom data
static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal");
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index cd64afe0e..11aaaafe7 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -26,17 +26,17 @@ static void sub_81D414C(void);
static void sub_81D3F1C(u32, u32*, u32*);
static void sub_81D3F68(void);
-IWRAM_DATA struct Unknown030012C8 gUnknown_030012C8;
-IWRAM_DATA u16 gUnknown_030012E0;
-IWRAM_DATA u16 gUnknown_030012E2;
-IWRAM_DATA u16 gUnknown_030012E4;
-IWRAM_DATA u16 gUnknown_030012E6;
-IWRAM_DATA u32 gUnknown_030012E8;
-IWRAM_DATA u16 gUnknown_030012EC;
-IWRAM_DATA u16 gUnknown_030012EE;
-IWRAM_DATA u16 gUnknown_030012F0;
-IWRAM_DATA u16 gUnknown_030012F2;
-IWRAM_DATA u16 gUnknown_030012F4;
+static struct Unknown030012C8 gUnknown_030012C8;
+static u16 gUnknown_030012E0;
+static u16 gUnknown_030012E2;
+static u16 gUnknown_030012E4;
+static u16 gUnknown_030012E6;
+static u32 gUnknown_030012E8;
+static u16 gUnknown_030012EC;
+static u16 gUnknown_030012EE;
+static u16 gUnknown_030012F0;
+static u16 gUnknown_030012F2;
+static u16 gUnknown_030012F4;
extern const u8 gUnknown_08625B6C[][0x148];
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index f74efa32b..98f0d9b8c 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -38,7 +38,7 @@ struct Unk03006370
static void sub_81D5084(u8);
-extern struct Unk03006370 gUnknown_03006370;
+struct Unk03006370 gUnknown_03006370;
extern const u8 gUnknown_089A3470[];
extern const u8 gMultiBootProgram_BerryGlitchFix_Start[];
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 1e120bc90..96ca2ed1c 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -556,7 +556,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data));
- SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_10, (&data));
+ SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data));
for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
diff --git a/src/field_camera.c b/src/field_camera.c
index b976cf2ff..7f294afdb 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -36,11 +36,11 @@ static void DrawMetatile(s32 a, u16 *b, u16 c);
static void CameraPanningCB_PanAhead(void);
// IWRAM bss vars
-static IWRAM_DATA struct FieldCameraOffset sFieldCameraOffset;
-static IWRAM_DATA s16 sHorizontalCameraPan;
-static IWRAM_DATA s16 sVerticalCameraPan;
-static IWRAM_DATA u8 gUnknown_03000E2C;
-static IWRAM_DATA void (*sFieldCameraPanningCallback)(void);
+static struct FieldCameraOffset sFieldCameraOffset;
+static s16 sHorizontalCameraPan;
+static s16 sVerticalCameraPan;
+static u8 gUnknown_03000E2C;
+static void (*sFieldCameraPanningCallback)(void);
struct CameraObject gFieldCamera;
u16 gTotalCameraPixelOffsetY;
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 455c38deb..8a41087f5 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -304,7 +304,7 @@ static const u8 *GetInteractedEventObjectScript(struct MapPosition *position, u8
gSpecialVar_Facing = direction;
if (InTrainerHill() == TRUE)
- script = sub_81D62AC();
+ script = GetTrainerHillTrainerScript();
else
script = GetEventObjectScriptPointerByEventObjectId(eventObjectId);
diff --git a/src/field_effect.c b/src/field_effect.c
index 22bf44f28..7569bdc75 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -232,7 +232,7 @@ static void Fldeff_MoveDeoxysRock_Step(u8 taskId);
// Static RAM declarations
-static IWRAM_DATA u8 sActiveList[32];
+static u8 sActiveList[32];
// External declarations
extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index c715da25d..fb883b105 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -868,13 +868,13 @@ u32 FldEff_Unknown22(void)
return 0;
}
-void StartAshFieldEffect(s16 x, s16 y, u16 c, s16 d)
+void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 d)
{
gFieldEffectArguments[0] = x;
gFieldEffectArguments[1] = y;
gFieldEffectArguments[2] = 0x52;
gFieldEffectArguments[3] = 1;
- gFieldEffectArguments[4] = c;
+ gFieldEffectArguments[4] = metatileId;
gFieldEffectArguments[5] = d;
FieldEffectStart(FLDEFF_ASH);
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index ab2667c8c..6d62cdc4a 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -336,14 +336,9 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
{
- #ifdef NONMATCHING
- u8 r5 = direction;
- u8 r6 = direction;
- #else
- u8 r5 = direction;
- register u8 r6 asm("r6") = direction;
- #endif
- //a very bad HACK
+ u8 r5 = direction;
+ u8 r6 = direction;
+ r6++; r6--;
if (EventObjectIsMovementOverridden(playerEventObj)
&& !EventObjectClearHeldMovementIfFinished(playerEventObj))
@@ -1337,13 +1332,13 @@ void SetPlayerAvatarStateMask(u8 flags)
gPlayerAvatar.flags |= flags;
}
-static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 a, u8 gender)
+static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender)
{
u8 i;
for (i = 0; i < 5; i++)
{
- if (gUnknown_0849750C[gender][i][0] == a)
+ if (gUnknown_0849750C[gender][i][0] == graphicsId)
return gUnknown_0849750C[gender][i][1];
}
return 1;
@@ -1362,9 +1357,9 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
return 0;
}
-void SetPlayerAvatarExtraStateTransition(u8 a, u8 b)
+void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 b)
{
- u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(a, gPlayerAvatar.gender);
+ u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender);
gPlayerAvatar.unk1 |= unk | b;
DoPlayerAvatarTransition();
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index e059e6ef8..dbf68e1a2 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -13,8 +13,10 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/event_objects.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "constants/metatile_labels.h"
#define SECONDS(value) ((signed) (60.0 * value + 0.5))
@@ -202,9 +204,9 @@ void Task_HandleTruckSequence(u8 taskId)
data[1]++;
if (data[1] == 120)
{
- MapGridSetMetatileIdAt(11, 8, 520);
- MapGridSetMetatileIdAt(11, 9, 528);
- MapGridSetMetatileIdAt(11, 10, 536);
+ MapGridSetMetatileIdAt(11, 8, METATILE_ID(InsideOfTruck, ExitLight_Top));
+ MapGridSetMetatileIdAt(11, 9, METATILE_ID(InsideOfTruck, ExitLight_Mid));
+ MapGridSetMetatileIdAt(11, 10, METATILE_ID(InsideOfTruck, ExitLight_Bottom));
DrawWholeMapView();
PlaySE(SE_TRACK_DOOR);
DestroyTask(taskId);
@@ -216,9 +218,9 @@ void Task_HandleTruckSequence(u8 taskId)
void ExecuteTruckSequence(void)
{
- MapGridSetMetatileIdAt(11, 8, 525);
- MapGridSetMetatileIdAt(11, 9, 533);
- MapGridSetMetatileIdAt(11, 10, 541);
+ MapGridSetMetatileIdAt(11, 8, METATILE_ID(InsideOfTruck, DoorClosedFloor_Top));
+ MapGridSetMetatileIdAt(11, 9, METATILE_ID(InsideOfTruck, DoorClosedFloor_Mid));
+ MapGridSetMetatileIdAt(11, 10, METATILE_ID(InsideOfTruck, DoorClosedFloor_Bottom));
DrawWholeMapView();
ScriptContext2_Enable();
CpuFastFill(0, gPlttBufferFaded, 0x400);
@@ -311,7 +313,7 @@ void Task_HandlePorthole(u8 taskId)
void sub_80FB6EC(void)
{
- u8 spriteId = AddPseudoEventObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
+ u8 spriteId = AddPseudoEventObject(EVENT_OBJ_GFX_SS_TIDAL, SpriteCallbackDummy, 112, 80, 0);
gSprites[spriteId].coordOffsetEnabled = FALSE;
diff --git a/src/field_specials.c b/src/field_specials.c
index 8bd990063..efe77bd70 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -55,13 +55,14 @@
#include "constants/vars.h"
#include "constants/battle_frontier.h"
#include "constants/weather.h"
+#include "constants/metatile_labels.h"
#include "palette.h"
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
static EWRAM_DATA u32 gBikeCyclingTimer = 0;
static EWRAM_DATA u8 gUnknown_0203AB5C = 0;
-static EWRAM_DATA u8 gUnknown_0203AB5D = 0;
+static EWRAM_DATA u8 sPetalburgGymSlidingDoorFrameCounter = 0;
static EWRAM_DATA u8 gUnknown_0203AB5E = 0;
static EWRAM_DATA u16 gUnknown_0203AB60 = 0;
static EWRAM_DATA u16 gUnknown_0203AB62 = 0;
@@ -100,7 +101,7 @@ static void sub_81395BC(u8 taskId);
static void sub_8139620(u8 taskId);
static void sub_8139AF4(u8 taskId);
static void sub_8139C2C(u16 a1, u8 a2);
-static void sub_8139C80(u8 taskId);
+static void MoveElevatorWindowLights(u8 taskId);
static void sub_813A2DC(u8 taskId);
static void sub_813AA60(u16 a0, u16 a1);
static void sub_813ACE8(u8 a0, u16 a1);
@@ -623,25 +624,26 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent
}
}
-static const struct UCoords8 gUnknown_085B2B68[] = {
+static const struct UCoords8 sMauvilleGymSwitchCoords[] = {
{ 7, 22},
{11, 19},
{10, 16},
{15, 16}
};
+// Flips the switches on the ground when the player steps on them.
void MauvilleGymSpecial1(void)
{
u8 i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_085B2B68); i++)
+ for (i = 0; i < ARRAY_COUNT(sMauvilleGymSwitchCoords); i++)
{
if (i == gSpecialVar_0x8004)
{
- MapGridSetMetatileIdAt(gUnknown_085B2B68[i].x, gUnknown_085B2B68[i].y, 0x206);
+ MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_ID(MauvilleGym, PressedSwitch));
}
else
{
- MapGridSetMetatileIdAt(gUnknown_085B2B68[i].x, gUnknown_085B2B68[i].y, 0x205);
+ MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_ID(MauvilleGym, RaisedSwitch));
}
}
}
@@ -655,100 +657,101 @@ void MauvilleGymSpecial2(void)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case 0x220:
- MapGridSetMetatileIdAt(x, y, 0x230);
+ case METATILE_ID(MauvilleGym, GreenBeamH1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_Off));
break;
- case 0x221:
- MapGridSetMetatileIdAt(x, y, 0x231);
+ case METATILE_ID(MauvilleGym, GreenBeamH2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_Off));
break;
- case 0x228:
- MapGridSetMetatileIdAt(x, y, 0x238);
+ case METATILE_ID(MauvilleGym, GreenBeamH3_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_Off));
break;
- case 0x229:
- MapGridSetMetatileIdAt(x, y, 0x239);
+ case METATILE_ID(MauvilleGym, GreenBeamH4_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_Off));
break;
- case 0x230:
- MapGridSetMetatileIdAt(x, y, 0x220);
+ case METATILE_ID(MauvilleGym, GreenBeamH1_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_On));
break;
- case 0x231:
- MapGridSetMetatileIdAt(x, y, 0x221);
+ case METATILE_ID(MauvilleGym, GreenBeamH2_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_On));
break;
- case 0x238:
- MapGridSetMetatileIdAt(x, y, 0xe28);
+ case METATILE_ID(MauvilleGym, GreenBeamH3_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_On) | METATILE_COLLISION_MASK);
break;
- case 0x239:
- MapGridSetMetatileIdAt(x, y, 0xe29);
+ case METATILE_ID(MauvilleGym, GreenBeamH4_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_On) | METATILE_COLLISION_MASK);
break;
- case 0x222:
- MapGridSetMetatileIdAt(x, y, 0x232);
+ case METATILE_ID(MauvilleGym, RedBeamH1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_Off));
break;
- case 0x223:
- MapGridSetMetatileIdAt(x, y, 0x233);
+ case METATILE_ID(MauvilleGym, RedBeamH2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_Off));
break;
- case 0x22a:
- MapGridSetMetatileIdAt(x, y, 0x23a);
+ case METATILE_ID(MauvilleGym, RedBeamH3_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_Off));
break;
- case 0x22b:
- MapGridSetMetatileIdAt(x, y, 0x23b);
+ case METATILE_ID(MauvilleGym, RedBeamH4_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_Off));
break;
- case 0x232:
- MapGridSetMetatileIdAt(x, y, 0x222);
+ case METATILE_ID(MauvilleGym, RedBeamH1_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_On));
break;
- case 0x233:
- MapGridSetMetatileIdAt(x, y, 0x223);
+ case METATILE_ID(MauvilleGym, RedBeamH2_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_On));
break;
- case 0x23a:
- MapGridSetMetatileIdAt(x, y, 0xe2a);
+ case METATILE_ID(MauvilleGym, RedBeamH3_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_On) | METATILE_COLLISION_MASK);
break;
- case 0x23b:
- MapGridSetMetatileIdAt(x, y, 0xe2b);
+ case METATILE_ID(MauvilleGym, RedBeamH4_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_On) | METATILE_COLLISION_MASK);
break;
- case 0x240:
- MapGridSetMetatileIdAt(x, y, 0xe42);
+ case METATILE_ID(MauvilleGym, GreenBeamV1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_On) | METATILE_COLLISION_MASK);
break;
- case 0x248:
- MapGridSetMetatileIdAt(x, y, 0x21a);
+ case METATILE_ID(MauvilleGym, GreenBeamV2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
break;
- case 0x241:
- MapGridSetMetatileIdAt(x, y, 0xe43);
+ case METATILE_ID(MauvilleGym, RedBeamV1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_Off) | METATILE_COLLISION_MASK);
break;
- case 0x249:
- MapGridSetMetatileIdAt(x, y, 0x21a);
+ case METATILE_ID(MauvilleGym, RedBeamV2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
break;
- case 0x242:
- MapGridSetMetatileIdAt(x, y, 0xe40);
+ case METATILE_ID(MauvilleGym, PoleBottom_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamV1_On) | METATILE_COLLISION_MASK);
break;
- case 0x21a:
- if (MapGridGetMetatileIdAt(x, y - 1) == 0x240)
+ case METATILE_ID(MauvilleGym, FloorTile):
+ if (MapGridGetMetatileIdAt(x, y - 1) == METATILE_ID(MauvilleGym, GreenBeamV1_On))
{
- MapGridSetMetatileIdAt(x, y, 0xe48);
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamV2_On) | METATILE_COLLISION_MASK);
}
else
{
- MapGridSetMetatileIdAt(x, y, 0xe49);
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamV2_On) | METATILE_COLLISION_MASK);
}
break;
- case 0x243:
- MapGridSetMetatileIdAt(x, y, 0xe41);
+ case METATILE_ID(MauvilleGym, PoleBottom_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamV1_On) | METATILE_COLLISION_MASK);
break;
- case 0x251:
- MapGridSetMetatileIdAt(x, y, 0xe50);
+ case METATILE_ID(MauvilleGym, PoleTop_Off):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_On) | METATILE_COLLISION_MASK);
break;
- case 0x250:
- MapGridSetMetatileIdAt(x, y, 0x251);
+ case METATILE_ID(MauvilleGym, PoleTop_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_Off));
break;
}
}
}
}
+// Presses all switches and deactivates all beams.
void MauvilleGymSpecial3(void)
{
int i, x, y;
- const struct UCoords8 *switchCoords = gUnknown_085B2B68;
- for (i = ARRAY_COUNT(gUnknown_085B2B68) - 1; i >= 0; i--)
+ const struct UCoords8 *switchCoords = sMauvilleGymSwitchCoords;
+ for (i = ARRAY_COUNT(sMauvilleGymSwitchCoords) - 1; i >= 0; i--)
{
- MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, 0x206);
+ MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, METATILE_ID(MauvilleGym, PressedSwitch));
switchCoords++;
}
for (y = 12; y < 24; y++)
@@ -757,42 +760,42 @@ void MauvilleGymSpecial3(void)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case 0x220:
- MapGridSetMetatileIdAt(x, y, 0x230);
+ case METATILE_ID(MauvilleGym, GreenBeamH1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_Off));
break;
- case 0x221:
- MapGridSetMetatileIdAt(x, y, 0x231);
+ case METATILE_ID(MauvilleGym, GreenBeamH2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_Off));
break;
- case 0x228:
- MapGridSetMetatileIdAt(x, y, 0x238);
+ case METATILE_ID(MauvilleGym, GreenBeamH3_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_Off));
break;
- case 0x229:
- MapGridSetMetatileIdAt(x, y, 0x239);
+ case METATILE_ID(MauvilleGym, GreenBeamH4_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_Off));
break;
- case 0x222:
- MapGridSetMetatileIdAt(x, y, 0x232);
+ case METATILE_ID(MauvilleGym, RedBeamH1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_Off));
break;
- case 0x223:
- MapGridSetMetatileIdAt(x, y, 0x233);
+ case METATILE_ID(MauvilleGym, RedBeamH2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_Off));
break;
- case 0x22a:
- MapGridSetMetatileIdAt(x, y, 0x23a);
+ case METATILE_ID(MauvilleGym, RedBeamH3_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_Off));
break;
- case 0x22b:
- MapGridSetMetatileIdAt(x, y, 0x23b);
+ case METATILE_ID(MauvilleGym, RedBeamH4_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_Off));
break;
- case 0x240:
- MapGridSetMetatileIdAt(x, y, 0xe42);
+ case METATILE_ID(MauvilleGym, GreenBeamV1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_On) | METATILE_COLLISION_MASK);
break;
- case 0x241:
- MapGridSetMetatileIdAt(x, y, 0xe43);
+ case METATILE_ID(MauvilleGym, RedBeamV1_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_Off) | METATILE_COLLISION_MASK);
break;
- case 0x248:
- case 0x249:
- MapGridSetMetatileIdAt(x, y, 0x21a);
+ case METATILE_ID(MauvilleGym, GreenBeamV2_On):
+ case METATILE_ID(MauvilleGym, RedBeamV2_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
break;
- case 0x250:
- MapGridSetMetatileIdAt(x, y, 0x251);
+ case METATILE_ID(MauvilleGym, PoleTop_On):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_Off));
break;
}
}
@@ -800,23 +803,30 @@ void MauvilleGymSpecial3(void)
}
static const u8 gUnknown_085B2B78[] = {0, 1, 1, 1, 1};
-static const u16 gUnknown_085B2B7E[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c};
+
+static const u16 sPetalburgGymSlidingDoorMetatiles[] = {
+ METATILE_ID(PetalburgGym, SlidingDoor_Frame0),
+ METATILE_ID(PetalburgGym, SlidingDoor_Frame1),
+ METATILE_ID(PetalburgGym, SlidingDoor_Frame2),
+ METATILE_ID(PetalburgGym, SlidingDoor_Frame3),
+ METATILE_ID(PetalburgGym, SlidingDoor_Frame4),
+};
void PetalburgGymSpecial1(void)
{
gUnknown_0203AB5C = 0;
- gUnknown_0203AB5D = 0;
+ sPetalburgGymSlidingDoorFrameCounter = 0;
PlaySE(SE_KI_GASYAN);
CreateTask(Task_PetalburgGym, 8);
}
static void Task_PetalburgGym(u8 taskId)
{
- if (gUnknown_085B2B78[gUnknown_0203AB5D] == gUnknown_0203AB5C)
+ if (gUnknown_085B2B78[sPetalburgGymSlidingDoorFrameCounter] == gUnknown_0203AB5C)
{
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_085B2B7E[gUnknown_0203AB5D]);
+ PetalburgGymFunc(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[sPetalburgGymSlidingDoorFrameCounter]);
gUnknown_0203AB5C = 0;
- if ((++gUnknown_0203AB5D) == 5)
+ if ((++sPetalburgGymSlidingDoorFrameCounter) == ARRAY_COUNT(sPetalburgGymSlidingDoorMetatiles))
{
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -828,74 +838,74 @@ static void Task_PetalburgGym(u8 taskId)
}
}
-static void PetalburgGymFunc(u8 a0, u16 a1)
+static void PetalburgGymFunc(u8 roomNumber, u16 metatileId)
{
- u16 x[4];
- u16 y[4];
+ u16 doorCoordsX[4];
+ u16 doorCoordsY[4];
u8 i;
u8 nDoors = 0;
- switch (a0)
+ switch (roomNumber)
{
case 1:
nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x68;
- y[1] = 0x68;
+ doorCoordsX[0] = 1;
+ doorCoordsX[1] = 7;
+ doorCoordsY[0] = 104;
+ doorCoordsY[1] = 104;
break;
case 2:
nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x4e;
- y[1] = 0x4e;
+ doorCoordsX[0] = 1;
+ doorCoordsX[1] = 7;
+ doorCoordsY[0] = 78;
+ doorCoordsY[1] = 78;
break;
case 3:
nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x5b;
- y[1] = 0x5b;
+ doorCoordsX[0] = 1;
+ doorCoordsX[1] = 7;
+ doorCoordsY[0] = 91;
+ doorCoordsY[1] = 91;
break;
case 4:
nDoors = 1;
- x[0] = 7;
- y[0] = 0x27;
+ doorCoordsX[0] = 7;
+ doorCoordsY[0] = 39;
break;
case 5:
nDoors = 2;
- x[0] = 1;
- x[1] = 7;
- y[0] = 0x34;
- y[1] = 0x34;
+ doorCoordsX[0] = 1;
+ doorCoordsX[1] = 7;
+ doorCoordsY[0] = 52;
+ doorCoordsY[1] = 52;
break;
case 6:
nDoors = 1;
- x[0] = 1;
- y[0] = 0x41;
+ doorCoordsX[0] = 1;
+ doorCoordsY[0] = 65;
break;
case 7:
nDoors = 1;
- x[0] = 7;
- y[0] = 0xd;
+ doorCoordsX[0] = 7;
+ doorCoordsY[0] = 13;
break;
case 8:
nDoors = 1;
- x[0] = 1;
- y[0] = 0x1a;
+ doorCoordsX[0] = 1;
+ doorCoordsY[0] = 26;
break;
}
for (i = 0; i < nDoors; i++)
{
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(doorCoordsX[i] + 7, doorCoordsY[i] + 7, metatileId | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(doorCoordsX[i] + 7, doorCoordsY[i] + 8, (metatileId + 8) | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
}
void PetalburgGymSpecial2(void)
{
- PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_085B2B7E[4]);
+ PetalburgGymFunc(gSpecialVar_0x8004, sPetalburgGymSlidingDoorMetatiles[4]);
}
void ShowFieldMessageStringVar4(void)
@@ -1067,6 +1077,7 @@ static void PCTurnOnEffect_0(struct Task *task)
task->data[3]++;
}
+// enum pc location,
static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
{
u16 tileId = 0;
@@ -1074,30 +1085,30 @@ static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
{
if (gSpecialVar_0x8004 == 0)
{
- tileId = 0x4;
+ tileId = METATILE_ID(Building, PC_Off);
}
else if (gSpecialVar_0x8004 == 1)
{
- tileId = 0x25a;
+ tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_Off);
}
else if (gSpecialVar_0x8004 == 2)
{
- tileId = 0x259;
+ tileId = METATILE_ID(BrendansMaysHouse, MayPC_Off);
}
}
else
{
if (gSpecialVar_0x8004 == 0)
{
- tileId = 0x5;
+ tileId = METATILE_ID(Building, PC_On);
}
else if (gSpecialVar_0x8004 == 1)
{
- tileId = 0x27f;
+ tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_On);
}
else if (gSpecialVar_0x8004 == 2)
{
- tileId = 0x27e;
+ tileId = METATILE_ID(BrendansMaysHouse, MayPC_On);
}
}
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
@@ -1131,15 +1142,15 @@ static void PCTurnOffEffect(void)
}
if (gSpecialVar_0x8004 == 0)
{
- tileId = 0x4;
+ tileId = METATILE_ID(Building, PC_Off);
}
else if (gSpecialVar_0x8004 == 1)
{
- tileId = 0x25a;
+ tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_Off);
}
else if (gSpecialVar_0x8004 == 2)
{
- tileId = 0x259;
+ tileId = METATILE_ID(BrendansMaysHouse, MayPC_Off);
}
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
DrawWholeMapView();
@@ -1174,13 +1185,13 @@ static void LotteryCornerComputerEffect(struct Task *task)
task->data[3] = 0;
if (task->data[4] != 0)
{
- MapGridSetMetatileIdAt(18, 8, 0xe9d);
- MapGridSetMetatileIdAt(18, 9, 0xea5);
+ MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Normal) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Normal) | METATILE_COLLISION_MASK);
}
else
{
- MapGridSetMetatileIdAt(18, 8, 0xe58);
- MapGridSetMetatileIdAt(18, 9, 0xe60);
+ MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Flash) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Flash) | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
task->data[4] ^= 1;
@@ -1194,8 +1205,8 @@ static void LotteryCornerComputerEffect(struct Task *task)
void EndLotteryCornerComputerEffect(void)
{
- MapGridSetMetatileIdAt(18, 8, 0xe9d);
- MapGridSetMetatileIdAt(18, 9, 0xea5);
+ MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Normal) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Normal) | METATILE_COLLISION_MASK);
DrawWholeMapView();
}
@@ -1433,7 +1444,7 @@ void PutZigzagoonInPlayerParty(void)
u16 monData;
CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0);
monData = TRUE;
- SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, &monData);
+ SetMonData(&gPlayerParty[0], MON_DATA_ABILITY_NUM, &monData);
monData = MOVE_TACKLE;
SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, &monData);
monData = MOVE_NONE;
@@ -1711,17 +1722,42 @@ const u8 *const gElevatorFloorsTable[] = {
gText_Rooftop
};
-const u16 gUnknown_085B2BF4[][3] =
+static const u16 sElevatorWindowTiles_Ascending[][3] =
{
- {0x0329, 0x032a, 0x032b},
- {0x0331, 0x0332, 0x0333},
- {0x0339, 0x033a, 0x033b},
+ {
+ METATILE_ID(BattleFrontier, Elevator_Top0),
+ METATILE_ID(BattleFrontier, Elevator_Top1),
+ METATILE_ID(BattleFrontier, Elevator_Top2)
+ },
+ {
+ METATILE_ID(BattleFrontier, Elevator_Mid0),
+ METATILE_ID(BattleFrontier, Elevator_Mid1),
+ METATILE_ID(BattleFrontier, Elevator_Mid2)
+ },
+ {
+ METATILE_ID(BattleFrontier, Elevator_Bottom0),
+ METATILE_ID(BattleFrontier, Elevator_Bottom1),
+ METATILE_ID(BattleFrontier, Elevator_Bottom2)
+ },
};
-const u16 gUnknown_085B2C06[][3] =
+
+static const u16 sElevatorWindowTiles_Descending[][3] =
{
- {0x0329, 0x032b, 0x032a},
- {0x0331, 0x0333, 0x0332},
- {0x0339, 0x033b, 0x033a},
+ {
+ METATILE_ID(BattleFrontier, Elevator_Top0),
+ METATILE_ID(BattleFrontier, Elevator_Top2),
+ METATILE_ID(BattleFrontier, Elevator_Top1)
+ },
+ {
+ METATILE_ID(BattleFrontier, Elevator_Mid0),
+ METATILE_ID(BattleFrontier, Elevator_Mid2),
+ METATILE_ID(BattleFrontier, Elevator_Mid1)
+ },
+ {
+ METATILE_ID(BattleFrontier, Elevator_Bottom0),
+ METATILE_ID(BattleFrontier, Elevator_Bottom2),
+ METATILE_ID(BattleFrontier, Elevator_Bottom1)
+ },
};
void SetDepartmentStoreFloorVar(void)
@@ -1864,21 +1900,21 @@ void sub_8139C10(void)
RemoveWindow(gUnknown_0203AB5E);
}
-static void sub_8139C2C(u16 a1, u8 a2)
+static void sub_8139C2C(u16 a1, bool8 descending)
{
static const u8 gUnknown_085B2C21[] = { 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x1b };
- if (FuncIsActiveTask(sub_8139C80) != TRUE)
+ if (FuncIsActiveTask(MoveElevatorWindowLights) != TRUE)
{
- u8 taskId = CreateTask(sub_8139C80, 8);
+ u8 taskId = CreateTask(MoveElevatorWindowLights, 8);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = a2;
+ gTasks[taskId].data[2] = descending;
gTasks[taskId].data[3] = gUnknown_085B2C21[a1];
}
}
-static void sub_8139C80(u8 taskId)
+static void MoveElevatorWindowLights(u8 taskId)
{
u8 x, y;
s16 *data = gTasks[taskId].data;
@@ -1886,13 +1922,13 @@ static void sub_8139C80(u8 taskId)
if (data[1] == 6)
{
data[0]++;
- if (data[2] == 0)
+ if (data[2] == FALSE)
{
for (y = 0; y < 3; y++)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x + 8, y + 7, sElevatorWindowTiles_Ascending[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -1902,7 +1938,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x + 8, y + 7, sElevatorWindowTiles_Descending[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 22b8697d8..63539e475 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -19,6 +19,7 @@
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "constants/metatile_labels.h"
struct PacifidlogMetatileOffsets
{
@@ -50,26 +51,26 @@ static const TaskFunc sPerStepCallbacks[] =
// they are in pairs but declared as 1D array
static const struct PacifidlogMetatileOffsets sHalfSubmergedBridgeMetatileOffsets[] =
{
- { 0, 0, 0x259}, { 0, 1, 0x261},
- { 0, -1, 0x259}, { 0, 0, 0x261},
- { 0, 0, 0x252}, { 1, 0, 0x253},
- { -1, 0, 0x252}, { 0, 0, 0x253}
+ { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)},
+ { 0, -1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)},
+ { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)},
+ {-1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)}
};
static const struct PacifidlogMetatileOffsets sFullySubmergedBridgeMetatileOffsets[] =
{
- { 0, 0, 0x25A}, { 0, 1, 0x262},
- { 0, -1, 0x25A}, { 0, 0, 0x262},
- { 0, 0, 0x254}, { 1, 0, 0x255},
- { -1, 0, 0x254}, { 0, 0, 0x255}
+ { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)},
+ { 0, -1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)},
+ { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)},
+ {-1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)}
};
static const struct PacifidlogMetatileOffsets sFloatingBridgeMetatileOffsets[] =
{
- { 0, 0, 0x258}, { 0, 1, 0x260},
- { 0, -1, 0x258}, { 0, 0, 0x260},
- { 0, 0, 0x250}, { 1, 0, 0x251},
- { -1, 0, 0x250}, { 0, 0, 0x251}
+ { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)},
+ { 0, -1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)},
+ { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)},
+ {-1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)}
};
// Each element corresponds to a y coordinate row in the sootopolis gym 1F map.
@@ -103,7 +104,12 @@ static const u16 sSootopolisGymIceRowVars[] =
0
};
-static const u16 sMuddySlopeMetatiles[] = {0xe8, 0xeb, 0xea, 0xe9};
+static const u16 sMuddySlopeMetatiles[] = {
+ METATILE_ID(General, MuddySlope_Frame0),
+ METATILE_ID(General, MuddySlope_Frame3),
+ METATILE_ID(General, MuddySlope_Frame2),
+ METATILE_ID(General, MuddySlope_Frame1)
+};
static void Task_RunPerStepCallback(u8 taskId)
{
@@ -374,11 +380,11 @@ static void SetLoweredForetreeBridgeMetatile(s16 x, s16 y)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case 0x24e:
- MapGridSetMetatileIdAt(x, y, 0x24f);
+ case METATILE_ID(Fortree, BridgeOverGrass_Raised):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverGrass_Lowered));
break;
- case 0x256:
- MapGridSetMetatileIdAt(x, y, 0x257);
+ case METATILE_ID(Fortree, BridgeOverTrees_Raised):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverTrees_Lowered));
break;
}
}
@@ -391,11 +397,11 @@ static void SetNormalFortreeBridgeMetatile(s16 x, s16 y)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case 0x24f:
- MapGridSetMetatileIdAt(x, y, 0x24e);
+ case METATILE_ID(Fortree, BridgeOverGrass_Lowered):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverGrass_Raised));
break;
- case 0x257:
- MapGridSetMetatileIdAt(x, y, 0x256);
+ case METATILE_ID(Fortree, BridgeOverTrees_Lowered):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverTrees_Raised));
break;
}
}
@@ -523,7 +529,7 @@ void SetSootopolisGymCrackedIceMetatiles(void)
for (y = 0; y < height; y++)
{
if (IsIcePuzzleCoordVisited(x, y) == TRUE)
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x20e);
+ MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_ID(SootopolisGym, Ice_Cracked));
}
}
}
@@ -578,7 +584,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId)
x = data[4];
y = data[5];
PlaySE(SE_RU_BARI);
- MapGridSetMetatileIdAt(x, y, 0x20e);
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(SootopolisGym, Ice_Cracked));
CurrentMapDrawMetatileAt(x, y);
MarkIcePuzzleCoordVisited(x - 7, y - 7);
data[1] = 1;
@@ -594,7 +600,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId)
x = data[4];
y = data[5];
PlaySE(SE_RU_GASYAN);
- MapGridSetMetatileIdAt(x, y, 0x206);
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(SootopolisGym, Ice_Broken));
CurrentMapDrawMetatileAt(x, y);
data[1] = 1;
}
@@ -614,10 +620,10 @@ static void AshGrassPerStepCallback(u8 taskId)
data[2] = y;
if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y)))
{
- if (MapGridGetMetatileIdAt(x, y) == 0x20a)
- StartAshFieldEffect(x, y, 0x212, 4);
+ if (MapGridGetMetatileIdAt(x, y) == METATILE_ID(Fallarbor, AshGrass))
+ StartAshFieldEffect(x, y, METATILE_ID(Fallarbor, NormalGrass), 4);
else
- StartAshFieldEffect(x, y, 0x206, 4);
+ StartAshFieldEffect(x, y, METATILE_ID(Lavaridge, NormalGrass), 4);
if (CheckBagHasItem(ITEM_SOOT_SACK, 1))
{
@@ -631,7 +637,7 @@ static void AshGrassPerStepCallback(u8 taskId)
static void SetCrackedFloorHoleMetatile(s16 x, s16 y)
{
- MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);
+ MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);// unsure what these are referring to
CurrentMapDrawMetatileAt(x, y);
}
@@ -686,7 +692,7 @@ static void SetMuddySlopeMetatile(s16 *data, s16 x, s16 y)
MapGridSetMetatileIdAt(x, y, tile);
CurrentMapDrawMetatileAt(x, y);
- MapGridSetMetatileIdAt(x, y, 0xe8);
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(General, MuddySlope_Frame0));
}
static void Task_MuddySlope(u8 taskId)
diff --git a/src/field_weather.c b/src/field_weather.c
index 814e85ef4..024b6631f 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -68,7 +68,7 @@ static u8 None_Finish(void);
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA static u8 sFieldEffectPaletteGammaTypes[32] = {0};
-IWRAM_DATA static const u8 *sPaletteGammaTypes;
+static const u8 *sPaletteGammaTypes;
// The drought weather effect uses a precalculated color lookup table. Presumably this
// is because the underlying color shift calculation is slow.
diff --git a/src/fire.c b/src/fire.c
index d428dc13b..2998d46ca 100644
--- a/src/fire.c
+++ b/src/fire.c
@@ -891,6 +891,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION?
break;
default:
+ break;
}
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index be655b86a..3115ff231 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -20,6 +20,7 @@
#include "constants/event_objects.h"
#include "constants/field_effects.h"
#include "constants/songs.h"
+#include "constants/metatile_labels.h"
extern struct MapPosition gPlayerFacingPosition;
@@ -29,42 +30,6 @@ extern const u8 FarawayIsland_Interior_EventScript_267EDB[];
extern const u8 gFieldEffectPic_CutGrass[];
extern const u16 gFieldEffectObjectPalette6[];
-// tileset 0 as first
-#define METATILE_ID_GRASS 0x1
-#define METATILE_ID_POKE_GRASS 0xD
-
-#define METATILE_ID_POKE_GRASS_TREE_UP 0x25
-#define METATILE_ID_GRASS_TREE_UP 0xE
-
-#define METATILE_ID_POKE_GRASS_TREE_LEFT 0x1C6
-#define METATILE_ID_POKE_GRASS_TREE_RIGHT 0x1C7
-
-#define METATILE_ID_GRASS_TREE_LEFT 0x1CE
-#define METATILE_ID_GRASS_TREE_RIGHT 0x1CF
-
-#define METATILE_ID_POKE_LONG_GRASS 0x15
-
-// tileset 6 as second
-#define METATILE_ID_POKE_STEP_LAVA_GRASS 0x206
-#define METATILE_ID_POKE_LAVA_GRASS 0x207
-#define METATILE_ID_LAVA_FIELD 0x271
-
-// tileset 7 as second
-#define METATILE_ID_POKE_ASH_GRASS 0x20A
-#define METATILE_ID_POKE_STEP_ASH_GRASS 0x212
-#define METATILE_ID_ASH 0x218
-
-// tileset 8 as second
-#define METATILE_ID_POKE_LONG_GRASS_START 0x208
-
-#define METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS 0x279
-#define METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS 0x27A
-#define METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS 0x27B
-
-#define METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS 0x281
-#define METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS 0x282
-#define METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS 0x283
-
// cut 'square' defines
#define CUT_NORMAL_SIDE 3
#define CUT_NORMAL_AREA CUT_NORMAL_SIDE * CUT_NORMAL_SIDE
@@ -94,11 +59,11 @@ static void CutGrassSpriteCallbackEnd(struct Sprite *);
static void HandleLongGrassOnHyper(u8, s16, s16);
// IWRAM variables
-static IWRAM_DATA u8 sCutSquareSide;
-static IWRAM_DATA u8 sTileCountFromPlayer_X;
-static IWRAM_DATA u8 sTileCountFromPlayer_Y;
-static IWRAM_DATA u32 sUnused;
-static IWRAM_DATA bool8 sHyperCutTiles[CUT_HYPER_AREA];
+static u8 sCutSquareSide;
+static u8 sTileCountFromPlayer_X;
+static u8 sTileCountFromPlayer_Y;
+static u32 sUnused;
+static bool8 sHyperCutTiles[CUT_HYPER_AREA];
// EWRAM variables
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
@@ -390,36 +355,36 @@ static void SetCutGrassMetatile(s16 x, s16 y)
switch (metatileId)
{
- case METATILE_ID_POKE_LONG_GRASS_START:
- case METATILE_ID_POKE_LONG_GRASS:
- case METATILE_ID_POKE_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS);
+ case METATILE_ID(Fortree, LongGrass_Root):
+ case METATILE_ID(General, LongGrass):
+ case METATILE_ID(General, TallGrass):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass));
break;
- case METATILE_ID_POKE_GRASS_TREE_LEFT:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_LEFT);
+ case METATILE_ID(General, TallGrass_TreeLeft):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeLeft));
break;
- case METATILE_ID_POKE_GRASS_TREE_RIGHT:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_RIGHT);
+ case METATILE_ID(General, TallGrass_TreeRight):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeRight));
break;
- case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
break;
- case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
break;
- case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
break;
- case METATILE_ID_POKE_STEP_LAVA_GRASS:
- case METATILE_ID_POKE_LAVA_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_LAVA_FIELD);
+ case METATILE_ID(Lavaridge, NormalGrass):
+ case METATILE_ID(Lavaridge, AshGrass):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Lavaridge, LavaField));
break;
- case METATILE_ID_POKE_STEP_ASH_GRASS:
- case METATILE_ID_POKE_ASH_GRASS:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_ASH);
+ case METATILE_ID(Fallarbor, NormalGrass):
+ case METATILE_ID(Fallarbor, AshGrass):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(Fallarbor, AshField));
break;
- case METATILE_ID_POKE_GRASS_TREE_UP:
- MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_UP);
+ case METATILE_ID(General, TallGrass_TreeUp):
+ MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeUp));
break;
}
}
@@ -437,13 +402,13 @@ static u8 GetLongGrassCaseAt(s16 x, s16 y)
{
u16 metatileId = MapGridGetMetatileIdAt(x, y);
- if (metatileId == METATILE_ID_GRASS)
+ if (metatileId == METATILE_ID(General, Grass))
return LONG_GRASS_FIELD;
- else if (metatileId == METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS)
+ else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft))
return LONG_GRASS_BASE_LEFT;
- else if (metatileId == METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS)
+ else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopMid))
return LONG_GRASS_BASE_CENTER;
- else if (metatileId == METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS)
+ else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopRight))
return LONG_GRASS_BASE_RIGHT;
else
return LONG_GRASS_NONE;
@@ -457,34 +422,34 @@ static void SetCutGrassMetatiles(s16 x, s16 y)
for (i = 0; i < sCutSquareSide; i++)
{
s16 currentX = x + i;
- if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID_POKE_LONG_GRASS)
+ if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID(General, LongGrass))
{
switch (GetLongGrassCaseAt(currentX, y + 1))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, LongGrass_Root));
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
break;
}
}
- if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID_GRASS)
+ if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID(General, Grass))
{
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_POKE_LONG_GRASS_START)
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_GRASS);
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, LongGrass_Root))
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(General, Grass));
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
}
}
@@ -521,62 +486,62 @@ static void HandleLongGrassOnHyper(u8 caseId, s16 x, s16 y)
if (arr[0] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS_START)
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, LongGrass_Root))
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(General, Grass));
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
}
if (arr[1] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID_POKE_LONG_GRASS)
+ if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID(General, LongGrass))
{
switch (GetLongGrassCaseAt(newX, y + 3))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_POKE_LONG_GRASS_START);
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, LongGrass_Root));
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
break;
}
}
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_POKE_LONG_GRASS_START)
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, LongGrass_Root))
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(General, Grass));
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
}
if (arr[2] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS)
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(General, LongGrass))
{
switch (GetLongGrassCaseAt(newX, y + 4))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_POKE_LONG_GRASS_START);
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, LongGrass_Root));
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
break;
}
}
@@ -630,16 +595,16 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y)
switch (GetLongGrassCaseAt(x, y + 1))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, LongGrass_Root));
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
break;
}
}
@@ -647,7 +612,7 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y)
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y)
{
- if (MapGridGetMetatileIdAt(x, y) == METATILE_ID_GRASS)
+ if (MapGridGetMetatileIdAt(x, y) == METATILE_ID(General, Grass))
{
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y + 1);
if (MetatileBehavior_IsLongGrassSouthEdge(metatileBehavior))
@@ -655,17 +620,17 @@ void FixLongGrassMetatilesWindowBottom(s16 x, s16 y)
s32 metatileId = MapGridGetMetatileIdAt(x, y + 1);
switch (metatileId)
{
- case METATILE_ID_POKE_LONG_GRASS_START:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_GRASS);
+ case METATILE_ID(Fortree, LongGrass_Root):
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(General, Grass));
break;
- case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft):
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
break;
- case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid):
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
break;
- case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
+ case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight):
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
break;
}
}
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
index 7ab2db4db..10fb78ee2 100644
--- a/src/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
@@ -4,6 +4,7 @@
#include "fieldmap.h"
#include "fldeff.h"
#include "task.h"
+#include "constants/metatile_labels.h"
static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
@@ -53,13 +54,47 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag)
}
}
-static const u16 gUnknown_08589ABA[] = {0x284, 0x282, 0x280};
-static const u16 gUnknown_08589AC0[] = {0x285, 0x283, 0x281};
-static const u16 gUnknown_08589AC6[] = {0x28C, 0x28A, 0x288};
-static const u16 gUnknown_08589ACC[] = {0x28D, 0x28B, 0x289};
-static const u16 gUnknown_08589AD2[] = {0x2A0, 0x2A2, 0x2A4};
-static const u16 gUnknown_08589AD8[] = {0x2A1, 0x2A3, 0x2A5};
-static const u16 gUnknown_08589ADE[] = {0x2A8, 0x2AA, 0x2AC};
+static const u16 sElevatorMetatiles_1F_0[] = {
+ METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame2),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame1),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame0)
+};
+
+static const u16 sElevatorMetatiles_1F_1[] = {
+ METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame2),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame1),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame0)
+};
+
+static const u16 sElevatorMetatiles_1F_2[] = {
+ METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame2),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame1),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame0)
+};
+
+static const u16 sElevatorMetatiles_1F_3[] = {
+ METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame2),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame1),
+ METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame0)
+};
+
+static const u16 sElevatorMetatiles_2F_0[] = {
+ METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame0),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame1),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame2)
+};
+
+static const u16 sElevatorMetatiles_2F_1[] = {
+ METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame0),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame1),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame2)
+};
+
+static const u16 sElevatorMetatiles_2F_2[] = {
+ METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame0),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame1),
+ METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame2)
+};
static void sub_80E1444(u8 taskId)
{
@@ -70,25 +105,25 @@ static void sub_80E1444(u8 taskId)
switch (data[0])
{
case 0:
- sub_80E12E8(taskId, gUnknown_08589ABA, 0);
+ sub_80E12E8(taskId, sElevatorMetatiles_1F_0, 0);
break;
case 1:
- sub_80E12E8(taskId, gUnknown_08589AC0, 0);
+ sub_80E12E8(taskId, sElevatorMetatiles_1F_1, 0);
break;
case 2:
- sub_80E12E8(taskId, gUnknown_08589AC6, METATILE_COLLISION_MASK);
+ sub_80E12E8(taskId, sElevatorMetatiles_1F_2, METATILE_COLLISION_MASK);
break;
case 3:
- sub_80E12E8(taskId, gUnknown_08589ACC, 0);
+ sub_80E12E8(taskId, sElevatorMetatiles_1F_3, 0);
break;
case 4:
- sub_80E12E8(taskId, gUnknown_08589AD2, METATILE_COLLISION_MASK);
+ sub_80E12E8(taskId, sElevatorMetatiles_2F_0, METATILE_COLLISION_MASK);
break;
case 5:
- sub_80E12E8(taskId, gUnknown_08589AD8, 0);
+ sub_80E12E8(taskId, sElevatorMetatiles_2F_1, 0);
break;
case 6:
- sub_80E12E8(taskId, gUnknown_08589ADE, 0);
+ sub_80E12E8(taskId, sElevatorMetatiles_2F_2, 0);
break;
}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index c002f700f..a2457307b 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -219,8 +219,8 @@ static void sub_8137404(u8 taskId)
static void sub_8137420(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
LoadPalette(gUnknown_085B28A0, 0xE0, 0x10);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
@@ -304,8 +304,8 @@ static void sub_81375BC(u8 taskId)
static void sub_81375D8(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index 39ed30260..c68a95d41 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -22,6 +22,7 @@
#include "constants/metatile_behaviors.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "constants/metatile_labels.h"
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
@@ -800,16 +801,16 @@ static void Task_SecretBasePCTurnOn(u8 taskId)
{
case 4:
case 12:
- MapGridSetMetatileIdAt(data[0], data[1], 548);
+ MapGridSetMetatileIdAt(data[0], data[1], 0x224);
CurrentMapDrawMetatileAt(data[0], data[1]);
break;
case 8:
case 16:
- MapGridSetMetatileIdAt(data[0], data[1], 544);
+ MapGridSetMetatileIdAt(data[0], data[1], 0x220);
CurrentMapDrawMetatileAt(data[0], data[1]);
break;
case 20:
- MapGridSetMetatileIdAt(data[0], data[1], 548);
+ MapGridSetMetatileIdAt(data[0], data[1], 0x224);
CurrentMapDrawMetatileAt(data[0], data[1]);
FieldEffectActiveListRemove(FLDEFF_PCTURN_ON);
EnableBothScriptContexts();
@@ -828,9 +829,9 @@ void DoSecretBasePCTurnOffEffect(void)
PlaySE(SE_PC_OFF);
if (!VarGet(VAR_CURRENT_SECRET_BASE))
- MapGridSetMetatileIdAt(x, y, 3616);
+ MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
else
- MapGridSetMetatileIdAt(x, y, 3617);
+ MapGridSetMetatileIdAt(x, y, 0x221 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
}
@@ -902,8 +903,8 @@ bool8 FldEff_NopA700(void)
static void DoSecretBaseBreakableDoorEffect(s16 x, s16 y)
{
PlaySE(SE_TOY_KABE);
- MapGridSetMetatileIdAt(x, y, 630);
- MapGridSetMetatileIdAt(x, y - 1, 622);
+ MapGridSetMetatileIdAt(x, y, 0x276);
+ MapGridSetMetatileIdAt(x, y - 1, 0x26E);
CurrentMapDrawMetatileAt(x, y);
CurrentMapDrawMetatileAt(x, y - 1);
}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index eca7d045b..c18602c68 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -32,7 +32,7 @@ bool8 SetUpFieldMove_SoftBoiled(void)
void sub_8161560(u8 taskId)
{
gUnknown_0203CEC8.unkB = 0xA;
- gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.unk9;
+ gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.slotId;
sub_81B0FCC(GetCursorSelectionMonId(), 0x1);
display_pokemon_menu_message(0x5);
gTasks[taskId].func = sub_81B1370;
@@ -42,7 +42,7 @@ void sub_81615A8(u8 taskId)
{
u16 hp;
- u8 unk9 = gUnknown_0203CEC8.unk9;
+ u8 slotId = gUnknown_0203CEC8.slotId;
u8 pokemonIndex = gUnknown_0203CEC8.unkA;
if(pokemonIndex > 6)
{
@@ -53,20 +53,20 @@ void sub_81615A8(u8 taskId)
}
hp = GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_HP);
- if(hp == 0 || unk9 == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp)
+ if(hp == 0 || slotId == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp)
{
sub_81617B8(taskId);
return;
}
PlaySE(SE_KAIFUKU);
- sub_81B1F18(taskId, unk9, -1, GetMonData(&gPlayerParty[unk9], MON_DATA_MAX_HP)/5, sub_816166C);
+ sub_81B1F18(taskId, slotId, -1, GetMonData(&gPlayerParty[slotId], MON_DATA_MAX_HP)/5, sub_816166C);
}
static void sub_816166C(u8 taskId)
{
PlaySE(SE_KAIFUKU);
- sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAX_HP)/5, sub_81616C0);
+ sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_MAX_HP)/5, sub_81616C0);
}
static void sub_81616C0(u8 taskId)
@@ -83,8 +83,8 @@ static void sub_8161724(u8 taskId)
if(sub_81B1BD4() == 1)
return;
gUnknown_0203CEC8.unkB = 0x0;
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
- gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA;
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 0);
+ gUnknown_0203CEC8.slotId = gUnknown_0203CEC8.unkA;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
ClearStdWindowAndFrameToTransparent(0x6, FALSE);
ClearWindowTilemap(0x6);
diff --git a/src/ghost.c b/src/ghost.c
index 97b86aa76..dd29fb7ca 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -1148,7 +1148,8 @@ static void sub_8112B78(struct Sprite *sprite)
if (++coeffB > 16)
coeffB = 16;
- if (--(s16)coeffA < 0)
+ --coeffA;
+ if ((s16)coeffA < 0)
coeffA = 0;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(coeffA, coeffB));
diff --git a/src/gpu_regs.c b/src/gpu_regs.c
index e5ff4fe8f..3bcc4fd93 100644
--- a/src/gpu_regs.c
+++ b/src/gpu_regs.c
@@ -10,9 +10,9 @@
static u8 sGpuRegBuffer[GPU_REG_BUF_SIZE];
static u8 sGpuRegWaitingList[GPU_REG_BUF_SIZE];
-static bool8 sGpuRegBufferLocked;
-static bool8 sShouldSyncRegIE;
-static u16 sRegIE;
+static volatile bool8 sGpuRegBufferLocked;
+static volatile bool8 sShouldSyncRegIE;
+static vu16 sRegIE;
static void CopyBufferedValueToGpuReg(u8 regOffset);
static void SyncRegIE(void);
diff --git a/src/graphics.c b/src/graphics.c
index 0832101d8..679f16af1 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1172,13 +1172,11 @@ const u32 gBagScreenMale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_male.
const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_female.gbapal.lz");
const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/interface/bag_screen.4bpp.lz");
-
-const u32 gUnknown_08D9A88C[] = INCBIN_U32("graphics/unknown/unknown_D9A88C.bin.lz");
+const u32 gBagScreen_GfxTileMap[] = INCBIN_U32("graphics/interface/bag_screen_tilemap.bin.lz");
const u32 gBattleFrontierGfx_PyramidBag[] = INCBIN_U32("graphics/interface/bag_pyramid.4bpp.lz");
-const u32 gUnknown_08D9ADD0[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
-
-const u32 gUnknown_08D9AE04[] = INCBIN_U32("graphics/unknown/unknown_D9AE04.bin.lz");
+const u32 gBattleFrontierGfx_PyramidBag_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
+const u32 gBattleFrontierGfx_PyramidBagTileMap[] = INCBIN_U32("graphics/interface/bag_pyramid_tilemap.bin.lz");
const u32 gUnknown_08D9AF44[] = INCBIN_U32("graphics/unknown/unknown_D9AF44.gbapal.lz");
diff --git a/src/item.c b/src/item.c
index fe8e8eadd..5e505724c 100644
--- a/src/item.c
+++ b/src/item.c
@@ -18,6 +18,9 @@
extern u16 gUnknown_0203CF30[];
// this file's functions
+#if !defined(NONMATCHING) && MODERN
+#define static
+#endif
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count);
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count);
diff --git a/src/item_menu.c b/src/item_menu.c
index bfeeaacd0..5b47a567b 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -53,40 +53,40 @@
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void CB2_Bag(void);
-bool8 setup_bag_menu(void);
-void bag_menu_init_bgs(void);
-bool8 load_bag_menu_graphics(void);
-void setup_bag_menu_textboxes(void);
-void allocate_bag_item_list_buffers(void);
-void load_bag_item_list_buffers(u8);
-void bag_menu_print_pocket_names(const u8*, const u8*);
-void bag_menu_copy_pocket_name_to_window(u32);
-void bag_menu_draw_pocket_indicator_square(u8, u8);
+bool8 SetupBagMenu(void);
+void BagMenu_InitBGs(void);
+bool8 LoadBagMenu_Graphics(void);
+void SetupBagMenu_Textboxes(void);
+void AllocateBagItemListBuffers(void);
+void LoadBagItemListBuffers(u8);
+void BagMenu_PrintPocketNames(const u8*, const u8*);
+void BagMenu_CopyPocketNameToWindow(u32);
+void BagMenu_DrawPocketIndicatorSquare(u8, u8);
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void);
void bag_menu_add_list_scroll_arrow_indicators_maybe(void);
-void bag_menu_prepare_tmhm_move_window(void);
+void BagMenu_PrepareTMHMMoveWindow(void);
bool8 IsWallysBag(void);
void Task_WallyTutorialBagMenu(u8);
void Task_BagMenu(u8);
-void get_name(s8*, u16);
+void GetItemName(s8*, u16);
u16 ItemIdToBattleMoveId(u16);
u16 BagGetItemIdByPocketPosition(u8, u16);
-void bag_menu_print_description_box_text(int);
-void bag_menu_print_cursor(u8, u8);
-void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8);
+void BagMenu_PrintDescription(int);
+void BagMenu_PrintCursor(u8, u8);
+void BagMenu_Print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8);
bool8 ItemId_GetImportance(u16);
u16 BagGetQuantityByPocketPosition(u8, u16);
void sub_81AB89C(void);
-void task_close_bag_menu_2(u8);
+void TaskCloseBagMenu_2(u8);
u8 AddItemMessageWindow(u8);
void bag_menu_RemoveBagItem_message_window(u8);
void set_callback3_to_bag(u8);
-void sub_81ABC54(u8, s16);
-u8 bag_menu_add_window(u8);
+void PrintItemDepositAmount(u8, s16);
+u8 BagMenu_AddWindow(u8);
u8 GetSwitchBagPocketDirection(void);
void SwitchBagPocket(u8, s16, u16);
bool8 sub_81AC2C0(void);
-void bag_menu_swap_items(u8);
+void BagMenu_SwapItems(u8);
void sub_81AC10C(u8);
void sub_81AC3C0(u8);
void sub_81AC498(u8);
@@ -97,15 +97,15 @@ void sub_81ACB54(u8, u8, u8);
void Task_HandleInBattleItemMenuInput(u8);
void Task_HandleOutOfBattleItemMenuInput(u8);
bool8 sub_81ACDFC(s8);
-void bag_menu_remove_window(u8);
-void bag_menu_print_there_is_no_pokemon(u8);
+void BagMenu_RemoveWindow(u8);
+void BagMenu_PrintThereIsNoPokemon(u8);
void Task_ChooseHowManyToToss(u8);
-void BagMenuConfirmToss(u8);
-void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
+void BagMenu_TossItems(u8);
+void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*);
void Task_ActuallyToss(u8);
void ItemMenu_Cancel(u8);
void sub_81AD350(u8);
-void bag_menu_print_cant_be_held_msg(u8);
+void BagMenu_PrintItemCantBeHeld(u8);
void bag_menu_AddMoney_window(void);
void sub_81AD680(u8);
void sub_81AD730(u8);
@@ -126,8 +126,8 @@ static void SetPocketListPositions(void);
void sub_81ABAE0(void);
u8 sub_81AB1F0(u8);
void sub_81AC23C(u8);
-void bag_menu_change_item_callback(s32 a, bool8 b, struct ListMenu*);
-void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a);
+void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu*);
+void PrintItemQuantityPlusGFX(u8 rboxId, s32 item_index_in_pocket, u8 a);
void ItemMenu_UseOutOfBattle(u8 taskId);
void ItemMenu_Toss(u8 taskId);
void ItemMenu_Register(u8 taskId);
@@ -141,13 +141,13 @@ void unknown_ItemMenu_Give2(u8 taskId);
void unknown_ItemMenu_Confirm2(u8 taskId);
void unknown_item_menu_type(u8 taskId);
void item_menu_type_2(u8 taskId);
-void display_sell_item_ask_str(u8 taskId);
-void display_deposit_item_ask_str(u8 taskId);
+void DisplaySellItemAskString(u8 taskId);
+void DisplayDepositItemAskString(u8 taskId);
void item_menu_type_b(u8 taskId);
-void BagMenuActuallyToss(u8 taskId);
-void BagMenuCancelToss(u8 taskId);
-void sub_81AD84C(u8 taskId);
-void sub_81AD6FC(u8 taskId);
+void BagMenu_ConfirmToss(u8 taskId);
+void BagMenu_CancelToss(u8 taskId);
+void BagMenu_ConfirmSell(u8 taskId);
+void BagMenu_CancelSell(u8 taskId);
// .rodata
@@ -185,8 +185,8 @@ static const struct BgTemplate sBgTemplates_ItemMenu[3] =
static const struct ListMenuTemplate sItemListMenu =
{
.items = NULL,
- .moveCursorFunc = bag_menu_change_item_callback,
- .itemPrintFunc = sub_81AB520,
+ .moveCursorFunc = BagMenu_MoveCursorCallback,
+ .itemPrintFunc = PrintItemQuantityPlusGFX,
.totalItems = 0,
.maxShowed = 0,
.windowId = 0,
@@ -204,7 +204,7 @@ static const struct ListMenuTemplate sItemListMenu =
.cursorKind = 0
};
-const struct MenuAction gUnknown_08613FB4[] = {
+const struct MenuAction sItemMenuActions[] = {
{gMenuText_Use, ItemMenu_UseOutOfBattle},
{gMenuText_Toss, ItemMenu_Toss},
{gMenuText_Register, ItemMenu_Register},
@@ -239,10 +239,10 @@ const TaskFunc gUnknown_08614054[] = {
unknown_item_menu_type,
unknown_item_menu_type,
item_menu_type_2,
- display_sell_item_ask_str,
+ DisplaySellItemAskString,
unknown_ItemMenu_Confirm,
unknown_item_menu_type,
- display_deposit_item_ask_str,
+ DisplayDepositItemAskString,
unknown_item_menu_type,
unknown_item_menu_type,
unknown_item_menu_type,
@@ -250,11 +250,11 @@ const TaskFunc gUnknown_08614054[] = {
item_menu_type_b
};
-const struct YesNoFuncTable gUnknown_08614084 = {BagMenuActuallyToss, BagMenuCancelToss};
+const struct YesNoFuncTable sYesNoTossFunctions = {BagMenu_ConfirmToss, BagMenu_CancelToss};
-const struct YesNoFuncTable gUnknown_0861408C = {sub_81AD84C, sub_81AD6FC};
+const struct YesNoFuncTable sYesNoSellItemFunctions = {BagMenu_ConfirmSell, BagMenu_CancelSell};
-const struct ScrollArrowsTemplate gUnknown_08614094 = {SCROLL_ARROW_LEFT, 0x1C, 16, SCROLL_ARROW_RIGHT, 100, 16, -1, -1, 0x6F, 0x6F, 0};
+const struct ScrollArrowsTemplate gBagScrollArrowsTemplate = {SCROLL_ARROW_LEFT, 0x1C, 16, SCROLL_ARROW_RIGHT, 100, 16, -1, -1, 0x6F, 0x6F, 0};
const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp");
@@ -439,8 +439,8 @@ struct TempWallyStruct {
u16 pocket;
};
-EWRAM_DATA struct UnkBagStruct *gUnknown_0203CE54 = 0;
-EWRAM_DATA struct BagStruct gUnknown_0203CE58 = {0};
+EWRAM_DATA struct BagMenuStruct *gBagMenu = 0;
+EWRAM_DATA struct BagStruct gBagPositionStruct = {0};
static EWRAM_DATA struct ListBuffer1 *sListBuffer1 = 0;
static EWRAM_DATA struct ListBuffer2 *sListBuffer2 = 0;
EWRAM_DATA u16 gSpecialVar_ItemId = 0;
@@ -453,9 +453,9 @@ extern const u16 gUnknown_0860F074[];
void ResetBagScrollPositions(void)
{
- gUnknown_0203CE58.pocket = ITEMS_POCKET;
- memset(gUnknown_0203CE58.cursorPosition, 0, 10);
- memset(gUnknown_0203CE58.scrollPosition, 0, 10);
+ gBagPositionStruct.pocket = ITEMS_POCKET;
+ memset(gBagPositionStruct.cursorPosition, 0, 10);
+ memset(gBagPositionStruct.scrollPosition, 0, 10);
}
void CB2_BagMenuFromStartMenu(void)
@@ -513,28 +513,28 @@ void sub_81AAC70(void)
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)())
{
u8 temp;
- gUnknown_0203CE54 = AllocZeroed(sizeof(struct UnkBagStruct));
- if (gUnknown_0203CE54 == 0)
+ gBagMenu = AllocZeroed(sizeof(struct BagMenuStruct));
+ if (gBagMenu == 0)
{
SetMainCallback2(postExitMenuMainCallback2);
}
else
{
if (bagMenuType != RETURN_LOCATION_UNCHANGED)
- gUnknown_0203CE58.location = bagMenuType;
+ gBagPositionStruct.location = bagMenuType;
if (postExitMenuMainCallback2)
- gUnknown_0203CE58.bagCallback = postExitMenuMainCallback2;
+ gBagPositionStruct.bagCallback = postExitMenuMainCallback2;
if (pocketId < POCKETS_COUNT)
- gUnknown_0203CE58.pocket = pocketId;
- temp = gUnknown_0203CE58.location - (POCKETS_COUNT - 1);
+ gBagPositionStruct.pocket = pocketId;
+ temp = gBagPositionStruct.location - (POCKETS_COUNT - 1);
if (temp <= 1)
- gUnknown_0203CE54->unk81B = 1;
- gUnknown_0203CE54->mainCallback2 = 0;
- gUnknown_0203CE54->unk81A = 0xFF;
- gUnknown_0203CE54->unk81E = -1;
- gUnknown_0203CE54->unk81F = -1;
- memset(gUnknown_0203CE54->spriteId, 0xFF, sizeof(gUnknown_0203CE54->spriteId));
- memset(gUnknown_0203CE54->windowPointers, 0xFF, 10);
+ gBagMenu->unk81B = 1;
+ gBagMenu->mainCallback2 = 0;
+ gBagMenu->unk81A = 0xFF;
+ gBagMenu->unk81E = -1;
+ gBagMenu->unk81F = -1;
+ memset(gBagMenu->spriteId, 0xFF, sizeof(gBagMenu->spriteId));
+ memset(gBagMenu->windowPointers, 0xFF, 10);
SetMainCallback2(CB2_Bag);
}
}
@@ -557,10 +557,10 @@ void vblank_cb_bag_menu(void)
void CB2_Bag(void)
{
- while(sub_81221EC() != TRUE && setup_bag_menu() != TRUE && sub_81221AC() != TRUE) {};
+ while(sub_81221EC() != TRUE && SetupBagMenu() != TRUE && sub_81221AC() != TRUE) {};
}
-bool8 setup_bag_menu(void)
+bool8 SetupBagMenu(void)
{
u32 index;
u8 taskId;
@@ -598,17 +598,17 @@ bool8 setup_bag_menu(void)
gMain.state++;
break;
case 7:
- bag_menu_init_bgs();
- gUnknown_0203CE54->unk834 = 0;
+ BagMenu_InitBGs();
+ gBagMenu->unk834 = 0;
gMain.state++;
break;
case 8:
- if (!load_bag_menu_graphics())
+ if (!LoadBagMenu_Graphics())
break;
gMain.state++;
break;
case 9:
- setup_bag_menu_textboxes();
+ SetupBagMenu_Textboxes();
gMain.state++;
break;
case 10:
@@ -618,28 +618,28 @@ bool8 setup_bag_menu(void)
gMain.state++;
break;
case 11:
- allocate_bag_item_list_buffers();
+ AllocateBagItemListBuffers();
gMain.state++;
break;
case 12:
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
gMain.state++;
break;
case 13:
- bag_menu_print_pocket_names(gPocketNamesStringsTable[gUnknown_0203CE58.pocket], 0);
- bag_menu_copy_pocket_name_to_window(0);
- bag_menu_draw_pocket_indicator_square(gUnknown_0203CE58.pocket, 1);
+ BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], 0);
+ BagMenu_CopyPocketNameToWindow(0);
+ BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 1);
gMain.state++;
break;
case 14:
- taskId = sub_81AB1F0(gUnknown_0203CE58.location);
- gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ taskId = sub_81AB1F0(gBagPositionStruct.location);
+ gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[8] = 0;
gMain.state++;
break;
case 15:
- AddBagVisualSprite(gUnknown_0203CE58.pocket);
+ AddBagVisualSprite(gBagPositionStruct.pocket);
gMain.state++;
break;
case 16:
@@ -652,7 +652,7 @@ bool8 setup_bag_menu(void)
gMain.state++;
break;
case 18:
- bag_menu_prepare_tmhm_move_window();
+ BagMenu_PrepareTMHMMoveWindow();
gMain.state++;
break;
case 19:
@@ -672,13 +672,13 @@ bool8 setup_bag_menu(void)
return FALSE;
}
-void bag_menu_init_bgs(void)
+void BagMenu_InitBGs(void)
{
ResetVramOamAndBgCntRegs();
- memset(gUnknown_0203CE54->tilemapBuffer, 0, 0x800);
+ memset(gBagMenu->tilemapBuffer, 0, 0x800);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates_ItemMenu, 3);
- SetBgTilemapBuffer(2, gUnknown_0203CE54->tilemapBuffer);
+ SetBgTilemapBuffer(2, gBagMenu->tilemapBuffer);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
@@ -688,20 +688,20 @@ void bag_menu_init_bgs(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-bool8 load_bag_menu_graphics(void)
+bool8 LoadBagMenu_Graphics(void)
{
- switch (gUnknown_0203CE54->unk834)
+ switch (gBagMenu->unk834)
{
case 0:
reset_temp_tile_data_buffers();
decompress_and_copy_tile_data_to_vram(2, gBagScreen_Gfx, 0, 0, 0);
- gUnknown_0203CE54->unk834++;
+ gBagMenu->unk834++;
break;
case 1:
if (free_temp_tile_data_buffers_if_possible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9A88C, gUnknown_0203CE54->tilemapBuffer);
- gUnknown_0203CE54->unk834++;
+ LZDecompressWram(gBagScreen_GfxTileMap, gBagMenu->tilemapBuffer);
+ gBagMenu->unk834++;
}
break;
case 2:
@@ -709,22 +709,22 @@ bool8 load_bag_menu_graphics(void)
LoadCompressedPalette(gBagScreenFemale_Pal, 0, 0x40);
else
LoadCompressedPalette(gBagScreenMale_Pal, 0, 0x40);
- gUnknown_0203CE54->unk834++;
+ gBagMenu->unk834++;
break;
case 3:
if (IsWallysBag() == TRUE || gSaveBlock2Ptr->playerGender == MALE)
- LoadCompressedSpriteSheet(&gUnknown_0857FB34);
+ LoadCompressedSpriteSheet(&gBagMaleSpriteSheet);
else
- LoadCompressedSpriteSheet(&gUnknown_0857FB3C);
- gUnknown_0203CE54->unk834++;
+ LoadCompressedSpriteSheet(&gBagFemaleSpriteSheet);
+ gBagMenu->unk834++;
break;
case 4:
- LoadCompressedSpritePalette(&gUnknown_0857FB44);
- gUnknown_0203CE54->unk834++;
+ LoadCompressedSpritePalette(&gBagPaletteTable);
+ gBagMenu->unk834++;
break;
default:
LoadListMenuArrowsGfx();
- gUnknown_0203CE54->unk834 = 0;
+ gBagMenu->unk834 = 0;
return TRUE;
}
return FALSE;
@@ -740,23 +740,23 @@ u8 sub_81AB1F0(u8 a)
return taskId;
}
-void allocate_bag_item_list_buffers(void)
+void AllocateBagItemListBuffers(void)
{
sListBuffer1 = Alloc(sizeof(struct ListBuffer1));
sListBuffer2 = Alloc(sizeof(struct ListBuffer2));
}
-void load_bag_item_list_buffers(u8 pocketId)
+void LoadBagItemListBuffers(u8 pocketId)
{
u16 i;
struct BagPocket *pocket = &gBagPockets[pocketId];
struct ListMenuItem *subBuffer;
- if (!gUnknown_0203CE54->hideCloseBagText)
+ if (!gBagMenu->hideCloseBagText)
{
- for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId] - 1; i++)
+ for (i = 0; i < gBagMenu->numItemStacks[pocketId] - 1; i++)
{
- get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ GetItemName(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
subBuffer = sListBuffer1->subBuffers;
subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
@@ -768,23 +768,23 @@ void load_bag_item_list_buffers(u8 pocketId)
}
else
{
- for (i = 0; i < gUnknown_0203CE54->numItemStacks[pocketId]; i++)
+ for (i = 0; i < gBagMenu->numItemStacks[pocketId]; i++)
{
- get_name(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
+ GetItemName(sListBuffer2->name[i], pocket->itemSlots[i].itemId);
subBuffer = sListBuffer1->subBuffers;
subBuffer[i].name = sListBuffer2->name[i];
subBuffer[i].id = i;
}
}
gMultiuseListMenuTemplate = sItemListMenu;
- gMultiuseListMenuTemplate.totalItems = gUnknown_0203CE54->numItemStacks[pocketId];
+ gMultiuseListMenuTemplate.totalItems = gBagMenu->numItemStacks[pocketId];
gMultiuseListMenuTemplate.items = sListBuffer1->subBuffers;
- gMultiuseListMenuTemplate.maxShowed = gUnknown_0203CE54->numShownItems[pocketId];
+ gMultiuseListMenuTemplate.maxShowed = gBagMenu->numShownItems[pocketId];
}
-void get_name(s8 *dest, u16 itemId)
+void GetItemName(s8 *dest, u16 itemId)
{
- switch (gUnknown_0203CE58.pocket)
+ switch (gBagPositionStruct.pocket)
{
case TMHM_POCKET:
StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(itemId)]);
@@ -810,27 +810,27 @@ void get_name(s8 *dest, u16 itemId)
}
}
-void bag_menu_change_item_callback(s32 a, bool8 b, struct ListMenu *unused)
+void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu *unused)
{
if (b != 1)
{
PlaySE(SE_SELECT);
ShakeBagVisual();
}
- if (gUnknown_0203CE54->unk81A == 0xFF)
+ if (gBagMenu->unk81A == 0xFF)
{
- RemoveBagItemIconSprite(1 ^ gUnknown_0203CE54->unk81B_1);
+ RemoveBagItemIconSprite(1 ^ gBagMenu->unk81B_1);
if (a != -2)
- AddBagItemIconSprite(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a), gUnknown_0203CE54->unk81B_1);
+ AddBagItemIconSprite(BagGetItemIdByPocketPosition(gBagPositionStruct.pocket + 1, a), gBagMenu->unk81B_1);
else
- AddBagItemIconSprite(-1, gUnknown_0203CE54->unk81B_1);
- gUnknown_0203CE54->unk81B_1 ^= 1;
- if (!gUnknown_0203CE54->unk81B_3)
- bag_menu_print_description_box_text(a);
+ AddBagItemIconSprite(-1, gBagMenu->unk81B_1);
+ gBagMenu->unk81B_1 ^= 1;
+ if (!gBagMenu->unk81B_3)
+ BagMenu_PrintDescription(a);
}
}
-void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a)
+void PrintItemQuantityPlusGFX(u8 rboxId, s32 item_index_in_pocket, u8 a)
{
u16 itemId;
u16 itemQuantity;
@@ -838,30 +838,30 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a)
int offset;
if (item_index_in_pocket != -2)
{
- if (gUnknown_0203CE54->unk81A != 0xFF)
+ if (gBagMenu->unk81A != 0xFF)
{
- if (gUnknown_0203CE54->unk81A == (u8)item_index_in_pocket)
- bag_menu_print_cursor(a, 2);
+ if (gBagMenu->unk81A == (u8)item_index_in_pocket)
+ BagMenu_PrintCursor(a, 2);
else
- bag_menu_print_cursor(a, -1);
+ BagMenu_PrintCursor(a, -1);
}
- itemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, item_index_in_pocket);
- itemQuantity = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, item_index_in_pocket);
+ itemId = BagGetItemIdByPocketPosition(gBagPositionStruct.pocket + 1, item_index_in_pocket);
+ itemQuantity = BagGetQuantityByPocketPosition(gBagPositionStruct.pocket + 1, item_index_in_pocket);
if (itemId >= ITEM_HM01 && itemId <= ITEM_HM08)
BlitBitmapToWindow(rboxId, gBagMenuHMIcon_Gfx, 8, a - 1, 16, 16);
- if (gUnknown_0203CE58.pocket == BERRIES_POCKET)
+ if (gBagPositionStruct.pocket == BERRIES_POCKET)
{
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, 1, 3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
offset = GetStringRightAlignXOffset(7, gStringVar4, 0x77);
- bag_menu_print(rboxId, 7, gStringVar4, offset, a, 0, 0, -1, 0);
+ BagMenu_Print(rboxId, 7, gStringVar4, offset, a, 0, 0, -1, 0);
}
- else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && (unique = ItemId_GetImportance(itemId)) == FALSE)
+ else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && (unique = ItemId_GetImportance(itemId)) == FALSE)
{
ConvertIntToDecimalStringN(gStringVar1, itemQuantity, 1, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
offset = GetStringRightAlignXOffset(7, gStringVar4, 0x77);
- bag_menu_print(rboxId, 7, gStringVar4, offset, a, unique, unique, -1, unique);
+ BagMenu_Print(rboxId, 7, gStringVar4, offset, a, unique, unique, -1, unique);
}
else
{
@@ -871,96 +871,96 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a)
}
}
-void bag_menu_print_description_box_text(int a)
+void BagMenu_PrintDescription(int a)
{
const u8 *str;
if (a != -2)
{
- str = ItemId_GetDescription(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, a));
+ str = ItemId_GetDescription(BagGetItemIdByPocketPosition(gBagPositionStruct.pocket + 1, a));
}
else
{
- StringCopy(gStringVar1, gReturnToXStringsTable[gUnknown_0203CE58.location]);
+ StringCopy(gStringVar1, gReturnToXStringsTable[gBagPositionStruct.location]);
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
str = gStringVar4;
}
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, str, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, str, 3, 1, 0, 0, 0, 0);
}
-void bag_menu_print_cursor_(u8 a, u8 b)
+void BagMenu_PrintCursor_(u8 a, u8 b)
{
- bag_menu_print_cursor(ListMenuGetYCoordForPrintingArrowCursor(a), b);
+ BagMenu_PrintCursor(ListMenuGetYCoordForPrintingArrowCursor(a), b);
}
-void bag_menu_print_cursor(u8 a, u8 b)
+void BagMenu_PrintCursor(u8 a, u8 b)
{
if (b == 0xFF)
FillWindowPixelRect(0, PIXEL_FILL(0), 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
- bag_menu_print(0, 1, gText_SelectorArrow2, 0, a, 0, 0, 0, b);
+ BagMenu_Print(0, 1, gText_SelectorArrow2, 0, a, 0, 0, 0, b);
}
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void)
{
- if (gUnknown_0203CE54->unk81E == 0xFF)
- gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->numShownItems[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
+ if (gBagMenu->unk81E == 0xFF)
+ gBagMenu->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gBagMenu->numItemStacks[gBagPositionStruct.pocket] - gBagMenu->numShownItems[gBagPositionStruct.pocket], 0x6E, 0x6E, &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket]);
}
void sub_81AB824(void)
{
- if (gUnknown_0203CE54->unk81E != 0xFF)
+ if (gBagMenu->unk81E != 0xFF)
{
- RemoveScrollIndicatorArrowPair(gUnknown_0203CE54->unk81E);
- gUnknown_0203CE54->unk81E = 0xFF;
+ RemoveScrollIndicatorArrowPair(gBagMenu->unk81E);
+ gBagMenu->unk81E = 0xFF;
}
sub_81AB89C();
}
void bag_menu_add_list_scroll_arrow_indicators_maybe(void)
{
- if (gUnknown_0203CE54->unk81B != 1 && gUnknown_0203CE54->unk81F == 0xFF)
- gUnknown_0203CE54->unk81F = AddScrollIndicatorArrowPair(&gUnknown_08614094, &gUnknown_0203CE58.unk6);
+ if (gBagMenu->unk81B != 1 && gBagMenu->unk81F == 0xFF)
+ gBagMenu->unk81F = AddScrollIndicatorArrowPair(&gBagScrollArrowsTemplate, &gBagPositionStruct.unk6);
}
void sub_81AB89C(void)
{
- if (gUnknown_0203CE54->unk81F != 0xFF)
+ if (gBagMenu->unk81F != 0xFF)
{
- RemoveScrollIndicatorArrowPair(gUnknown_0203CE54->unk81F);
- gUnknown_0203CE54->unk81F = 0xFF;
+ RemoveScrollIndicatorArrowPair(gBagMenu->unk81F);
+ gBagMenu->unk81F = 0xFF;
}
}
-void free_bag_item_list_buffers(void)
+void FreeBagItemListBuffers(void)
{
Free(sListBuffer2);
Free(sListBuffer1);
FreeAllWindowBuffers();
- Free(gUnknown_0203CE54);
+ Free(gBagMenu);
}
void unknown_ItemMenu_Confirm(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- gTasks[taskId].func = task_close_bag_menu_2;
+ gTasks[taskId].func = TaskCloseBagMenu_2;
}
-void task_close_bag_menu_2(u8 taskId)
+void TaskCloseBagMenu_2(u8 taskId)
{
s16* data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
- if (gUnknown_0203CE54->mainCallback2 != 0)
- SetMainCallback2(gUnknown_0203CE54->mainCallback2);
+ DestroyListMenuTask(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
+ if (gBagMenu->mainCallback2 != 0)
+ SetMainCallback2(gBagMenu->mainCallback2);
else
- SetMainCallback2(gUnknown_0203CE58.bagCallback);
+ SetMainCallback2(gBagPositionStruct.bagCallback);
sub_81AB824();
ResetSpriteData();
FreeAllSpritePalettes();
- free_bag_item_list_buffers();
+ FreeBagItemListBuffers();
DestroyTask(taskId);
}
}
@@ -979,17 +979,17 @@ void sub_81AB9A8(u8 pocketId)
CompactItemsInBagPocket(pocket);
break;
}
- gUnknown_0203CE54->numItemStacks[pocketId] = 0;
+ gBagMenu->numItemStacks[pocketId] = 0;
for (i = 0; i < pocket->capacity && pocket->itemSlots[i].itemId; i++)
- gUnknown_0203CE54->numItemStacks[pocketId]++;
+ gBagMenu->numItemStacks[pocketId]++;
- if (!gUnknown_0203CE54->hideCloseBagText)
- gUnknown_0203CE54->numItemStacks[pocketId]++;
+ if (!gBagMenu->hideCloseBagText)
+ gBagMenu->numItemStacks[pocketId]++;
- if (gUnknown_0203CE54->numItemStacks[pocketId] > 8)
- gUnknown_0203CE54->numShownItems[pocketId] = 8;
+ if (gBagMenu->numItemStacks[pocketId] > 8)
+ gBagMenu->numShownItems[pocketId] = 8;
else
- gUnknown_0203CE54->numShownItems[pocketId] = gUnknown_0203CE54->numItemStacks[pocketId];
+ gBagMenu->numShownItems[pocketId] = gBagMenu->numItemStacks[pocketId];
}
void sub_81ABA6C(void)
@@ -1001,7 +1001,7 @@ void sub_81ABA6C(void)
void SetInitialScrollAndCursorPositions(u8 pocketId)
{
- sub_812225C(&gUnknown_0203CE58.scrollPosition[pocketId], &gUnknown_0203CE58.cursorPosition[pocketId], gUnknown_0203CE54->numShownItems[pocketId], gUnknown_0203CE54->numItemStacks[pocketId]);
+ sub_812225C(&gBagPositionStruct.scrollPosition[pocketId], &gBagPositionStruct.cursorPosition[pocketId], gBagMenu->numShownItems[pocketId], gBagMenu->numItemStacks[pocketId]);
}
static void SetPocketListPositions(void)
@@ -1015,12 +1015,12 @@ void sub_81ABAE0(void)
{
u8 i;
for (i = 0; i < POCKETS_COUNT; i++)
- sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->numShownItems[i], gUnknown_0203CE54->numItemStacks[i], 8);
+ sub_8122298(&gBagPositionStruct.scrollPosition[i], &gBagPositionStruct.cursorPosition[i], gBagMenu->numShownItems[i], gBagMenu->numItemStacks[i], 8);
}
u8 GetItemListPosition(u8 pocketId)
{
- return gUnknown_0203CE58.scrollPosition[pocketId] + gUnknown_0203CE58.cursorPosition[pocketId];
+ return gBagPositionStruct.scrollPosition[pocketId] + gBagPositionStruct.cursorPosition[pocketId];
}
void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId))
@@ -1033,16 +1033,16 @@ void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u
schedule_bg_copy_tilemap_to_vram(1);
}
-void bag_menu_inits_lists_menu(u8 taskId)
+void BagMenu_InitListsMenu(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
bag_menu_RemoveBagItem_message_window(4);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gUnknown_0203CE58.pocket);
- SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ sub_81AB9A8(gBagPositionStruct.pocket);
+ SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
set_callback3_to_bag(taskId);
@@ -1050,12 +1050,12 @@ void bag_menu_inits_lists_menu(u8 taskId)
void sub_81ABC3C(u8 a)
{
- sub_81ABC54(bag_menu_add_window(a), 1);
+ PrintItemDepositAmount(BagMenu_AddWindow(a), 1);
}
-void sub_81ABC54(u8 a, s16 b)
+void PrintItemDepositAmount(u8 a, s16 b)
{
- u8 r3 = (gUnknown_0203CE58.pocket == BERRIES_POCKET) ? 3 : 2;
+ u8 r3 = (gBagPositionStruct.pocket == BERRIES_POCKET) ? 3 : 2;
ConvertIntToDecimalStringN(gStringVar1, b, 2, r3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(a, 1, gStringVar4, GetStringCenterAlignXOffset(1, gStringVar4, 0x28), 2, 0, 0);
@@ -1063,7 +1063,7 @@ void sub_81ABC54(u8 a, s16 b)
void sub_81ABCC0(int a, int b, int c)
{
- u8 r3 = (gUnknown_0203CE58.pocket == BERRIES_POCKET) ? 3 : 2;
+ u8 r3 = (gBagPositionStruct.pocket == BERRIES_POCKET) ? 3 : 2;
ConvertIntToDecimalStringN(gStringVar1, b, 2, r3);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(a, 1, gStringVar4, 0, 1, -1, 0);
@@ -1073,8 +1073,8 @@ void sub_81ABCC0(int a, int b, int c)
void Task_BagMenu(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
u16 select;
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
@@ -1092,10 +1092,10 @@ void Task_BagMenu(u8 taskId)
if (sub_81AC2C0() == 1)
{
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
- if ((*scrollPos + *cursorPos) != gUnknown_0203CE54->numItemStacks[gUnknown_0203CE58.pocket] - 1)
+ if ((*scrollPos + *cursorPos) != gBagMenu->numItemStacks[gBagPositionStruct.pocket] - 1)
{
PlaySE(SE_SELECT);
- bag_menu_swap_items(taskId);
+ BagMenu_SwapItems(taskId);
}
}
return;
@@ -1109,7 +1109,7 @@ void Task_BagMenu(u8 taskId)
case LIST_NOTHING_CHOSEN:
break;
case LIST_CANCEL:
- if (gUnknown_0203CE58.location == 5)
+ if (gBagPositionStruct.location == 5)
{
PlaySE(SE_HAZURE);
break;
@@ -1121,11 +1121,11 @@ void Task_BagMenu(u8 taskId)
default: // A_BUTTON
PlaySE(SE_SELECT);
sub_81AB824();
- bag_menu_print_cursor_(data[0], 2);
+ BagMenu_PrintCursor_(data[0], 2);
data[1] = listPosition;
- data[2] = BagGetQuantityByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
- gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, listPosition);
- gUnknown_08614054[gUnknown_0203CE58.location](taskId);
+ data[2] = BagGetQuantityByPocketPosition(gBagPositionStruct.pocket + 1, listPosition);
+ gSpecialVar_ItemId = BagGetItemIdByPocketPosition(gBagPositionStruct.pocket + 1, listPosition);
+ gUnknown_08614054[gBagPositionStruct.location](taskId);
break;
}
}
@@ -1146,7 +1146,7 @@ void set_callback3_to_bag(u8 taskId)
u8 GetSwitchBagPocketDirection(void)
{
u8 LRKeys;
- if (gUnknown_0203CE54->unk81B != 0)
+ if (gBagMenu->unk81B != 0)
return 0;
LRKeys = GetLRKeysState();
if ((gMain.newKeys & DPAD_LEFT) || LRKeys == 1)
@@ -1184,25 +1184,25 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3)
{
ClearWindowTilemap(0);
ClearWindowTilemap(1);
- DestroyListMenuTask(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ DestroyListMenuTask(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
schedule_bg_copy_tilemap_to_vram(0);
- gSprites[gUnknown_0203CE54->spriteId[2 + (gUnknown_0203CE54->unk81B_1 ^ 1)]].invisible = TRUE;
+ gSprites[gBagMenu->spriteId[2 + (gBagMenu->unk81B_1 ^ 1)]].invisible = TRUE;
sub_81AB824();
}
- pocketId = gUnknown_0203CE58.pocket;
+ pocketId = gBagPositionStruct.pocket;
ChangeBagPocketId(&pocketId, deltaBagPocketId);
if (deltaBagPocketId == 1)
{
- bag_menu_print_pocket_names(gPocketNamesStringsTable[gUnknown_0203CE58.pocket], gPocketNamesStringsTable[pocketId]);
- bag_menu_copy_pocket_name_to_window(0);
+ BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], gPocketNamesStringsTable[pocketId]);
+ BagMenu_CopyPocketNameToWindow(0);
}
else
{
- bag_menu_print_pocket_names(gPocketNamesStringsTable[pocketId], gPocketNamesStringsTable[gUnknown_0203CE58.pocket]);
- bag_menu_copy_pocket_name_to_window(8);
+ BagMenu_PrintPocketNames(gPocketNamesStringsTable[pocketId], gPocketNamesStringsTable[gBagPositionStruct.pocket]);
+ BagMenu_CopyPocketNameToWindow(8);
}
- bag_menu_draw_pocket_indicator_square(gUnknown_0203CE58.pocket, 0);
- bag_menu_draw_pocket_indicator_square(pocketId, 1);
+ BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 0);
+ BagMenu_DrawPocketIndicatorSquare(pocketId, 1);
FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16);
schedule_bg_copy_tilemap_to_vram(2);
SetBagVisualPocketId(pocketId, 1);
@@ -1220,12 +1220,12 @@ void sub_81AC10C(u8 taskId)
switch (GetSwitchBagPocketDirection())
{
case 1:
- ChangeBagPocketId(&gUnknown_0203CE58.pocket, data[11]);
+ ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
SwitchTaskToFollowupFunc(taskId);
SwitchBagPocket(taskId, -1, 1);
return;
case 2:
- ChangeBagPocketId(&gUnknown_0203CE58.pocket, data[11]);
+ ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
SwitchTaskToFollowupFunc(taskId);
SwitchBagPocket(taskId, 1, 1);
return;
@@ -1238,17 +1238,17 @@ void sub_81AC10C(u8 taskId)
if (!(++data[12] & 1))
{
if (data[11] == 1)
- bag_menu_copy_pocket_name_to_window((u8)(data[12] >> 1));
+ BagMenu_CopyPocketNameToWindow((u8)(data[12] >> 1));
else
- bag_menu_copy_pocket_name_to_window((u8)(8 - (data[12] >> 1)));
+ BagMenu_CopyPocketNameToWindow((u8)(8 - (data[12] >> 1)));
}
if (data[12] == 16)
data[13]++;
break;
case 1:
- ChangeBagPocketId(&gUnknown_0203CE58.pocket, data[11]);
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
+ data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
PutWindowTilemap(1);
PutWindowTilemap(2);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1264,7 +1264,7 @@ void sub_81AC23C(u8 a)
schedule_bg_copy_tilemap_to_vram(2);
}
-void bag_menu_draw_pocket_indicator_square(u8 x, u8 is_current_bag)
+void BagMenu_DrawPocketIndicatorSquare(u8 x, u8 is_current_bag)
{
if (is_current_bag == 0)
FillBgTilemapBufferRect_Palette0(2, 0x1017, x + 5, 3, 1, 1);
@@ -1275,29 +1275,29 @@ void bag_menu_draw_pocket_indicator_square(u8 x, u8 is_current_bag)
bool8 sub_81AC2C0(void)
{
- if (gUnknown_0203CE58.location <= 1)
+ if (gBagPositionStruct.location <= 1)
{
- u8 temp = gUnknown_0203CE58.pocket - 2;
+ u8 temp = gBagPositionStruct.pocket - 2;
if (temp > 1)
return TRUE;
}
return FALSE;
}
-void bag_menu_swap_items(u8 taskId)
+void BagMenu_SwapItems(u8 taskId)
{
s16* data = gTasks[taskId].data;
ListMenuSetUnkIndicatorsStructField(data[0], 16, 1);
- data[1] = gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket] + gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
- gUnknown_0203CE54->unk81A = data[1];
- CopyItemName(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, data[1]), gStringVar1);
+ data[1] = gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket] + gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
+ gBagMenu->unk81A = data[1];
+ CopyItemName(BagGetItemIdByPocketPosition(gBagPositionStruct.pocket + 1, data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_80D4FEC(data[1]);
sub_81AB89C();
- bag_menu_print_cursor_(data[0], 2);
+ BagMenu_PrintCursor_(data[0], 2);
gTasks[taskId].func = sub_81AC3C0;
}
@@ -1311,15 +1311,15 @@ void sub_81AC3C0(u8 taskId)
if (gMain.newKeys & SELECT_BUTTON)
{
PlaySE(SE_SELECT);
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ ListMenuGetScrollAndRow(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
sub_81AC498(taskId);
}
else
{
input = ListMenu_ProcessInput(data[0]);
- ListMenuGetScrollAndRow(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ ListMenuGetScrollAndRow(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
sub_80D4FC8(0);
- sub_80D4FEC(gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
+ sub_80D4FEC(gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
switch (input)
{
case LIST_NOTHING_CHOSEN:
@@ -1342,20 +1342,20 @@ void sub_81AC3C0(u8 taskId)
void sub_81AC498(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
u16 realPos = (*scrollPos + *cursorPos);
if (data[1] == realPos || data[1] == (realPos - 1))
sub_81AC590(taskId);
else
{
- MoveItemSlotInList(gBagPockets[gUnknown_0203CE58.pocket].itemSlots, data[1], realPos);
- gUnknown_0203CE54->unk81A = -1;
+ MoveItemSlotInList(gBagPockets[gBagPositionStruct.pocket].itemSlots, data[1], realPos);
+ gBagMenu->unk81A = -1;
DestroyListMenuTask(data[0], scrollPos, cursorPos);
if (data[1] < realPos)
- gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]--;
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]--;
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
sub_80D4FC8(1);
bag_menu_add_list_scroll_arrow_indicators_maybe();
@@ -1366,14 +1366,14 @@ void sub_81AC498(u8 taskId)
void sub_81AC590(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
- gUnknown_0203CE54->unk81A = -1;
+ gBagMenu->unk81A = -1;
DestroyListMenuTask(data[0], scrollPos, cursorPos);
if (data[1] < (*scrollPos + *cursorPos))
- gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]--;
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]--;
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
sub_80D4FC8(1);
bag_menu_add_list_scroll_arrow_indicators_maybe();
@@ -1382,59 +1382,59 @@ void sub_81AC590(u8 taskId)
void sub_81AC644(u8 unused)
{
- switch (gUnknown_0203CE58.location - 1)
+ switch (gBagPositionStruct.location - 1)
{
case 0:
case 9:
if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
{
- gUnknown_0203CE54->unk820 = gUnknown_08614042;
- gUnknown_0203CE54->unk828 = 2;
+ gBagMenu->unk820 = gUnknown_08614042;
+ gBagMenu->unk828 = 2;
}
else
{
- gUnknown_0203CE54->unk820 = &gUnknown_08614046;
- gUnknown_0203CE54->unk828 = 1;
+ gBagMenu->unk820 = &gUnknown_08614046;
+ gBagMenu->unk828 = 1;
}
break;
case 4:
- gUnknown_0203CE54->unk820 = gUnknown_08614047;
- gUnknown_0203CE54->unk828 = 4;
+ gBagMenu->unk820 = gUnknown_08614047;
+ gBagMenu->unk828 = 4;
break;
case 8:
if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY)
{
- gUnknown_0203CE54->unk820 = gUnknown_0861404B;
- gUnknown_0203CE54->unk828 = 2;
+ gBagMenu->unk820 = gUnknown_0861404B;
+ gBagMenu->unk828 = 2;
}
else
{
- gUnknown_0203CE54->unk820 = &gUnknown_08614046;
- gUnknown_0203CE54->unk828 = 1;
+ gBagMenu->unk820 = &gUnknown_08614046;
+ gBagMenu->unk828 = 1;
}
break;
case 6:
if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY)
{
- gUnknown_0203CE54->unk820 = gUnknown_0861404D;
- gUnknown_0203CE54->unk828 = 2;
+ gBagMenu->unk820 = gUnknown_0861404D;
+ gBagMenu->unk828 = 2;
}
else
{
- gUnknown_0203CE54->unk820 = &gUnknown_08614046;
- gUnknown_0203CE54->unk828 = 1;
+ gBagMenu->unk820 = &gUnknown_08614046;
+ gBagMenu->unk828 = 1;
}
break;
case 7:
if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY)
{
- gUnknown_0203CE54->unk820 = gUnknown_0861404F;
- gUnknown_0203CE54->unk828 = 2;
+ gBagMenu->unk820 = gUnknown_0861404F;
+ gBagMenu->unk828 = 2;
}
else
{
- gUnknown_0203CE54->unk820 = &gUnknown_08614046;
- gUnknown_0203CE54->unk828 = 1;
+ gBagMenu->unk820 = &gUnknown_08614046;
+ gBagMenu->unk828 = 1;
}
break;
case 1:
@@ -1444,56 +1444,56 @@ void sub_81AC644(u8 unused)
default:
if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
{
- if (gUnknown_0203CE58.pocket == KEYITEMS_POCKET || !sub_8122148(gSpecialVar_ItemId))
+ if (gBagPositionStruct.pocket == KEYITEMS_POCKET || !sub_8122148(gSpecialVar_ItemId))
{
- gUnknown_0203CE54->unk820 = &gUnknown_08614046;
- gUnknown_0203CE54->unk828 = 1;
+ gBagMenu->unk820 = &gUnknown_08614046;
+ gBagMenu->unk828 = 1;
}
else
{
- gUnknown_0203CE54->unk820 = gUnknown_08614044;
- gUnknown_0203CE54->unk828 = 2;
+ gBagMenu->unk820 = gUnknown_08614044;
+ gBagMenu->unk828 = 2;
}
}
else
{
- switch (gUnknown_0203CE58.pocket)
+ switch (gBagPositionStruct.pocket)
{
case ITEMS_POCKET:
- gUnknown_0203CE54->unk820 = &gUnknown_0203CE54->unk824;
- gUnknown_0203CE54->unk828 = 4;
- memcpy(&gUnknown_0203CE54->unk824, &gUnknown_0861402C, 4);
+ gBagMenu->unk820 = &gBagMenu->unk824;
+ gBagMenu->unk828 = 4;
+ memcpy(&gBagMenu->unk824, &gUnknown_0861402C, 4);
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
- gUnknown_0203CE54->unk824 = 6;
+ gBagMenu->unk824 = 6;
break;
case KEYITEMS_POCKET:
- gUnknown_0203CE54->unk820 = &gUnknown_0203CE54->unk824;
- gUnknown_0203CE54->unk828 = 4;
- memcpy(&gUnknown_0203CE54->unk824, &gUnknown_08614030, 4);
+ gBagMenu->unk820 = &gBagMenu->unk824;
+ gBagMenu->unk828 = 4;
+ memcpy(&gBagMenu->unk824, &gUnknown_08614030, 4);
if (gSaveBlock1Ptr->registeredItem == gSpecialVar_ItemId)
- gUnknown_0203CE54->unk825 = 8;
+ gBagMenu->unk825 = 8;
if (gSpecialVar_ItemId == ITEM_MACH_BIKE || gSpecialVar_ItemId == ITEM_ACRO_BIKE)
{
if (TestPlayerAvatarFlags(6))
- gUnknown_0203CE54->unk824 = 7;
+ gBagMenu->unk824 = 7;
}
break;
case BALLS_POCKET:
- gUnknown_0203CE54->unk820 = gUnknown_08614034;
- gUnknown_0203CE54->unk828 = 4;
+ gBagMenu->unk820 = gUnknown_08614034;
+ gBagMenu->unk828 = 4;
break;
case TMHM_POCKET:
- gUnknown_0203CE54->unk820 = gUnknown_08614038;
- gUnknown_0203CE54->unk828 = 4;
+ gBagMenu->unk820 = gUnknown_08614038;
+ gBagMenu->unk828 = 4;
break;
case BERRIES_POCKET:
- gUnknown_0203CE54->unk820 = gUnknown_0861403C;
- gUnknown_0203CE54->unk828 = 6;
+ gBagMenu->unk820 = gUnknown_0861403C;
+ gBagMenu->unk828 = 6;
break;
}
}
}
- if (gUnknown_0203CE58.pocket == TMHM_POCKET)
+ if (gBagPositionStruct.pocket == TMHM_POCKET)
{
ClearWindowTilemap(1);
PrintTMHMMoveData(gSpecialVar_ItemId);
@@ -1506,34 +1506,34 @@ void sub_81AC644(u8 unused)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
- }
- if (gUnknown_0203CE54->unk828 == 1)
- sub_81ACAF8(bag_menu_add_window(0));
- else if (gUnknown_0203CE54->unk828 == 2)
- sub_81ACAF8(bag_menu_add_window(1));
- else if (gUnknown_0203CE54->unk828 == 4)
- sub_81ACB54(bag_menu_add_window(2), 2, 2);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ }
+ if (gBagMenu->unk828 == 1)
+ sub_81ACAF8(BagMenu_AddWindow(0));
+ else if (gBagMenu->unk828 == 2)
+ sub_81ACAF8(BagMenu_AddWindow(1));
+ else if (gBagMenu->unk828 == 4)
+ sub_81ACB54(BagMenu_AddWindow(2), 2, 2);
else
- sub_81ACB54(bag_menu_add_window(3), 2, 3);
+ sub_81ACB54(BagMenu_AddWindow(3), 2, 3);
}
void sub_81ACAF8(u8 a)
{
- AddItemMenuActionTextPrinters(a, 7, 8, 1, 0, 16, gUnknown_0203CE54->unk828, gUnknown_08613FB4, gUnknown_0203CE54->unk820);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(a, gUnknown_0203CE54->unk828, 0);
+ AddItemMenuActionTextPrinters(a, 7, 8, 1, 0, 16, gBagMenu->unk828, sItemMenuActions, gBagMenu->unk820);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(a, gBagMenu->unk828, 0);
}
void sub_81ACB54(u8 a, u8 b, u8 c)
{
- sub_8198DBC(a, 7, 8, 1, 0x38, b, c, gUnknown_08613FB4, gUnknown_0203CE54->unk820);
+ sub_8198DBC(a, 7, 8, 1, 0x38, b, c, sItemMenuActions, gBagMenu->unk820);
sub_8199944(a, 0x38, b, c, 0);
}
void unknown_item_menu_type(u8 taskId)
{
sub_81AC644(taskId);
- if (gUnknown_0203CE54->unk828 <= 2)
+ if (gBagMenu->unk828 <= 2)
gTasks[taskId].func = Task_HandleInBattleItemMenuInput;
else
gTasks[taskId].func = Task_HandleOutOfBattleItemMenuInput;
@@ -1550,11 +1550,11 @@ void Task_HandleInBattleItemMenuInput(u8 taskId)
break;
case MENU_B_PRESSED:
PlaySE(SE_SELECT);
- gUnknown_08613FB4[4].func.void_u8(taskId);
+ sItemMenuActions[4].func.void_u8(taskId);
break;
default:
PlaySE(SE_SELECT);
- gUnknown_08613FB4[gUnknown_0203CE54->unk820[r4]].func.void_u8(taskId);
+ sItemMenuActions[gBagMenu->unk820[r4]].func.void_u8(taskId);
break;
}
}
@@ -1575,7 +1575,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (cursorPos < (gUnknown_0203CE54->unk828 - 2) && sub_81ACDFC(cursorPos + 2))
+ if (cursorPos < (gBagMenu->unk828 - 2) && sub_81ACDFC(cursorPos + 2))
{
PlaySE(SE_SELECT);
sub_8199134(0, 1);
@@ -1600,12 +1600,12 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- gUnknown_08613FB4[gUnknown_0203CE54->unk820[cursorPos]].func.void_u8(taskId);
+ sItemMenuActions[gBagMenu->unk820[cursorPos]].func.void_u8(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- gUnknown_08613FB4[4].func.void_u8(taskId);
+ sItemMenuActions[4].func.void_u8(taskId);
}
}
}
@@ -1614,41 +1614,41 @@ bool8 sub_81ACDFC(s8 a)
{
if (a < 0)
return FALSE;
- if (a > gUnknown_0203CE54->unk828)
+ if (a > gBagMenu->unk828)
return FALSE;
- if (gUnknown_0203CE54->unk820[a] == 14)
+ if (gBagMenu->unk820[a] == 14)
return FALSE;
return TRUE;
}
-void bag_menu_remove_some_window(void)
+void BagMenu_RemoveSomeWindow(void)
{
- if (gUnknown_0203CE54->unk828 == 1)
- bag_menu_remove_window(0);
- else if (gUnknown_0203CE54->unk828 == 2)
+ if (gBagMenu->unk828 == 1)
+ BagMenu_RemoveWindow(0);
+ else if (gBagMenu->unk828 == 2)
{
- bag_menu_remove_window(1);
+ BagMenu_RemoveWindow(1);
}
- else if (gUnknown_0203CE54->unk828 == 4)
+ else if (gBagMenu->unk828 == 4)
{
- bag_menu_remove_window(2);
+ BagMenu_RemoveWindow(2);
}
else
- bag_menu_remove_window(3);
+ BagMenu_RemoveWindow(3);
}
void ItemMenu_UseOutOfBattle(u8 taskId)
{
if (ItemId_GetFieldFunc(gSpecialVar_ItemId))
{
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
- bag_menu_print_there_is_no_pokemon(taskId);
+ BagMenu_PrintThereIsNoPokemon(taskId);
else
{
FillWindowPixelBuffer(1, PIXEL_FILL(0));
schedule_bg_copy_tilemap_to_vram(0);
- if (gUnknown_0203CE58.pocket != BERRIES_POCKET)
+ if (gBagPositionStruct.pocket != BERRIES_POCKET)
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
else
sub_80FDD10(taskId);
@@ -1660,24 +1660,24 @@ void ItemMenu_Toss(u8 taskId)
{
s16* data = gTasks[taskId].data;
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
data[8] = 1;
if (data[2] == 1)
{
- BagMenuConfirmToss(taskId);
+ BagMenu_TossItems(taskId);
}
else
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = Task_ChooseHowManyToToss;
}
}
-void BagMenuConfirmToss(u8 taskId)
+void BagMenu_TossItems(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -1685,16 +1685,16 @@ void BagMenuConfirmToss(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
- bag_menu_yes_no(taskId, 5, &gUnknown_08614084);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_YesNo(taskId, 5, &sYesNoTossFunctions);
}
-void BagMenuCancelToss(u8 taskId)
+void BagMenu_CancelToss(u8 taskId)
{
s16* data = gTasks[taskId].data;
- bag_menu_print_description_box_text(data[1]);
- bag_menu_print_cursor_(data[0], 0);
+ BagMenu_PrintDescription(data[1]);
+ BagMenu_PrintCursor_(data[0], 0);
set_callback3_to_bag(taskId);
}
@@ -1704,23 +1704,23 @@ void Task_ChooseHowManyToToss(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
{
- sub_81ABC54(gUnknown_0203CE54->unk817, data[8]);
+ PrintItemDepositAmount(gBagMenu->unk817, data[8]);
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_remove_window(7);
- BagMenuConfirmToss(taskId);
+ BagMenu_RemoveWindow(7);
+ BagMenu_TossItems(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_remove_window(7);
- BagMenuCancelToss(taskId);
+ BagMenu_RemoveWindow(7);
+ BagMenu_CancelToss(taskId);
}
}
-void BagMenuActuallyToss(u8 taskId)
+void BagMenu_ConfirmToss(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -1728,24 +1728,24 @@ void BagMenuActuallyToss(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
}
void Task_ActuallyToss(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gUnknown_0203CE58.pocket);
- SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ sub_81AB9A8(gBagPositionStruct.pocket);
+ SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
set_callback3_to_bag(taskId);
@@ -1755,15 +1755,15 @@ void Task_ActuallyToss(u8 taskId)
void ItemMenu_Register(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
if (gSaveBlock1Ptr->registeredItem == gSpecialVar_ItemId)
gSaveBlock1Ptr->registeredItem = 0;
else
gSaveBlock1Ptr->registeredItem = gSpecialVar_ItemId;
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
schedule_bg_copy_tilemap_to_vram(0);
ItemMenu_Cancel(taskId);
@@ -1771,7 +1771,7 @@ void ItemMenu_Register(u8 taskId)
void ItemMenu_Give(u8 taskId)
{
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
{
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
@@ -1779,25 +1779,25 @@ void ItemMenu_Give(u8 taskId)
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{
if (CalculatePlayerPartyCount() == 0)
- bag_menu_print_there_is_no_pokemon(taskId);
+ BagMenu_PrintThereIsNoPokemon(taskId);
else
{
- gUnknown_0203CE54->mainCallback2 = sub_81B7F60;
+ gBagMenu->mainCallback2 = sub_81B7F60;
unknown_ItemMenu_Confirm(taskId);
}
}
else
{
- bag_menu_print_cant_be_held_msg(taskId);
+ BagMenu_PrintItemCantBeHeld(taskId);
}
}
-void bag_menu_print_there_is_no_pokemon(u8 taskId)
+void BagMenu_PrintThereIsNoPokemon(u8 taskId)
{
DisplayItemMessage(taskId, 1, gText_NoPokemon, sub_81AD350);
}
-void bag_menu_print_cant_be_held_msg(u8 taskId)
+void BagMenu_PrintItemCantBeHeld(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld);
@@ -1809,13 +1809,13 @@ void sub_81AD350(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_inits_lists_menu(taskId);
+ BagMenu_InitListsMenu(taskId);
}
}
void ItemMenu_CheckTag(u8 taskId)
{
- gUnknown_0203CE54->mainCallback2 = DoBerryTagScreen;
+ gBagMenu->mainCallback2 = DoBerryTagScreen;
unknown_ItemMenu_Confirm(taskId);
}
@@ -1823,11 +1823,11 @@ void ItemMenu_Cancel(u8 taskId)
{
s16* data = gTasks[taskId].data;
- bag_menu_remove_some_window();
- bag_menu_print_description_box_text(data[1]);
+ BagMenu_RemoveSomeWindow();
+ BagMenu_PrintDescription(data[1]);
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1);
- bag_menu_print_cursor_(data[0], 0);
+ BagMenu_PrintCursor_(data[0], 0);
set_callback3_to_bag(taskId);
}
@@ -1835,7 +1835,7 @@ void ItemMenu_UseInBattle(u8 taskId)
{
if (ItemId_GetBattleFunc(gSpecialVar_ItemId))
{
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
}
}
@@ -1857,13 +1857,13 @@ void item_menu_type_2(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeldHere);
DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD350);
}
- else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
{
unknown_ItemMenu_Confirm(taskId);
}
else
{
- bag_menu_print_cant_be_held_msg(taskId);
+ BagMenu_PrintItemCantBeHeld(taskId);
}
}
@@ -1871,10 +1871,10 @@ void item_menu_type_b(u8 taskId)
{
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
- else if (gUnknown_0203CE58.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
+ else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
gTasks[taskId].func = unknown_ItemMenu_Confirm;
else
- bag_menu_print_cant_be_held_msg(taskId);
+ BagMenu_PrintItemCantBeHeld(taskId);
}
bool8 UseRegisteredKeyItemOnField(void)
@@ -1905,7 +1905,7 @@ bool8 UseRegisteredKeyItemOnField(void)
return TRUE;
}
-void display_sell_item_ask_str(u8 taskId)
+void DisplaySellItemAskString(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -1913,7 +1913,7 @@ void display_sell_item_ask_str(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_CantBuyKeyItem);
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
}
else
{
@@ -1943,23 +1943,23 @@ void sub_81AD680(u8 taskId)
void sub_81AD6E4(u8 taskId)
{
- bag_menu_yes_no(taskId, 6, &gUnknown_0861408C);
+ BagMenu_YesNo(taskId, 6, &sYesNoSellItemFunctions);
}
-void sub_81AD6FC(u8 taskId)
+void BagMenu_CancelSell(u8 taskId)
{
s16* data = gTasks[taskId].data;
bag_menu_remove_money_window();
bag_menu_RemoveBagItem_message_window(4);
- bag_menu_print_cursor_(data[0], 0);
+ BagMenu_PrintCursor_(data[0], 0);
set_callback3_to_bag(taskId);
}
void sub_81AD730(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u8 windowId = bag_menu_add_window(8);
+ u8 windowId = BagMenu_AddWindow(8);
sub_81ABCC0(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
bag_menu_AddMoney_window();
@@ -1972,26 +1972,26 @@ void sub_81AD794(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
{
- sub_81ABCC0(gUnknown_0203CE54->unk818, data[8], (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
+ sub_81ABCC0(gBagMenu->unk818, data[8], (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_remove_window(8);
+ BagMenu_RemoveWindow(8);
sub_81AD680(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_print_cursor_(data[0], 0);
+ BagMenu_PrintCursor_(data[0], 0);
bag_menu_remove_money_window();
- bag_menu_remove_window(8);
+ BagMenu_RemoveWindow(8);
bag_menu_RemoveBagItem_message_window(4);
set_callback3_to_bag(taskId);
}
}
-void sub_81AD84C(u8 taskId)
+void BagMenu_ConfirmSell(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -2004,19 +2004,19 @@ void sub_81AD84C(u8 taskId)
void sub_81AD8C8(u8 taskId)
{
s16* data = gTasks[taskId].data;
- u16* scrollPos = &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket];
- u16* cursorPos = &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
+ u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
+ u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
PlaySE(SE_REGI);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gUnknown_0203CE58.pocket);
- SetInitialScrollAndCursorPositions(gUnknown_0203CE58.pocket);
- load_bag_item_list_buffers(gUnknown_0203CE58.pocket);
+ sub_81AB9A8(gBagPositionStruct.pocket);
+ SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
+ LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
- bag_menu_print_cursor_(data[0], 2);
- PrintMoneyAmountInMoneyBox(gUnknown_0203CE54->unk819, GetMoney(&gSaveBlock1Ptr->money), 0);
+ BagMenu_PrintCursor_(data[0], 2);
+ PrintMoneyAmountInMoneyBox(gBagMenu->unk819, GetMoney(&gSaveBlock1Ptr->money), 0);
gTasks[taskId].func = sub_81AD9C0;
}
@@ -2026,11 +2026,11 @@ void sub_81AD9C0(u8 taskId)
{
PlaySE(SE_SELECT);
bag_menu_remove_money_window();
- bag_menu_inits_lists_menu(taskId);
+ BagMenu_InitListsMenu(taskId);
}
}
-void display_deposit_item_ask_str(u8 taskId)
+void DisplayDepositItemAskString(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -2044,7 +2044,7 @@ void display_deposit_item_ask_str(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_DepositHowManyVar1);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = sub_81ADA7C;
}
@@ -2056,20 +2056,20 @@ void sub_81ADA7C(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
{
- sub_81ABC54(gUnknown_0203CE54->unk817, data[8]);
+ PrintItemDepositAmount(gBagMenu->unk817, data[8]);
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_remove_window(7);
+ BagMenu_RemoveWindow(7);
sub_81ADB14(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- bag_menu_print_description_box_text(data[1]);
- bag_menu_print_cursor_(data[0], 0);
- bag_menu_remove_window(7);
+ BagMenu_PrintDescription(data[1]);
+ BagMenu_PrintCursor_(data[0], 0);
+ BagMenu_RemoveWindow(7);
set_callback3_to_bag(taskId);
}
}
@@ -2081,7 +2081,7 @@ void sub_81ADB14(u8 taskId)
FillWindowPixelBuffer(1, PIXEL_FILL(0));
if (ItemId_GetImportance(gSpecialVar_ItemId))
{
- bag_menu_print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = sub_81ADC0C;
}
else if (AddPCItem(gSpecialVar_ItemId, data[8]) == TRUE)
@@ -2089,12 +2089,12 @@ void sub_81ADB14(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_DepositedVar2Var1s);
- bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
}
else
{
- bag_menu_print(1, 1, gText_NoRoomForItems, 3, 1, 0, 0, 0, 0);
+ BagMenu_Print(1, 1, gText_NoRoomForItems, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = sub_81ADC0C;
}
}
@@ -2106,15 +2106,15 @@ void sub_81ADC0C(u8 taskId)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
- bag_menu_print_description_box_text(data[1]);
- bag_menu_print_cursor_(data[0], 0);
+ BagMenu_PrintDescription(data[1]);
+ BagMenu_PrintCursor_(data[0], 0);
set_callback3_to_bag(taskId);
}
}
bool8 IsWallysBag(void)
{
- if (gUnknown_0203CE58.location == 10)
+ if (gBagPositionStruct.location == 10)
return TRUE;
return FALSE;
}
@@ -2126,11 +2126,11 @@ void PrepareBagForWallyTutorial(void)
gUnknown_0203CE80 = AllocZeroed(sizeof(struct TempWallyStruct));
memcpy(gUnknown_0203CE80->bagPocket_Items, gSaveBlock1Ptr->bagPocket_Items, sizeof(gSaveBlock1Ptr->bagPocket_Items));
memcpy(gUnknown_0203CE80->bagPocket_PokeBalls, gSaveBlock1Ptr->bagPocket_PokeBalls, sizeof(gSaveBlock1Ptr->bagPocket_PokeBalls));
- gUnknown_0203CE80->pocket = gUnknown_0203CE58.pocket;
+ gUnknown_0203CE80->pocket = gBagPositionStruct.pocket;
for (i = 0; i <= 4; i++)
{
- gUnknown_0203CE80->cursorPosition[i] = gUnknown_0203CE58.cursorPosition[i];
- gUnknown_0203CE80->scrollPosition[i] = gUnknown_0203CE58.scrollPosition[i];
+ gUnknown_0203CE80->cursorPosition[i] = gBagPositionStruct.cursorPosition[i];
+ gUnknown_0203CE80->scrollPosition[i] = gBagPositionStruct.scrollPosition[i];
}
ClearItemSlots(gSaveBlock1Ptr->bagPocket_Items, 30);
ClearItemSlots(gSaveBlock1Ptr->bagPocket_PokeBalls, 16);
@@ -2143,11 +2143,11 @@ void RestoreBagAfterWallyTutorial(void)
memcpy(gSaveBlock1Ptr->bagPocket_Items, gUnknown_0203CE80->bagPocket_Items, sizeof(gUnknown_0203CE80->bagPocket_Items));
memcpy(gSaveBlock1Ptr->bagPocket_PokeBalls, gUnknown_0203CE80->bagPocket_PokeBalls, sizeof(gUnknown_0203CE80->bagPocket_PokeBalls));
- gUnknown_0203CE58.pocket = gUnknown_0203CE80->pocket;
+ gBagPositionStruct.pocket = gUnknown_0203CE80->pocket;
for (i = 0; i <= 4; i++)
{
- gUnknown_0203CE58.cursorPosition[i] = gUnknown_0203CE80->cursorPosition[i];
- gUnknown_0203CE58.scrollPosition[i] = gUnknown_0203CE80->scrollPosition[i];
+ gBagPositionStruct.cursorPosition[i] = gUnknown_0203CE80->cursorPosition[i];
+ gBagPositionStruct.scrollPosition[i] = gUnknown_0203CE80->scrollPosition[i];
}
Free(gUnknown_0203CE80);
}
@@ -2175,14 +2175,14 @@ void Task_WallyTutorialBagMenu(u8 taskId)
break;
case 0xCC:
PlaySE(SE_SELECT);
- bag_menu_print_cursor_(data[0], 2);
+ BagMenu_PrintCursor_(data[0], 2);
gSpecialVar_ItemId = ITEM_POKE_BALL;
sub_81AC644(taskId);
data[8]++;
break;
case 0x132:
PlaySE(SE_SELECT);
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
DestroyListMenuTask(data[0], 0, 0);
RestoreBagAfterWallyTutorial();
unknown_ItemMenu_Confirm(taskId);
@@ -2198,7 +2198,7 @@ void unknown_ItemMenu_Show(u8 taskId)
{
gSpecialVar_0x8005 = gSpecialVar_ItemId;
gSpecialVar_Result = 1;
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
unknown_ItemMenu_Confirm(taskId);
}
@@ -2212,7 +2212,7 @@ void unknown_ItemMenu_Give2(u8 taskId)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
gSpecialVar_Result = 1;
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
unknown_ItemMenu_Confirm(taskId);
}
@@ -2225,7 +2225,7 @@ void bag_menu_leave_maybe_2(void)
void unknown_ItemMenu_Confirm2(u8 taskId)
{
gSpecialVar_Result = 1;
- bag_menu_remove_some_window();
+ BagMenu_RemoveSomeWindow();
unknown_ItemMenu_Confirm(taskId);
}
@@ -2235,7 +2235,7 @@ void bag_menu_leave_maybe(void)
SetMainCallback2(CB2_ReturnToField);
}
-void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
+void BagMenu_PrintPocketNames(const u8 *pocketName1, const u8 *pocketName2)
{
struct WindowTemplate window = {0, 0, 0, 0, 0, 0, 0};
u16 windowId;
@@ -2246,24 +2246,24 @@ void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
windowId = AddWindow(&window);
FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
offset = GetStringCenterAlignXOffset(1, pocketName1, 0x40);
- bag_menu_print(windowId, 1, pocketName1, offset, 1, 0, 0, -1, 1);
+ BagMenu_Print(windowId, 1, pocketName1, offset, 1, 0, 0, -1, 1);
if (pocketName2)
{
offset = GetStringCenterAlignXOffset(1, pocketName2, 0x40);
- bag_menu_print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1);
+ BagMenu_Print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1);
}
- CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->pocketNameBuffer, 0x400);
+ CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gBagMenu->pocketNameBuffer, 0x400);
RemoveWindow(windowId);
}
-void bag_menu_copy_pocket_name_to_window(u32 a)
+void BagMenu_CopyPocketNameToWindow(u32 a)
{
u8 (* r4)[32][32];
u8* windowAttribute;
int b;
if (a > 8)
a = 8;
- r4 = &gUnknown_0203CE54->pocketNameBuffer;
+ r4 = &gBagMenu->pocketNameBuffer;
windowAttribute = (u8*)GetWindowAttribute(2, WINDOW_TILE_DATA);
CpuCopy32(r4[0][a], windowAttribute, 0x100);
b = a + 16;
@@ -2271,7 +2271,7 @@ void bag_menu_copy_pocket_name_to_window(u32 a)
CopyWindowToVram(2, 2);
}
-void setup_bag_menu_textboxes(void)
+void SetupBagMenu_Textboxes(void)
{
u8 i;
@@ -2290,19 +2290,19 @@ void setup_bag_menu_textboxes(void)
schedule_bg_copy_tilemap_to_vram(1);
}
-void bag_menu_print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h)
+void BagMenu_Print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h)
{
AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[h], speed, str);
}
u8 sub_81AE124(u8 a)
{
- return gUnknown_0203CE54->windowPointers[a];
+ return gBagMenu->windowPointers[a];
}
-u8 bag_menu_add_window(u8 a)
+u8 BagMenu_AddWindow(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
+ u8 *ptr = &gBagMenu->windowPointers[a];
if (*ptr == 0xFF)
{
*ptr = AddWindow(&gUnknown_086141AC[a]);
@@ -2312,9 +2312,9 @@ u8 bag_menu_add_window(u8 a)
return *ptr;
}
-void bag_menu_remove_window(u8 a)
+void BagMenu_RemoveWindow(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
+ u8 *ptr = &gBagMenu->windowPointers[a];
if (*ptr != 0xFF)
{
ClearStdWindowAndFrameToTransparent(*ptr, 0);
@@ -2327,7 +2327,7 @@ void bag_menu_remove_window(u8 a)
u8 AddItemMessageWindow(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
+ u8 *ptr = &gBagMenu->windowPointers[a];
if (*ptr == 0xFF)
*ptr = AddWindow(&gUnknown_086141AC[a]);
return *ptr;
@@ -2335,7 +2335,7 @@ u8 AddItemMessageWindow(u8 a)
void bag_menu_RemoveBagItem_message_window(u8 a)
{
- u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
+ u8 *ptr = &gBagMenu->windowPointers[a];
if (*ptr != 0xFF)
{
ClearDialogWindowAndFrameToTransparent(*ptr, FALSE);
@@ -2347,25 +2347,25 @@ void bag_menu_RemoveBagItem_message_window(u8 a)
}
}
-void bag_menu_yes_no(u8 a, u8 b, const struct YesNoFuncTable *funcTable)
+void BagMenu_YesNo(u8 a, u8 b, const struct YesNoFuncTable *funcTable)
{
CreateYesNoMenuWithCallbacks(a, &gUnknown_086141AC[b], 1, 0, 2, 1, 14, funcTable);
}
void bag_menu_AddMoney_window(void)
{
- u8 windowId = bag_menu_add_window(9);
+ u8 windowId = BagMenu_AddWindow(9);
PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money));
AddMoneyLabelObject(19, 11);
}
void bag_menu_remove_money_window(void)
{
- bag_menu_remove_window(9);
+ BagMenu_RemoveWindow(9);
RemoveMoneyLabelObject();
}
-void bag_menu_prepare_tmhm_move_window(void)
+void BagMenu_PrepareTMHMMoveWindow(void)
{
FillWindowPixelBuffer(3, PIXEL_FILL(0));
blit_move_info_icon(3, 19, 0, 0);
@@ -2385,7 +2385,7 @@ void PrintTMHMMoveData(u16 itemId)
if (itemId == ITEM_NONE)
{
for (i = 0; i < 4; i++)
- bag_menu_print(4, 1, gText_ThreeDashes, 7, i * 12, 0, 0, -1, 4);
+ BagMenu_Print(4, 1, gText_ThreeDashes, 7, i * 12, 0, 0, -1, 4);
CopyWindowToVram(4, 2);
}
else
@@ -2401,7 +2401,7 @@ void PrintTMHMMoveData(u16 itemId)
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveId].power, 1, 3);
text = gStringVar1;
}
- bag_menu_print(4, 1, text, 7, 12, 0, 0, -1, 4);
+ BagMenu_Print(4, 1, text, 7, 12, 0, 0, -1, 4);
if (gBattleMoves[moveId].accuracy == 0)
{
text = gText_ThreeDashes;
@@ -2411,9 +2411,9 @@ void PrintTMHMMoveData(u16 itemId)
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveId].accuracy, 1, 3);
text = gStringVar1;
}
- bag_menu_print(4, 1, text, 7, 24, 0, 0, -1, 4);
+ BagMenu_Print(4, 1, text, 7, 24, 0, 0, -1, 4);
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[moveId].pp, 1, 3);
- bag_menu_print(4, 1, gStringVar1, 7, 36, 0, 0, -1, 4);
+ BagMenu_Print(4, 1, gStringVar1, 7, 36, 0, 0, -1, 4);
CopyWindowToVram(4, 2);
}
}
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index 83ed3abfe..780a50160 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -24,12 +24,12 @@ static void SpriteCB_SwitchPocketRotatingBallInit(struct Sprite *sprite);
static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite);
// static const rom data
-static const u16 gUnknown_0857F564[] = INCBIN_U16("graphics/interface/bag_spinner.gbapal");
-static const u8 gUnknown_0857F584[] = INCBIN_U8("graphics/interface/bag_spinner.4bpp");
-static const u8 gUnknown_0857F604[] = INCBIN_U8("graphics/unused/cherry.4bpp");
-static const u16 gUnknown_0857FA84[] = INCBIN_U16("graphics/unused/cherry.gbapal");
+static const u16 gRotatingBall_Pal[] = INCBIN_U16("graphics/interface/bag_spinner.gbapal");
+static const u8 gRotatingBall[] = INCBIN_U8("graphics/interface/bag_spinner.4bpp");
+static const u8 gCherryUnused[] = INCBIN_U8("graphics/unused/cherry.4bpp");
+static const u16 gCherryUnused_Pal[] = INCBIN_U16("graphics/unused/cherry.gbapal");
-static const struct OamData sOamData_857FAA4 =
+static const struct OamData sBagOamData =
{
.y = 0,
.affineMode = 1,
@@ -46,59 +46,59 @@ static const struct OamData sOamData_857FAA4 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_857FAAC[] =
+static const union AnimCmd sSpriteAnim_Bag_Closed[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857FAB4[] =
+static const union AnimCmd sSpriteAnim_Bag_Items[] =
{
ANIMCMD_FRAME(64, 4),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857FABC[] =
+static const union AnimCmd sSpriteAnim_Bag_KeyItems[] =
{
ANIMCMD_FRAME(128, 4),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857FAC4[] =
+static const union AnimCmd sSpriteAnim_Bag_Pokeballs[] =
{
ANIMCMD_FRAME(192, 4),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857FACC[] =
+static const union AnimCmd sSpriteAnim_Bag_TMsHMs[] =
{
ANIMCMD_FRAME(256, 4),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857FAD4[] =
+static const union AnimCmd sSpriteAnim_Bag_Berries[] =
{
ANIMCMD_FRAME(320, 4),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_857FADC[] =
+static const union AnimCmd *const sBagSpriteAnimTable[] =
{
- sSpriteAnim_857FAAC,
- sSpriteAnim_857FAB4,
- sSpriteAnim_857FAC4,
- sSpriteAnim_857FACC,
- sSpriteAnim_857FAD4,
- sSpriteAnim_857FABC
+ sSpriteAnim_Bag_Closed,
+ sSpriteAnim_Bag_Items,
+ sSpriteAnim_Bag_Pokeballs,
+ sSpriteAnim_Bag_TMsHMs,
+ sSpriteAnim_Bag_Berries,
+ sSpriteAnim_Bag_KeyItems
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FAF4[] =
+static const union AffineAnimCmd sSpriteAffineAnim_BagNormal[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FB04[] =
+static const union AffineAnimCmd sSpriteAffineAnim_BagShake[] =
{
AFFINEANIMCMD_FRAME(0, 0, 254, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
@@ -107,39 +107,39 @@ static const union AffineAnimCmd sSpriteAffineAnim_857FB04[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_857FB2C[] =
+static const union AffineAnimCmd *const sBagAffineAnimCmds[] =
{
- sSpriteAffineAnim_857FAF4,
- sSpriteAffineAnim_857FB04
+ sSpriteAffineAnim_BagNormal,
+ sSpriteAffineAnim_BagShake
};
-const struct CompressedSpriteSheet gUnknown_0857FB34 =
+const struct CompressedSpriteSheet gBagMaleSpriteSheet =
{
- gBagMaleTiles, 0x3000, 100
+ gBagMaleTiles, 0x3000, TAG_BAG_GFX
};
-const struct CompressedSpriteSheet gUnknown_0857FB3C =
+const struct CompressedSpriteSheet gBagFemaleSpriteSheet =
{
- gBagFemaleTiles, 0x3000, 100
+ gBagFemaleTiles, 0x3000, TAG_BAG_GFX
};
-const struct CompressedSpritePalette gUnknown_0857FB44 =
+const struct CompressedSpritePalette gBagPaletteTable =
{
- gBagPalette, 100
+ gBagPalette, TAG_BAG_GFX
};
-static const struct SpriteTemplate gUnknown_0857FB4C =
+static const struct SpriteTemplate gBagSpriteTemplate =
{
- .tileTag = 100,
- .paletteTag = 100,
- .oam = &sOamData_857FAA4,
- .anims = sSpriteAnimTable_857FADC,
+ .tileTag = TAG_BAG_GFX,
+ .paletteTag = TAG_BAG_GFX,
+ .oam = &sBagOamData,
+ .anims = sBagSpriteAnimTable,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_857FB2C,
+ .affineAnims = sBagAffineAnimCmds,
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_857FB64 =
+static const struct OamData sRotatingBallOamData =
{
.y = 0,
.affineMode = 0,
@@ -156,61 +156,61 @@ static const struct OamData sOamData_857FB64 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_857FB6C[] =
+static const union AnimCmd sSpriteAffineAnim_RotatingBallStationary[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_857FB74[] =
+static const union AnimCmd *const sRotatingBallSpriteAnimTable[] =
{
- sSpriteAnim_857FB6C
+ sSpriteAffineAnim_RotatingBallStationary
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FB78[] =
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingBallRotation1[] =
{
AFFINEANIMCMD_FRAME(0, 0, 8, 16),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FB88[] =
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingBallRotation2[] =
{
AFFINEANIMCMD_FRAME(0, 0, 248, 16),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_857FB98[] =
+static const union AffineAnimCmd *const sRotatingBallAnimCmds[] =
{
- sSpriteAffineAnim_857FB78,
+ sSpriteAffineAnim_RotatingBallRotation1,
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_857FB9C[] =
+static const union AffineAnimCmd *const sRotatingBallAnimCmds_FullRotation[] =
{
- sSpriteAffineAnim_857FB88,
+ sSpriteAffineAnim_RotatingBallRotation2,
};
-static const struct SpriteSheet gUnknown_0857FBA0 =
+static const struct SpriteSheet gRotatingBallTable =
{
- gUnknown_0857F584, 0x80, 101
+ gRotatingBall, 0x80, TAG_ROTATING_BALL_GFX
};
-static const struct SpritePalette gUnknown_0857FBA8 =
+static const struct SpritePalette gRotatingBallPaletteTable =
{
- gUnknown_0857F564, 101
+ gRotatingBall_Pal, TAG_ROTATING_BALL_GFX
};
-static const struct SpriteTemplate gSpriteTemplate_RotatingBall =
+static const struct SpriteTemplate gRotatingBallSpriteTemplate =
{
- .tileTag = 101,
- .paletteTag = 101,
- .oam = &sOamData_857FB64,
- .anims = sSpriteAnimTable_857FB74,
+ .tileTag = TAG_ROTATING_BALL_GFX,
+ .paletteTag = TAG_ROTATING_BALL_GFX,
+ .oam = &sRotatingBallOamData,
+ .anims = sRotatingBallSpriteAnimTable,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_857FB98,
+ .affineAnims = sRotatingBallAnimCmds,
.callback = SpriteCB_SwitchPocketRotatingBallInit,
};
-static const struct OamData sOamData_857FBC8 =
+static const struct OamData sBerryPicOamData =
{
.y = 0,
.affineMode = 0,
@@ -227,7 +227,7 @@ static const struct OamData sOamData_857FBC8 =
.affineParam = 0
};
-static const struct OamData sOamData_857FBD0 =
+static const struct OamData sBerryPicRotatingOamData =
{
.y = 0,
.affineMode = 3,
@@ -250,28 +250,28 @@ static const union AnimCmd sSpriteAnim_857FBD8[] =
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_857FBE0[] =
+static const union AnimCmd *const sBerryPicSpriteAnimTable[] =
{
sSpriteAnim_857FBD8
};
-static const struct SpriteFrameImage sSpriteImageTable_857FBE4[] =
+static const struct SpriteFrameImage sBerryPicSpriteImageTable[] =
{
{&gDecompressionBuffer[0], 0x800},
};
-static const struct SpriteTemplate gUnknown_0857FBEC =
+static const struct SpriteTemplate gBerryPicSpriteTemplate =
{
- .tileTag = 65535,
- .paletteTag = 30020,
- .oam = &sOamData_857FBC8,
- .anims = sSpriteAnimTable_857FBE0,
- .images = sSpriteImageTable_857FBE4,
+ .tileTag = TAG_BERRY_PIC_TILE,
+ .paletteTag = TAG_BERRY_PIC_PAL,
+ .oam = &sBerryPicOamData,
+ .anims = sBerryPicSpriteAnimTable,
+ .images = sBerryPicSpriteImageTable,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FC04[] =
+static const union AffineAnimCmd sSpriteAffineAnim_BerryPicRotation1[] =
{
AFFINEANIMCMD_FRAME(-1, -1, 253, 96),
AFFINEANIMCMD_FRAME(0, 0, 0, 16),
@@ -282,7 +282,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_857FC04[] =
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd sSpriteAffineAnim_857FC3C[] =
+static const union AffineAnimCmd sSpriteAffineAnim_BerryPicRotation2[] =
{
AFFINEANIMCMD_FRAME(-1, -1, 3, 96),
AFFINEANIMCMD_FRAME(0, 0, 0, 16),
@@ -293,20 +293,20 @@ static const union AffineAnimCmd sSpriteAffineAnim_857FC3C[] =
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_857FC74[] =
+static const union AffineAnimCmd *const sBerryPicRotatingAnimCmds[] =
{
- sSpriteAffineAnim_857FC04,
- sSpriteAffineAnim_857FC3C
+ sSpriteAffineAnim_BerryPicRotation1,
+ sSpriteAffineAnim_BerryPicRotation2
};
-static const struct SpriteTemplate gUnknown_0857FC7C =
+static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate =
{
- .tileTag = 0xFFFF,
- .paletteTag = 0x7544,
- .oam = &sOamData_857FBD0,
- .anims = sSpriteAnimTable_857FBE0,
- .images = sSpriteImageTable_857FBE4,
- .affineAnims = sSpriteAffineAnimTable_857FC74,
+ .tileTag = TAG_BERRY_PIC_TILE,
+ .paletteTag = TAG_BERRY_PIC_PAL,
+ .oam = &sBerryPicRotatingOamData,
+ .anims = sBerryPicSpriteAnimTable,
+ .images = sBerryPicSpriteImageTable,
+ .affineAnims = sBerryPicRotatingAnimCmds,
.callback = SpriteCallbackDummy,
};
@@ -357,17 +357,17 @@ static const struct CompressedTilesPal gBerryPicTable[] =
{gBerryPic_Enigma, gBerryPalette_Enigma},
};
-const struct CompressedSpriteSheet gUnknown_0857FDEC =
+const struct CompressedSpriteSheet gBerryCheckCircleSpriteSheet =
{
- gBerryCheckCircle_Gfx, 0x800, 10000
+ gBerryCheckCircle_Gfx, 0x800, TAG_BERRY_CHECK_CIRCLE_GFX
};
-const struct CompressedSpritePalette gUnknown_0857FDF4 =
+const struct CompressedSpritePalette gBerryCheckCirclePaletteTable =
{
- gUnknown_08D9BEF0, 10000
+ gBerryCheck_Pal, TAG_BERRY_CHECK_CIRCLE_GFX
};
-static const struct OamData sOamData_857FDFC =
+static const struct OamData sBerryCheckCircleOamData =
{
.y = 0,
.affineMode = 0,
@@ -384,23 +384,23 @@ static const struct OamData sOamData_857FDFC =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_857FE04[] =
+static const union AnimCmd sSpriteAnim_BerryCheckCircle[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_857FE0C[] =
+static const union AnimCmd *const sBerryCheckCircleSpriteAnimTable[] =
{
- sSpriteAnim_857FE04
+ sSpriteAnim_BerryCheckCircle
};
-static const struct SpriteTemplate gUnknown_0857FE10 =
+static const struct SpriteTemplate gBerryCheckCircleSpriteTemplate =
{
- .tileTag = 10000,
- .paletteTag = 10000,
- .oam = &sOamData_857FDFC,
- .anims = sSpriteAnimTable_857FE0C,
+ .tileTag = TAG_BERRY_CHECK_CIRCLE_GFX,
+ .paletteTag = TAG_BERRY_CHECK_CIRCLE_GFX,
+ .oam = &sBerryCheckCircleOamData,
+ .anims = sBerryCheckCircleSpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -409,7 +409,7 @@ static const struct SpriteTemplate gUnknown_0857FE10 =
// code
void RemoveBagSprite(u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->spriteId[id];
+ u8 *spriteId = &gBagMenu->spriteId[id];
if (*spriteId != 0xFF)
{
FreeSpriteTilesByTag(id + 100);
@@ -422,14 +422,14 @@ void RemoveBagSprite(u8 id)
void AddBagVisualSprite(u8 bagPocketId)
{
- u8 *spriteId = &gUnknown_0203CE54->spriteId[0];
- *spriteId = CreateSprite(&gUnknown_0857FB4C, 68, 66, 0);
+ u8 *spriteId = &gBagMenu->spriteId[0];
+ *spriteId = CreateSprite(&gBagSpriteTemplate, 68, 66, 0);
SetBagVisualPocketId(bagPocketId, FALSE);
}
void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
+ struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
if (isSwitchingPockets)
{
sprite->pos2.y = -5;
@@ -458,7 +458,7 @@ static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
void ShakeBagVisual(void)
{
- struct Sprite *sprite = &gSprites[gUnknown_0203CE54->spriteId[0]];
+ struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
if (sprite->affineAnimEnded)
{
StartSpriteAffineAnim(sprite, 1);
@@ -477,14 +477,14 @@ static void SpriteCB_ShakeBagVisual(struct Sprite *sprite)
void AddSwitchPocketRotatingBallSprite(s16 rotationDirection)
{
- u8 *spriteId = &gUnknown_0203CE54->spriteId[1];
- LoadSpriteSheet(&gUnknown_0857FBA0);
- LoadSpritePalette(&gUnknown_0857FBA8);
- *spriteId = CreateSprite(&gSpriteTemplate_RotatingBall, 16, 16, 0);
+ u8 *spriteId = &gBagMenu->spriteId[1];
+ LoadSpriteSheet(&gRotatingBallTable);
+ LoadSpritePalette(&gRotatingBallPaletteTable);
+ *spriteId = CreateSprite(&gRotatingBallSpriteTemplate, 16, 16, 0);
gSprites[*spriteId].data[0] = rotationDirection;
}
-static void update_switch_pocket_rotating_ball_coords(struct Sprite *sprite)
+static void UpdateSwitchPocketRotatingBallCoords(struct Sprite *sprite)
{
sprite->centerToCornerVecX = sprite->data[1] - ((sprite->data[3] + 1) & 1);
sprite->centerToCornerVecY = sprite->data[1] - ((sprite->data[3] + 1) & 1);
@@ -494,28 +494,28 @@ static void SpriteCB_SwitchPocketRotatingBallInit(struct Sprite *sprite)
{
sprite->oam.affineMode = 1;
if (sprite->data[0] == -1)
- sprite->affineAnims = sSpriteAffineAnimTable_857FB98;
+ sprite->affineAnims = sRotatingBallAnimCmds;
else
- sprite->affineAnims = sSpriteAffineAnimTable_857FB9C;
+ sprite->affineAnims = sRotatingBallAnimCmds_FullRotation;
InitSpriteAffineAnim(sprite);
sprite->data[1] = sprite->centerToCornerVecX;
sprite->data[1] = sprite->centerToCornerVecY;
- update_switch_pocket_rotating_ball_coords(sprite);
+ UpdateSwitchPocketRotatingBallCoords(sprite);
sprite->callback = SpriteCB_SwitchPocketRotatingBallContinue;
}
static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite)
{
sprite->data[3]++;
- update_switch_pocket_rotating_ball_coords(sprite);
+ UpdateSwitchPocketRotatingBallCoords(sprite);
if (sprite->data[3] == 16)
RemoveBagSprite(1);
}
void AddBagItemIconSprite(u16 itemId, u8 id)
{
- u8 *spriteId = &gUnknown_0203CE54->spriteId[id + 2];
+ u8 *spriteId = &gBagMenu->spriteId[id + 2];
if (*spriteId == 0xFF)
{
u8 iconSpriteId;
@@ -539,17 +539,17 @@ void RemoveBagItemIconSprite(u8 id)
void sub_80D4FAC(void)
{
- sub_8122344(&gUnknown_0203CE54->spriteId[4], 8);
+ sub_8122344(&gBagMenu->spriteId[4], 8);
}
void sub_80D4FC8(u8 arg0)
{
- sub_81223FC(&gUnknown_0203CE54->spriteId[4], 8, arg0);
+ sub_81223FC(&gBagMenu->spriteId[4], 8, arg0);
}
void sub_80D4FEC(u8 arg0)
{
- sub_8122448(&gUnknown_0203CE54->spriteId[4], 136, 120, (arg0 + 1) * 16);
+ sub_8122448(&gBagMenu->spriteId[4], 136, 120, (arg0 + 1) * 16);
}
static void sub_80D5018(void *mem0, void *mem1)
@@ -572,7 +572,7 @@ static void sub_80D5018(void *mem0, void *mem1)
}
}
-static void sub_80D5070(u8 berryId)
+static void LoadBerryGfx(u8 berryId)
{
struct CompressedSpritePalette pal;
@@ -582,7 +582,7 @@ static void sub_80D5070(u8 berryId)
}
pal.data = gBerryPicTable[berryId].pal;
- pal.tag = 0x7544;
+ pal.tag = TAG_BERRY_PIC_PAL;
LoadCompressedSpritePalette(&pal);
LZDecompressWram(gBerryPicTable[berryId].tiles, &gDecompressionBuffer[0x1000]);
sub_80D5018(&gDecompressionBuffer[0x1000], &gDecompressionBuffer[0]);
@@ -590,22 +590,22 @@ static void sub_80D5070(u8 berryId)
u8 CreateBerryTagSprite(u8 id, s16 x, s16 y)
{
- sub_80D5070(id);
- return CreateSprite(&gUnknown_0857FBEC, x, y, 0);
+ LoadBerryGfx(id);
+ return CreateSprite(&gBerryPicSpriteTemplate, x, y, 0);
}
void FreeBerryTagSpritePalette(void)
{
- FreeSpritePaletteByTag(0x7544);
+ FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL);
}
-u8 sub_80D511C(u8 berryId, u8 x, u8 y, bool8 startAffine)
+u8 LoadSpinningBerryPicGfx(u8 berryId, u8 x, u8 y, bool8 startAffine)
{
u8 spriteId;
- FreeSpritePaletteByTag(0x7544);
- sub_80D5070(berryId);
- spriteId = CreateSprite(&gUnknown_0857FC7C, x, y, 0);
+ FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL);
+ LoadBerryGfx(berryId);
+ spriteId = CreateSprite(&gBerryPicRotatingSpriteTemplate, x, y, 0);
if (startAffine == TRUE)
StartSpriteAffineAnim(&gSprites[spriteId], 1);
@@ -614,5 +614,5 @@ u8 sub_80D511C(u8 berryId, u8 x, u8 y, bool8 startAffine)
u8 CreateBerryFlavorCircleSprite(s16 x)
{
- return CreateSprite(&gUnknown_0857FE10, x, 116, 0);
+ return CreateSprite(&gBerryCheckCircleSpriteTemplate, x, 116, 0);
}
diff --git a/src/item_use.c b/src/item_use.c
index 97aceb7ad..2f4374423 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -51,7 +51,7 @@ void SetUpItemUseCallback(u8 taskId);
void MapPostLoadHook_UseItem(void);
void sub_80AF6D4(void);
void Task_CallItemUseOnFieldCallback(u8 taskId);
-void bag_menu_inits_lists_menu(u8 taskId);
+void BagMenu_InitListsMenu(u8 taskId);
void ItemUseOnFieldCB_Bike(u8 taskId);
void ItemUseOnFieldCB_Rod(u8 taskId);
void ItemUseOnFieldCB_Itemfinder(u8 taskId);
@@ -101,7 +101,7 @@ static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST}
static const struct YesNoFuncTable gUnknown_085920E8 =
{
.yesFunc = sub_80FE03C,
- .noFunc = bag_menu_inits_lists_menu,
+ .noFunc = BagMenu_InitListsMenu,
};
// .text
@@ -115,7 +115,7 @@ void SetUpItemUseCallback(u8 taskId)
type = ItemId_GetType(gSpecialVar_ItemId) - 1;
if (!InBattlePyramid())
{
- gUnknown_0203CE54->mainCallback2 = gUnknown_085920D8[type];
+ gBagMenu->mainCallback2 = gUnknown_085920D8[type];
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -154,7 +154,7 @@ void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnFiel
if (!isUsingRegisteredKeyItemOnField)
{
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714);
}
@@ -199,7 +199,7 @@ void sub_80FD254(void)
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- gUnknown_0203CE54->mainCallback2 = sub_80FD254;
+ gBagMenu->mainCallback2 = sub_80FD254;
unknown_ItemMenu_Confirm(taskId);
}
@@ -595,7 +595,7 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
}
else if (gTasks[taskId].data[3] != TRUE)
{
- gUnknown_0203CE54->mainCallback2 = sub_80FDBEC;
+ gBagMenu->mainCallback2 = sub_80FDBEC;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -628,7 +628,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
if (!gTasks[taskId].data[3])
{
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
}
else
{
@@ -643,7 +643,7 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId)
if (!gTasks[taskId].data[3])
{
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
}
else
{
@@ -657,7 +657,7 @@ void sub_80FDD10(u8 taskId)
{
gUnknown_0203A0F4 = sub_80FDD74;
gFieldCallback = MapPostLoadHook_UseItem;
- gUnknown_0203CE54->mainCallback2 = CB2_ReturnToField;
+ gBagMenu->mainCallback2 = CB2_ReturnToField;
unknown_ItemMenu_Confirm(taskId);
}
else
@@ -782,7 +782,7 @@ void task08_0809AD8C(u8 taskId)
void sub_80FE024(u8 taskId)
{
- bag_menu_yes_no(taskId, 6, &gUnknown_085920E8);
+ BagMenu_YesNo(taskId, 6, &gUnknown_085920E8);
}
void sub_80FE03C(u8 taskId)
@@ -813,7 +813,7 @@ void ItemUseOutOfBattle_Repel(u8 taskId)
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
gTasks[taskId].func = sub_80FE124;
else if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, BagMenu_InitListsMenu);
else
DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, sub_81C6714);
}
@@ -837,7 +837,7 @@ void sub_80FE164(u8 taskId)
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
sub_80FE058();
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714);
}
@@ -849,7 +849,7 @@ void sub_80FE1D0(u8 taskId)
{
PlaySE(SE_BIDORO);
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gStringVar4, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714);
}
@@ -928,7 +928,7 @@ void ItemUseInBattle_PokeBall(u8 taskId)
}
else if (!InBattlePyramid())
{
- DisplayItemMessage(taskId, 1, gText_BoxFull, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gText_BoxFull, BagMenu_InitListsMenu);
}
else
DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, sub_81C6714);
@@ -965,7 +965,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
if (ExecuteTableBasedItemEffect(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gText_WontHaveEffect, bag_menu_inits_lists_menu);
+ DisplayItemMessage(taskId, 1, gText_WontHaveEffect, BagMenu_InitListsMenu);
else
DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, sub_81C6714);
}
@@ -980,7 +980,7 @@ void sub_80FE54C(u8 taskId)
{
if (!InBattlePyramid())
{
- gUnknown_0203CE54->mainCallback2 = sub_81B89F0;
+ gBagMenu->mainCallback2 = sub_81B89F0;
unknown_ItemMenu_Confirm(taskId);
}
else
diff --git a/src/librfu.c b/src/librfu.c
new file mode 100644
index 000000000..cdf14b693
--- /dev/null
+++ b/src/librfu.c
@@ -0,0 +1,9 @@
+#include "global.h"
+#include "librfu.h"
+
+struct RfuUnk1* gUnknown_03007870[4];
+struct RfuUnk2* gUnknown_03007880[4];
+struct RfuUnk5 *gUnknown_03007890;
+u32 *gUnknown_03007894;
+struct RfuUnk3* gUnknown_03007898;
+u8 gUnknown_030078A0[12];
diff --git a/src/librfu_intr.c b/src/librfu_intr.c
index bdf8b072a..c6db9a50c 100644
--- a/src/librfu_intr.c
+++ b/src/librfu_intr.c
@@ -1,4 +1,5 @@
#include "global.h"
#include "main.h"
+#include "librfu.h"
//TODO: decompile asm/librfu_intr.s to here
diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c
index 556b79bf8..670692118 100644
--- a/src/librfu_stwi.c
+++ b/src/librfu_stwi.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "librfu.h"
+struct RfuStruct *gRfuState;
+
extern IntrFunc IntrSIO32(void);
extern void STWI_stop_timer(void);
diff --git a/src/link.c b/src/link.c
index bcdcb52a4..9928b48da 100644
--- a/src/link.c
+++ b/src/link.c
@@ -52,22 +52,21 @@ struct LinkTestBGInfo
// Static RAM declarations
-IWRAM_DATA struct BlockTransfer sBlockSend;
-IWRAM_DATA u32 link_c_unused_03000d1c;
-IWRAM_DATA struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
-IWRAM_DATA u32 sBlockSendDelayCounter;
-IWRAM_DATA u32 gUnknown_03000D54;
-IWRAM_DATA u8 gUnknown_03000D58;
-IWRAM_DATA u32 sPlayerDataExchangeStatus;
-IWRAM_DATA u32 gUnknown_03000D60;
-IWRAM_DATA u8 sLinkTestLastBlockSendPos;
-ALIGNED() IWRAM_DATA u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
-IWRAM_DATA u8 sNumVBlanksWithoutSerialIntr;
-IWRAM_DATA bool8 sSendBufferEmpty;
-IWRAM_DATA u16 sSendNonzeroCheck;
-IWRAM_DATA u16 sRecvNonzeroCheck;
-IWRAM_DATA u8 sChecksumAvailable;
-IWRAM_DATA u8 sHandshakePlayerCount;
+static struct BlockTransfer sBlockSend;
+static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
+static u32 sBlockSendDelayCounter;
+static u32 gUnknown_03000D54;
+static u8 gUnknown_03000D58;
+static u32 sPlayerDataExchangeStatus;
+static u32 gUnknown_03000D60;
+static u8 sLinkTestLastBlockSendPos;
+static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
+static u8 sNumVBlanksWithoutSerialIntr;
+static bool8 sSendBufferEmpty;
+static u16 sSendNonzeroCheck;
+static u16 sRecvNonzeroCheck;
+static u8 sChecksumAvailable;
+static u8 sHandshakePlayerCount;
u16 gLinkPartnersHeldKeys[6];
u32 gLinkDebugSeed;
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 9732e9889..1f3ae4f3c 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -24,10 +24,10 @@ extern u16 gHeldKeyCodeToSend;
struct UnkRfuStruct_1 gUnknown_03004140;
struct UnkRfuStruct_2 gUnknown_03005000;
-IWRAM_DATA u8 gUnknown_03000D74;
-ALIGNED(4) IWRAM_DATA u8 gUnknown_03000D78[8];
-IWRAM_DATA u8 gUnknown_03000D80[16];
-IWRAM_DATA u16 gUnknown_03000D90[8];
+BSS_DATA u8 gUnknown_03000D74;
+ALIGNED(4) BSS_DATA u8 gUnknown_03000D78[8];
+BSS_DATA u8 gUnknown_03000D80[16];
+BSS_DATA u16 gUnknown_03000D90[8];
EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0;
EWRAM_DATA ALIGNED(4) struct UnkLinkRfuStruct_02022B14 gUnknown_02022B14 = {};
@@ -2021,6 +2021,8 @@ void sub_800DBF8(u8 *q1, u8 mode)
}
}
+// File boundary here maybe?
+
void PkmnStrToASCII(u8 *q1, const u8 *q2)
{
s32 i;
@@ -2413,7 +2415,7 @@ void RecordMixTrainerNames(void)
}
}
}
-
+
// Save the connected trainers first, at the top of the list.
nextSpace = 0;
for (i = 0; i < GetLinkPlayerCount(); i++)
@@ -2444,7 +2446,7 @@ void RecordMixTrainerNames(void)
}
}
}
-
+
// Finalize the new list, and clean up.
memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
free(newRecords);
@@ -2914,70 +2916,21 @@ void sub_800EF88(u8 a0)
}
}
-#ifdef NONMATCHING
-// FIXME: gUnknown_03005000.unk_c87 should be in r5
-// FIXME: gRecvCmds should be in r6 and r7
void sub_800EFB0(void)
{
s32 i, j;
+
for (i = 0; i < 5; i++)
{
+ struct UnkRfuStruct_2 *ptr = &gUnknown_03005000;
for (j = 0; j < 7; j++)
{
- gUnknown_03005000.unk_c87[i][j][1] = gRecvCmds[i][j] >> 8;
- gUnknown_03005000.unk_c87[i][j][0] = gRecvCmds[i][j];
+ ptr->unk_c87[i][j][1] = gRecvCmds[i][j] >> 8;
+ ptr->unk_c87[i][j][0] = gRecvCmds[i][j];
}
}
CpuFill16(0, gRecvCmds, sizeof gRecvCmds);
}
-#else
-NAKED void sub_800EFB0(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tsub sp, 0x4\n"
- "\tmovs r2, 0\n"
- "\tldr r7, =gRecvCmds\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r6, r7, 0\n"
- "\tldr r1, =0x00000c87\n"
- "\tadds r5, r0, r1\n"
- "_0800EFC0:\n"
- "\tmovs r3, 0\n"
- "\tlsls r0, r2, 3\n"
- "\tlsls r1, r2, 4\n"
- "\tadds r4, r2, 0x1\n"
- "\tsubs r0, r2\n"
- "\tlsls r0, 1\n"
- "\tadds r2, r0, r5\n"
- "\tadds r1, r6\n"
- "_0800EFD0:\n"
- "\tldrh r0, [r1]\n"
- "\tlsrs r0, 8\n"
- "\tstrb r0, [r2, 0x1]\n"
- "\tldrh r0, [r1]\n"
- "\tstrb r0, [r2]\n"
- "\tadds r2, 0x2\n"
- "\tadds r1, 0x2\n"
- "\tadds r3, 0x1\n"
- "\tcmp r3, 0x6\n"
- "\tble _0800EFD0\n"
- "\tadds r2, r4, 0\n"
- "\tcmp r2, 0x4\n"
- "\tble _0800EFC0\n"
- "\tmovs r0, 0\n"
- "\tmov r1, sp\n"
- "\tstrh r0, [r1]\n"
- "\tldr r2, =0x01000028\n"
- "\tmov r0, sp\n"
- "\tadds r1, r7, 0\n"
- "\tbl CpuSet\n"
- "\tadd sp, 0x4\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool");
-}
-#endif
void sub_800F014(void)
{
@@ -3542,7 +3495,7 @@ void sub_800FD14(u16 command)
}
}
-void sub_800FE50(u16 *a0)
+void sub_800FE50(void *a0)
{
if (gSendCmd[0] == 0 && !sub_8011A80())
{
@@ -5191,4 +5144,3 @@ u32 GetRfuRecvQueueLength(void)
{
return gUnknown_03005000.unk_124.unk_8c2;
}
-
diff --git a/src/load_save.c b/src/load_save.c
index 150c557c6..5857f2b46 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -42,10 +42,10 @@ EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
EWRAM_DATA u32 gLastEncryptionKey = 0;
// IWRAM common
-IWRAM_DATA bool32 gFlashMemoryPresent;
-IWRAM_DATA struct SaveBlock1 *gSaveBlock1Ptr;
-IWRAM_DATA struct SaveBlock2 *gSaveBlock2Ptr;
-IWRAM_DATA struct PokemonStorage *gPokemonStoragePtr;
+bool32 gFlashMemoryPresent;
+struct SaveBlock1 *gSaveBlock1Ptr;
+struct SaveBlock2 *gSaveBlock2Ptr;
+struct PokemonStorage *gPokemonStoragePtr;
// code
void CheckForFlashMemory(void)
diff --git a/src/m4a.c b/src/m4a.c
index 7b4441ca4..267a72657 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -1,3 +1,4 @@
+#include <string.h>
#include "gba/m4a_internal.h"
extern const u8 gCgb3Vol[];
diff --git a/src/main.c b/src/main.c
index 40381bb68..06425e661 100644
--- a/src/main.c
+++ b/src/main.c
@@ -85,7 +85,27 @@ void EnableVCountIntrAtLine150(void);
void AgbMain()
{
+#if MODERN
+ // Modern compilers are liberal with the stack on entry to this function,
+ // so RegisterRamReset may crash if it resets IWRAM.
+ RegisterRamReset(RESET_ALL & ~RESET_IWRAM);
+ asm("mov\tr1, #0xC0\n"
+ "\tlsl\tr1, r1, #0x12\n"
+ "\tmov r2, #0xFC\n"
+ "\tlsl r2, r2, #0x7\n"
+ "\tadd\tr2, r1, r2\n"
+ "\tmov\tr0, #0\n"
+ "\tmov\tr3, r0\n"
+ "\tmov\tr4, r0\n"
+ "\tmov\tr5, r0\n"
+ ".LCU0:\n"
+ "\tstmia r1!, {r0, r3, r4, r5}\n"
+ "\tcmp\tr1, r2\n"
+ "\tbcc\t.LCU0\n"
+ );
+#else
RegisterRamReset(RESET_ALL);
+#endif //MODERN
*(vu16 *)BG_PLTT = 0x7FFF;
InitGpuRegManager();
REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3;
diff --git a/src/main_menu.c b/src/main_menu.c
index bc509c70d..6a0bd9e2d 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -176,7 +176,7 @@
static EWRAM_DATA u8 gUnknown_02022D04 = 0;
static EWRAM_DATA u16 sCurrItemAndOptionMenuCheck = 0;
-static IWRAM_DATA u8 sBirchSpeechMainTaskId;
+static u8 sBirchSpeechMainTaskId;
// Static ROM declarations
diff --git a/src/match_call.c b/src/match_call.c
index 6221affe1..b02af9977 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -2012,4 +2012,4 @@ void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId)
void sub_81971C4(u32 windowId, u32 tileOffset, u32 paletteId)
{
DrawMatchCallTextBoxBorder(windowId, tileOffset, paletteId);
-} \ No newline at end of file
+}
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 8bb9cb6e4..64f04f3bc 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -33,7 +33,7 @@ static void Task_BardSong(u8 taskId);
static void StorytellerSetup(void);
static void Storyteller_ResetFlag(void);
-IWRAM_DATA u8 sSelectedStory;
+static u8 sSelectedStory;
struct BardSong gBardSong;
diff --git a/src/menu.c b/src/menu.c
index 354346d27..8d50d4dcc 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "alloc.h"
#include "bg.h"
+#include "blit.h"
#include "dma3.h"
#include "event_data.h"
#include "graphics.h"
@@ -2013,337 +2014,82 @@ void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y)
AddTextPrinterParameterized(windowId, 1, gStringVar4, x, y, 0xFF, 0);
}
-//Screw this function, it's long and unreferenced and ugh
+// Unused. Similar to BlitBitmapRect4Bit.
+void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height)
+{
+ int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY;
+ const u8 *pixelsSrc;
+ u16 *pixelsDst;
+ u16 toOrr;
-struct UnkStruct_819A080 {
- u8 *unk00;
- u16 unk04;
- u16 unk06;
-};
+ if (dst->width - dstX < width)
+ xEnd = dst->width - dstX + srcX;
+ else
+ xEnd = width + srcX;
+
+ if (dst->height - dstY < height)
+ yEnd = srcY + dst->height - dstY;
+ else
+ yEnd = srcY + height;
-#ifdef NONMATCHING
-void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
-{
- // r3 = a3
- // r4 = a5
- // r1 = a6
- // r5 = a7
- // sp+00 = a0
- // sp+04 = a1
- // sp+08 = a2
- // sp+0c = a4
- int sp10 = a1->unk04 - a4 < a6 ? a1->unk04 - a4 + a2 : a6 + a2;
- int sp14 = a0->unk06 - a5 < a7 ? a3 + a0->unk06 - a5 : a3 + a7;
- int sp18 = (a0->unk04 + (a0->unk04 & 0x7)) / 8;
- int sp1c = (a1->unk04 + (a1->unk04 & 0x7)) / 8;
- int r12; // sp+20
- int r8; // sp+24
- int r5;
- int r6;
- u16 r2;
-
- for (r12 = a3, r8 = a5; r12 < sp14; r12++, r8++)
- {
- for (r5 = a2, r6 = a4; a5 < sp10; a5++, a6++)
+ multiplierSrcY = (src->width + (src->width & 7)) >> 3;
+ multiplierDstY = (dst->width + (dst->width & 7)) >> 3;
+
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
{
- u8 *r3 = a0->unk00 + ((r5 >> 1) & 0x3) + ((r5 >> 3) << 5) + (((r12 >> 3) * sp18) << 5) + ((r12 & 0x7) << 2);
- u8 *r4 = a1->unk00 + ((r6 >> 1) & 0x3) + ((r6 >> 3) << 5) + (((r8 >> 3) * sp1c) << 5) + ((r8 & 0x7) << 2);
- if (((uintptr_t)r4) & 0x1)
+ pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B);
+ pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B);
+
+ if ((uintptr_t )pixelsDst & 0x1)
{
- u16 *r4_2 = (u16 *)(r4 - 1);
- if (r6 & 0x1)
+ pixelsDst = (void*)(pixelsDst) - 1;
+ if (loopDstX & 0x1)
{
- r2 = *r4_2 & 0x0fff;
- if (r5 & 0x1)
- *r4_2 = r2 | ((*r3 & 0xf0) << 8);
+ toOrr = *pixelsDst & 0x0fff;
+ if (loopSrcX & 0x1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8);
else
- *r4_2 = r2 | ((*r3 & 0x0f) << 12);
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12);
}
else
{
- r2 = *r4_2 * 0xf0ff;
- if (r5 & 0x1)
- *r4_2 = r2 | ((*r3 & 0xf0) << 4);
+ toOrr = *pixelsDst & 0xf0ff;
+ if (loopSrcX & 0x1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4);
else
- *r4_2 = r2 | ((*r3 & 0x0f) << 8);
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8);
}
}
else
{
- u16 *r4_2 = (u16 *)r4;
- if (r6 & 1)
+ if (loopDstX & 1)
{
- r2 = *r4_2 & 0xff0f;
- if (r5 & 1)
- *r4_2 = r2 | ((*r3 & 0xf0) << 0);
+ toOrr = *pixelsDst & 0xff0f;
+ if (loopSrcX & 1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0);
else
- *r4_2 = r2 | ((*r3 & 0x0f) << 4);
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4);
}
else
{
- r2 = *r4_2 & 0xfff0;
- if (r5 & 1)
- *r4_2 = r2 | ((*r3 & 0xf0) >> 4);
+ toOrr = *pixelsDst & 0xfff0;
+ if (loopSrcX & 1)
+ *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4);
else
- *r4_2 = r2 | ((*r3 & 0x0f) >> 0);
+ *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0);
}
}
+
+ // Needed to match, urgh.
+ #ifndef NONMATCHING
+ asm("":::"r4");
+ pixelsDst++;pixelsDst--;
+ #endif // NONMATCHING
}
}
}
-#else
-NAKED
-void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
-{
- asm("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, #0x28\n\
- str r0, [sp]\n\
- str r1, [sp, #0x4]\n\
- ldr r0, [sp, #0x48]\n\
- ldr r4, [sp, #0x4C]\n\
- ldr r1, [sp, #0x50]\n\
- ldr r5, [sp, #0x54]\n\
- lsl r2, #16\n\
- lsr r2, #16\n\
- str r2, [sp, #0x8]\n\
- lsl r3, #16\n\
- lsr r3, #16\n\
- lsl r0, #16\n\
- lsr r0, #16\n\
- str r0, [sp, #0xC]\n\
- lsl r4, #16\n\
- lsr r4, #16\n\
- lsl r1, #16\n\
- lsr r1, #16\n\
- lsl r5, #16\n\
- lsr r5, #16\n\
- ldr r2, [sp, #0x4]\n\
- ldrh r0, [r2, #0x4]\n\
- ldr r2, [sp, #0xC]\n\
- sub r0, r2\n\
- ldr r2, [sp, #0x8]\n\
- add r2, r1, r2\n\
- str r2, [sp, #0x10]\n\
- cmp r0, r1\n\
- bge _0819A0CC\n\
- ldr r1, [sp, #0x8]\n\
- add r0, r1\n\
- str r0, [sp, #0x10]\n\
-_0819A0CC:\n\
- ldr r2, [sp, #0x4]\n\
- ldrh r1, [r2, #0x6]\n\
- sub r0, r1, r4\n\
- cmp r0, r5\n\
- bge _0819A0DE\n\
- add r0, r3, r1\n\
- sub r0, r4\n\
- str r0, [sp, #0x14]\n\
- b _0819A0E2\n\
-_0819A0DE:\n\
- add r5, r3, r5\n\
- str r5, [sp, #0x14]\n\
-_0819A0E2:\n\
- ldr r0, [sp]\n\
- ldrh r1, [r0, #0x4]\n\
- mov r2, #0x7\n\
- add r0, r1, #0\n\
- and r0, r2\n\
- add r1, r0\n\
- asr r1, #3\n\
- str r1, [sp, #0x18]\n\
- ldr r0, [sp, #0x4]\n\
- ldrh r1, [r0, #0x4]\n\
- add r0, r1, #0\n\
- and r0, r2\n\
- add r1, r0\n\
- asr r1, #3\n\
- str r1, [sp, #0x1C]\n\
- mov r12, r3\n\
- mov r8, r4\n\
- ldr r1, [sp, #0x14]\n\
- cmp r12, r1\n\
- blt _0819A10C\n\
- b _0819A24A\n\
-_0819A10C:\n\
- ldr r5, [sp, #0x8]\n\
- ldr r6, [sp, #0xC]\n\
- mov r2, r12\n\
- add r2, #0x1\n\
- str r2, [sp, #0x20]\n\
- mov r0, r8\n\
- add r0, #0x1\n\
- str r0, [sp, #0x24]\n\
- ldr r1, [sp, #0x10]\n\
- cmp r5, r1\n\
- blt _0819A124\n\
- b _0819A23A\n\
-_0819A124:\n\
- mov r7, #0x1\n\
- mov r2, #0xF0\n\
- mov r10, r2\n\
- mov r0, #0xF\n\
- mov r9, r0\n\
-_0819A12E:\n\
- asr r0, r5, #1\n\
- mov r1, #0x3\n\
- and r0, r1\n\
- ldr r2, [sp]\n\
- ldr r1, [r2]\n\
- add r1, r0\n\
- asr r0, r5, #3\n\
- lsl r0, #5\n\
- add r1, r0\n\
- mov r2, r12\n\
- asr r0, r2, #3\n\
- ldr r2, [sp, #0x18]\n\
- mul r0, r2\n\
- lsl r0, #5\n\
- add r1, r0\n\
- mov r2, r12\n\
- lsl r0, r2, #29\n\
- lsr r0, #27\n\
- add r3, r1, r0\n\
- asr r0, r6, #1\n\
- mov r1, #0x3\n\
- and r0, r1\n\
- ldr r2, [sp, #0x4]\n\
- ldr r1, [r2]\n\
- add r1, r0\n\
- asr r0, r6, #3\n\
- lsl r0, #5\n\
- add r1, r0\n\
- mov r2, r8\n\
- asr r0, r2, #3\n\
- ldr r2, [sp, #0x1C]\n\
- mul r0, r2\n\
- lsl r0, #5\n\
- add r1, r0\n\
- mov r2, r8\n\
- lsl r0, r2, #29\n\
- lsr r0, #27\n\
- add r4, r1, r0\n\
- add r0, r4, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A1DA\n\
- sub r4, #0x1\n\
- add r0, r6, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A1B2\n\
- ldrh r0, [r4]\n\
- ldr r2, =0x00000fff\n\
- and r2, r0\n\
- add r0, r5, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A1A8\n\
- ldrb r1, [r3]\n\
- mov r0, r10\n\
- and r0, r1\n\
- lsl r0, #8\n\
- b _0819A22A\n\
- .pool\n\
-_0819A1A8:\n\
- ldrb r1, [r3]\n\
- mov r0, r9\n\
- and r0, r1\n\
- lsl r0, #12\n\
- b _0819A22A\n\
-_0819A1B2:\n\
- ldrh r0, [r4]\n\
- ldr r2, =0x0000f0ff\n\
- and r2, r0\n\
- add r0, r5, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A1D0\n\
- ldrb r1, [r3]\n\
- mov r0, r10\n\
- and r0, r1\n\
- lsl r0, #4\n\
- b _0819A22A\n\
- .pool\n\
-_0819A1D0:\n\
- ldrb r1, [r3]\n\
- mov r0, r9\n\
- and r0, r1\n\
- lsl r0, #8\n\
- b _0819A22A\n\
-_0819A1DA:\n\
- add r0, r6, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A206\n\
- ldrh r0, [r4]\n\
- ldr r2, =0x0000ff0f\n\
- and r2, r0\n\
- add r0, r5, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A1FC\n\
- ldrb r1, [r3]\n\
- mov r0, r10\n\
- b _0819A228\n\
- .pool\n\
-_0819A1FC:\n\
- ldrb r1, [r3]\n\
- mov r0, r9\n\
- and r0, r1\n\
- lsl r0, #4\n\
- b _0819A22A\n\
-_0819A206:\n\
- ldrh r0, [r4]\n\
- ldr r2, =0x0000fff0\n\
- and r2, r0\n\
- add r0, r5, #0\n\
- and r0, r7\n\
- cmp r0, #0\n\
- beq _0819A224\n\
- ldrb r1, [r3]\n\
- mov r0, r10\n\
- and r0, r1\n\
- lsr r0, #4\n\
- b _0819A22A\n\
- .pool\n\
-_0819A224:\n\
- ldrb r1, [r3]\n\
- mov r0, r9\n\
-_0819A228:\n\
- and r0, r1\n\
-_0819A22A:\n\
- orr r2, r0\n\
- strh r2, [r4]\n\
- add r5, #0x1\n\
- add r6, #0x1\n\
- ldr r0, [sp, #0x10]\n\
- cmp r5, r0\n\
- bge _0819A23A\n\
- b _0819A12E\n\
-_0819A23A:\n\
- ldr r1, [sp, #0x20]\n\
- mov r12, r1\n\
- ldr r2, [sp, #0x24]\n\
- mov r8, r2\n\
- ldr r0, [sp, #0x14]\n\
- cmp r12, r0\n\
- bge _0819A24A\n\
- b _0819A10C\n\
-_0819A24A:\n\
- add sp, #0x28\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n");
-}
-#endif
void sub_819A25C(u8 palOffset, u16 speciesId)
{
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 801e2546b..cb0d621c6 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -27,7 +27,7 @@ EWRAM_DATA static struct YesNoFuncTable gUnknown_0203A138 = {0};
EWRAM_DATA static u8 gUnknown_0203A140 = 0;
// IWRAM bss vars
-IWRAM_DATA static TaskFunc gUnknown_0300117C;
+static TaskFunc gUnknown_0300117C;
// const rom data
static const struct OamData sOamData_859F4E8 =
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 34dd1fe2b..1536cf413 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -458,338 +458,106 @@ void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0)
arg0->unk354 = 1;
}
-/* TODO
-static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
+static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 *arg1, struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 *arg5)
{
- s32 var_2C = 0;
- u16 r8;
- s32 r10, r4, r2, r0, r1, var_30;
+ u16 i, r8, r10, r0, var_30;
+ u16 *ptr;
+ s32 r4, var_2C;
+ var_2C = 0;
if (arg2->unk2 < arg3->unk2)
{
- r2 = arg2->unk2;
r10 = arg2->unk2;
r0 = arg3->unk2;
- r1 = arg2->unk0;
- r4 = r1 << 10;
+ r4 = arg2->unk0 << 10;
var_30 = arg3->unk0;
+ r8 = r0 - r10;
+ if (r8 != 0)
+ var_2C = ((var_30 - arg2->unk0) << 10) / r8;
}
else
{
- r0 = arg2->unk0;
+ r0 = arg2->unk2;
r10 = arg3->unk2;
- r1 = arg3->unk0;
- r4 = r1 << 10;
+ r4 = arg3->unk0 << 10;
var_30 = arg2->unk0;
- r2 = arg3->unk2;
+ r8 = r0 - r10;
+ if (r8 != 0)
+ var_2C = ((var_30 - arg3->unk0) << 10) / r8;
}
- r8 = r0 - r2;
- if (r8 != 0)
- var_2C = ((var_30 - r1) << 10) / r8;
r8++;
if (arg5 == NULL)
{
+ arg1 += (r10 - 56) * 2;
+ for (i = 0; i < r8; i++)
+ {
+ arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
+ r4 += var_2C;
+ arg1 += 2;
+ }
+ ptr = arg1 - 2;
}
-}
-*/
-NAKED
-static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- str r0, [sp]\n\
- adds r6, r1, 0\n\
- adds r5, r2, 0\n\
- str r3, [sp, 0x4]\n\
- ldr r0, [sp, 0x38]\n\
- ldr r7, [sp, 0x3C]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- movs r0, 0\n\
- str r0, [sp, 0xC]\n\
- ldrh r0, [r5, 0x2]\n\
- ldrh r1, [r3, 0x2]\n\
- cmp r0, r1\n\
- bcs _081D22B2\n\
- adds r2, r0, 0\n\
- mov r10, r2\n\
- ldrh r0, [r3, 0x2]\n\
- ldrh r1, [r5]\n\
- lsls r4, r1, 10\n\
- ldrh r3, [r3]\n\
- str r3, [sp, 0x8]\n\
- b _081D22C6\n\
- _081D22B2:\n\
- ldrh r0, [r5, 0x2]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r1, [r1, 0x2]\n\
- mov r10, r1\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r1, [r2]\n\
- lsls r4, r1, 10\n\
- ldrh r3, [r5]\n\
- str r3, [sp, 0x8]\n\
- mov r2, r10\n\
- _081D22C6:\n\
- subs r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- cmp r0, 0\n\
- beq _081D22DE\n\
- subs r0, r3, r1\n\
- lsls r0, 10\n\
- mov r1, r8\n\
- bl __divsi3\n\
- str r0, [sp, 0xC]\n\
- _081D22DE:\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- cmp r7, 0\n\
- bne _081D2328\n\
- mov r0, r10\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r6, r0\n\
- movs r5, 0\n\
- mov r3, r9\n\
- lsls r3, 1\n\
- mov r12, r3\n\
- ldr r0, [sp, 0x8]\n\
- add r0, r9\n\
- str r0, [sp, 0x10]\n\
- cmp r7, r8\n\
- bcs _081D23B6\n\
- movs r7, 0x1\n\
- _081D2308:\n\
- adds r2, r3, r6\n\
- asrs r1, r4, 10\n\
- asrs r0, r4, 9\n\
- ands r0, r7\n\
- adds r1, r0\n\
- add r1, r9\n\
- strh r1, [r2]\n\
- ldr r1, [sp, 0xC]\n\
- adds r4, r1\n\
- adds r6, 0x4\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, r8\n\
- bcc _081D2308\n\
- b _081D23B6\n\
- _081D2328:\n\
- ldr r2, [sp, 0xC]\n\
- cmp r2, 0\n\
- ble _081D23C0\n\
- mov r0, r10\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r7, r0\n\
- movs r5, 0\n\
- mov r3, r9\n\
- lsls r3, 1\n\
- mov r12, r3\n\
- ldr r0, [sp, 0x8]\n\
- add r0, r9\n\
- str r0, [sp, 0x10]\n\
- cmp r5, r8\n\
- bcs _081D237A\n\
- ldr r0, =0x00026bff\n\
- cmp r4, r0\n\
- bgt _081D237A\n\
- mov r1, r12\n\
- str r1, [sp, 0x14]\n\
- _081D2352:\n\
- ldr r3, [sp, 0x14]\n\
- adds r2, r3, r7\n\
- asrs r1, r4, 10\n\
- asrs r0, r4, 9\n\
- movs r3, 0x1\n\
- ands r0, r3\n\
- adds r1, r0\n\
- add r1, r9\n\
- strh r1, [r2]\n\
- ldr r0, [sp, 0xC]\n\
- adds r4, r0\n\
- adds r7, 0x4\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, r8\n\
- bcs _081D237A\n\
- ldr r1, =0x00026bff\n\
- cmp r4, r1\n\
- ble _081D2352\n\
- _081D237A:\n\
- mov r2, r10\n\
- adds r1, r2, r5\n\
- ldr r3, [sp]\n\
- movs r2, 0xD4\n\
- lsls r2, 2\n\
- adds r0, r3, r2\n\
- strh r1, [r0]\n\
- ldrh r0, [r0]\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r6, r0\n\
- cmp r5, r8\n\
- bcs _081D23B6\n\
- mov r3, r12\n\
- movs r7, 0x1\n\
- _081D2398:\n\
- adds r2, r3, r6\n\
- asrs r1, r4, 10\n\
- asrs r0, r4, 9\n\
- ands r0, r7\n\
- adds r1, r0\n\
- add r1, r9\n\
- strh r1, [r2]\n\
- ldr r0, [sp, 0xC]\n\
- adds r4, r0\n\
- adds r6, 0x4\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, r8\n\
- bcc _081D2398\n\
- _081D23B6:\n\
- subs r0, r6, 0x4\n\
- b _081D248C\n\
- .pool\n\
- _081D23C0:\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0\n\
- bge _081D2464\n\
- mov r0, r10\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r6, r0\n\
- movs r5, 0\n\
- mov r2, r9\n\
- lsls r2, 1\n\
- mov r12, r2\n\
- ldr r3, [sp, 0x8]\n\
- add r3, r9\n\
- str r3, [sp, 0x10]\n\
- cmp r5, r8\n\
- bcs _081D241E\n\
- adds r3, r2, r6\n\
- asrs r1, r4, 10\n\
- asrs r0, r4, 9\n\
- movs r2, 0x1\n\
- ands r0, r2\n\
- adds r1, r0\n\
- add r1, r9\n\
- strh r1, [r3]\n\
- b _081D2414\n\
- _081D23F2:\n\
- ldr r0, [sp, 0xC]\n\
- adds r4, r0\n\
- adds r6, 0x4\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, r8\n\
- bcs _081D241E\n\
- mov r1, r12\n\
- adds r3, r1, r6\n\
- asrs r2, r4, 10\n\
- asrs r0, r4, 9\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- adds r2, r0\n\
- add r2, r9\n\
- strh r2, [r3]\n\
- _081D2414:\n\
- ldr r0, =0x00026bff\n\
- cmp r4, r0\n\
- bgt _081D23F2\n\
- movs r0, 0x9B\n\
- strh r0, [r3]\n\
- _081D241E:\n\
- mov r2, r10\n\
- adds r1, r2, r5\n\
- ldr r3, [sp]\n\
- movs r2, 0xD4\n\
- lsls r2, 2\n\
- adds r0, r3, r2\n\
- strh r1, [r0]\n\
- ldrh r0, [r0]\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r7, r0\n\
- cmp r5, r8\n\
- bcs _081D245A\n\
- mov r3, r12\n\
- movs r6, 0x1\n\
- _081D243C:\n\
- adds r2, r3, r7\n\
- asrs r1, r4, 10\n\
- asrs r0, r4, 9\n\
- ands r0, r6\n\
- adds r1, r0\n\
- add r1, r9\n\
- strh r1, [r2]\n\
- ldr r0, [sp, 0xC]\n\
- adds r4, r0\n\
- adds r7, 0x4\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, r8\n\
- bcc _081D243C\n\
- _081D245A:\n\
- subs r0, r7, 0x4\n\
- b _081D248C\n\
- .pool\n\
- _081D2464:\n\
- ldr r1, [sp]\n\
- movs r2, 0xD4\n\
- lsls r2, 2\n\
- adds r0, r1, r2\n\
- mov r3, r10\n\
- strh r3, [r0]\n\
- mov r0, r10\n\
- subs r0, 0x38\n\
- lsls r0, 2\n\
- adds r6, r0\n\
- adds r7, r0\n\
- ldrh r0, [r5]\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- strh r0, [r7]\n\
- movs r0, 0x9B\n\
- strh r0, [r7, 0x2]\n\
- b _081D2494\n\
- _081D248C:\n\
- add r0, r12\n\
- mov r2, sp\n\
- ldrh r2, [r2, 0x10]\n\
- strh r2, [r0]\n\
- _081D2494:\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- ");
+ else if (var_2C > 0)
+ {
+ arg5 += (r10 - 56) * 2;
+ // Less readable than the other loops, but it has to be written this way to match.
+ for (i = 0; i < r8; arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4, r4 += var_2C, arg5 += 2, i++)
+ {
+ if (r4 >= (155 << 10))
+ break;
+ }
+
+ arg0->unk350 = r10 + i;
+ arg1 += (arg0->unk350 - 56) * 2;
+ for (; i < r8; i++)
+ {
+ arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
+ r4 += var_2C;
+ arg1 += 2;
+ }
+
+ ptr = arg1 - 2;
+ }
+ else if (var_2C < 0)
+ {
+ arg1 += (r10 - 56) * 2;
+ for (i = 0; i < r8; i++)
+ {
+ arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
+ if (r4 < (155 << 10))
+ {
+ arg1[arg4] = 155;
+ break;
+ }
+ r4 += var_2C;
+ arg1 += 2;
+ }
+
+ arg0->unk350 = r10 + i;
+ arg5 += (arg0->unk350 - 56) * 2;
+ for (; i < r8; i++)
+ {
+ arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
+ r4 += var_2C;
+ arg5 += 2;
+ }
+
+ ptr = arg5 - 2;
+ }
+ else
+ {
+ arg0->unk350 = r10;
+ arg1 += (r10 - 56) * 2;
+ arg5 += (r10 - 56) * 2;
+ arg1[1] = arg2->unk0 + 1;
+ arg5[0] = arg3->unk0;
+ arg5[1] = 155;
+ return;
+ }
+
+ ptr[arg4] = arg4 + var_30;
}
static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0)
@@ -799,18 +567,18 @@ static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0)
if (arg0->unk12C[0].unk2 < arg0->unk12C[1].unk2)
{
r6 = arg0->unk12C[0].unk2;
- sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL);
+ sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL);
}
else
{
r6 = arg0->unk12C[1].unk2;
- sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL);
+ sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL);
}
- sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL);
+ sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL);
i = (arg0->unk12C[2].unk2 <= arg0->unk12C[3].unk2);
- sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248);
+ sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248[0]);
for (i = 56; i < r6; i++)
{
arg0->unk140[i - 56][0] = 0;
@@ -841,15 +609,15 @@ static void sub_81D2634(struct UnknownStruct_81D1ED4 *arg0)
if (arg0->unk12C[0].unk2 < arg0->unk12C[4].unk2)
{
r6 = arg0->unk12C[0].unk2;
- sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL);
+ sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL);
}
else
{
r6 = arg0->unk12C[4].unk2;
- sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL);
+ sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL);
}
- sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL);
+ sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL);
for (i = 56; i < r6; i++)
{
@@ -1290,7 +1058,7 @@ void sub_81D3094(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 arg5, u
u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
LoadSpecialPokePic(&gMonFrontPicTable[species], tilesDst, species, personality, TRUE);
- LZ77UnCompWram(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst);
+ LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst);
}
}
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index 898180df4..e398c2334 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -18,6 +18,7 @@
#include "constants/maps.h"
#include "constants/rgb.h"
#include "constants/songs.h"
+#include "constants/metatile_labels.h"
struct MirageTowerPulseBlend {
u8 taskId;
@@ -109,24 +110,24 @@ const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[] =
static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
{
- {18, 53, 0x251},
- {19, 53, 0x251},
- {20, 53, 0x251},
- {18, 54, 0x251},
- {19, 54, 0x251},
- {20, 54, 0x251},
- {18, 55, 0x251},
- {19, 55, 0x251},
- {20, 55, 0x251},
- {18, 56, 0x251},
- {19, 56, 0x251},
- {20, 56, 0x251},
- {18, 57, 0x259},
- {19, 57, 0x259},
- {20, 57, 0x259},
- {18, 58, 0x121},
- {19, 58, 0x121},
- {20, 58, 0x121},
+ {18, 53, METATILE_ID(Mauville, DeepSand_Center)},
+ {19, 53, METATILE_ID(Mauville, DeepSand_Center)},
+ {20, 53, METATILE_ID(Mauville, DeepSand_Center)},
+ {18, 54, METATILE_ID(Mauville, DeepSand_Center)},
+ {19, 54, METATILE_ID(Mauville, DeepSand_Center)},
+ {20, 54, METATILE_ID(Mauville, DeepSand_Center)},
+ {18, 55, METATILE_ID(Mauville, DeepSand_Center)},
+ {19, 55, METATILE_ID(Mauville, DeepSand_Center)},
+ {20, 55, METATILE_ID(Mauville, DeepSand_Center)},
+ {18, 56, METATILE_ID(Mauville, DeepSand_Center)},
+ {19, 56, METATILE_ID(Mauville, DeepSand_Center)},
+ {20, 56, METATILE_ID(Mauville, DeepSand_Center)},
+ {18, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
+ {19, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
+ {20, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
+ {18, 58, METATILE_ID(General, SandPit_Center)},
+ {19, 58, METATILE_ID(General, SandPit_Center)},
+ {20, 58, METATILE_ID(General, SandPit_Center)},
};
static const union AnimCmd gSpriteAnim_8617DEC[] =
@@ -257,7 +258,7 @@ EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
EWRAM_DATA static struct BgRegOffsets *sBgShakeOffsets = NULL;
EWRAM_DATA struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
-IWRAM_DATA static u16 gUnknown_030012A8[8];
+static u16 gUnknown_030012A8[8];
bool8 IsMirageTowerVisible(void)
{
diff --git a/src/multiboot.c b/src/multiboot.c
index da90a55c0..c7e14392e 100644
--- a/src/multiboot.c
+++ b/src/multiboot.c
@@ -1,7 +1,7 @@
#include "gba/gba.h"
#include "multiboot.h"
-IWRAM_DATA static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
+static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
static int MultiBootSend(struct MultiBootParam *mp, u16 data);
static int MultiBootHandShake(struct MultiBootParam *mp);
@@ -435,7 +435,7 @@ static int MultiBootHandShake(struct MultiBootParam *mp)
#undef must_data
}
-static void MultiBootWaitCycles(u32 cycles)
+static NOINLINE void MultiBootWaitCycles(u32 cycles)
{
asm("mov r2, pc");
asm("lsr r2, #24");
diff --git a/src/new_game.c b/src/new_game.c
index 7a0c668a4..ee67da9be 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -37,6 +37,7 @@
#include "contest.h"
#include "item_menu.h"
#include "pokemon_storage_system.h"
+#include "pokemon_jump.h"
#include "decoration_inventory.h"
#include "secret_base.h"
#include "player_pc.h"
@@ -45,8 +46,6 @@
#include "mevent.h"
#include "union_room_chat.h"
-extern void ResetPokeJumpResults(void);
-
extern const u8 EventScript_ResetAllMapFlags[];
// this file's functions
diff --git a/src/overworld.c b/src/overworld.c
index 4356752c1..2097abc53 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -186,15 +186,15 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
-IWRAM_DATA static void *sUnusedOverworldCallback;
-IWRAM_DATA static u8 sPlayerTradingStates[4];
+static void *sUnusedOverworldCallback;
+static u8 sPlayerTradingStates[4];
// This callback is called with a player's key code. It then returns an
// adjusted key code, effectively intercepting the input before anything
// can process it.
-IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32);
-IWRAM_DATA static bool8 sUnknown_03000E18;
-IWRAM_DATA static u8 sRfuKeepAliveTimer;
-IWRAM_DATA static u32 sUnusedVar;
+static u16 (*sPlayerKeyInterceptCallback)(u32);
+static bool8 sUnknown_03000E18;
+static u8 sRfuKeepAliveTimer;
+static u32 sUnusedVar;
// IWRAM common
u16 *gBGTilemapBuffers1;
diff --git a/src/palette.c b/src/palette.c
index 5d1d6635c..eb49ce4c6 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -54,8 +54,10 @@ static void UpdateBlendRegisters(void);
static bool8 IsSoftwarePaletteFadeFinishing(void);
static void sub_80A2D54(u8 taskId);
-EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
-EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
+// palette buffers require alignment with agbcc because
+// unaligned word reads are issued in BlendPalette otherwise
+ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
+ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
static EWRAM_DATA u32 gFiller_2037FE0 = 0;
diff --git a/src/party_menu.c b/src/party_menu.c
index d13dc1e97..dd0a4dabd 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -97,18 +97,21 @@ struct Unk_Rodata1
struct Struct203CEC4
{
- TaskFunc unk0;
+ TaskFunc task;
MainCallback exitCallback;
u32 unk8_0:1;
u32 unk8_1:3;
u32 unk8_2:7;
u32 unk9_0:7;
- u32 unkA_0:14;
- u8 unkC[3];
- u8 unkF[8];
- u8 unk17;
- u16 palBuffer[0xB0];
- u8 filler[0xA0];
+ u32 messageId:14;
+ u8 windowId[3];
+ u8 actions[8];
+ u8 listSize;
+ // In vanilla Emerald, only the first 0xB0 hwords (0x160 bytes) are actually used.
+ // However, a full 0x100 hwords (0x200 bytes) are allocated.
+ // It is likely that the 0x160 value used below is a constant defined by
+ // bin2c, the utility used to encode the compressed palette data.
+ u16 palBuffer[BG_PLTT_SIZE / sizeof(u16)];
s16 data[16];
};
@@ -117,10 +120,10 @@ struct Struct203CEDC
const struct Unk_Rodata1 *unk0;
const u8 *unk4;
u8 windowId;
- u8 unk9;
- u8 unkA;
- u8 unkB;
- u8 unkC;
+ u8 monSpriteId;
+ u8 itemSpriteId;
+ u8 pokeballSpriteId;
+ u8 statusSpriteId;
};
// EWRAM vars
@@ -162,7 +165,7 @@ static void FreePartyPointers(void);
static void PartyPaletteBufferCopy(u8);
static void sub_81B0CEC(u8);
static void UpdateSelectedPartyBox(struct Struct203CEDC *, u8);
-static void sub_81B2720(u8);
+static void DrawEmptySlot(u8 windowId);
static void DisplayPartyPokemonSelectForRelearner(u8);
static void DisplayPartyPokemonSelectForContest(u8);
static void DisplayPartyPokemonSelectForBattle(u8);
@@ -244,7 +247,7 @@ static void sub_81B227C(u8);
static bool8 CanLearnTutorMove(u16, u8);
static u16 GetTutorMove(u8);
static bool8 sub_81B314C(void);
-static void sub_81B3414(struct Pokemon*, u8);
+static void CreateActionList(struct Pokemon*, u8);
static u8 sub_81B8A2C(struct Pokemon*);
static u8 sub_81B856C(s8);
static void sub_81B469C(u8);
@@ -292,7 +295,7 @@ static void UpdatePartyMonIconFrame(struct Sprite*);
static void UpdatePartyMonIconFrameAndBounce(struct Sprite*);
static void sub_81B5CB0(u16, struct Struct203CEDC*);
static void sub_81B5DF0(u8, u8);
-static void sub_81B5E74(struct Sprite*);
+static void SpriteCB_HeldItem(struct Sprite*);
static void party_menu_get_status_condition_and_update_object(struct Pokemon*, struct Struct203CEDC*);
static void party_menu_update_status_condition_object(u8, struct Struct203CEDC*);
static u8 sub_81B8984(void);
@@ -470,7 +473,7 @@ static const u8 gUnknown_08615704[][6][8] =
static const u32 gUnknown_086157C4[] = INCBIN_U32("graphics/interface/unknown_6157C4.bin");
static const u32 gUnknown_086157E0[] = INCBIN_U32("graphics/interface/unknown_6157E0.bin");
-static const u8 gUnknown_086157FC[][3] =
+static const u8 sFontColorTable[][3] =
{
{0, 3, 2},
{0, 1, 6},
@@ -921,11 +924,33 @@ static const struct WindowTemplate gUnknown_08615980 =
.baseBlock = 0x39D,
};
-static const u8 gUnknown_08615988[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 40, 59, 60, 58, 58, 58, 58, 58, 58, 61, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
-static const u8 gUnknown_086159CE[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
-static const u8 gUnknown_08615A14[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, 51, 51, 51, 51, 51, 54, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
-static const u8 gUnknown_08615A4A[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 50, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
-static const u8 gUnknown_08615A80[] = {21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39};
+static const u8 sMainSlotTileNums[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 40, 59, 60, 58, 58, 58, 58, 58, 58, 61,
+ 15, 16, 16, 16, 16, 16, 16, 16, 16, 17,
+ 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
+
+static const u8 sMainSlotTileNums_Egg[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
+ 40, 41, 41, 41, 41, 41, 41, 41, 41, 42,
+ 15, 16, 16, 16, 16, 16, 16, 16, 16, 17,
+ 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
+
+static const u8 sOtherSlotsTileNums[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45,
+ 49, 33, 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, 51, 51, 51, 51, 51, 54,
+ 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
+
+static const u8 sOtherSlotsTileNums_Egg[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45,
+ 49, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 50,
+ 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
+
+static const u8 sEmptySlotTileNums[] = {21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,
+ 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
+ 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39};
static const u8 gUnknown_08615AB6[] = {11, 12};
static const u8 gUnknown_08615AB8[] = {9, 10};
static const u8 gUnknown_08615ABA[] = {4, 5, 6};
@@ -950,52 +975,52 @@ static const u8 gUnknown_08615AEB[] = {97, 103, 104};
static const u8 gUnknown_08615AEE[] = {161, 167, 168};
static const u8 gUnknown_08615AF1[] = {17, 27, 28};
-static const u8 *const gUnknown_08615AF4[] =
-{
- gUnknown_085E9E43,
- gUnknown_085EA010,
- gUnknown_085EA02A,
- gUnknown_085E9E55,
- gUnknown_085E9E64,
- gUnknown_085E9E79,
- gUnknown_085E9E8F,
- gUnknown_085E9EBC,
- gUnknown_085E9ED4,
- gUnknown_085E9EE9,
- gUnknown_085E9FDB,
- gUnknown_085EA046,
- gUnknown_085EA05B,
- gUnknown_085E9F01,
- gUnknown_085E9F58,
- gUnknown_085E9F6F,
- gUnknown_085E9F81,
- gUnknown_085E9F90,
- gUnknown_085E9FA7,
- gUnknown_085E9FC2,
+static const u8 *const sActionStringTable[] =
+{
+ gText_ChoosePokemon,
+ gText_ChoosePokemonCancel,
+ gText_ChoosePokemonConfirm,
+ gText_MoveToWhere,
+ gText_TeachWhichPokemon,
+ gText_UseOnWhichPokemon,
+ gText_GiveToWhichPokemon,
+ gText_NothingToCut,
+ gText_CantSurfHere,
+ gText_AlreadySurfing,
+ gText_CurrentIsTooFast,
+ gText_EnjoyCycling,
+ gText_InUseAlready_PM,
+ gText_CantUseHere,
+ gText_NoPokemonForBattle,
+ gText_ChoosePokemon2,
+ gText_NotEnoughHp,
+ gText_PokemonAreNeeded,
+ gText_PokemonCantBeSame,
+ gText_NoIdenticalHoldItems,
gText_EmptyString2,
- gUnknown_085E9EA6,
- gUnknown_085E9F16,
- gUnknown_085E9F2A,
- gUnknown_085E9F42,
- gUnknown_085E9FF9,
- gUnknown_085EA073,
+ gText_DoWhatWithPokemon,
+ gText_RestoreWhichMove,
+ gText_BoostPp,
+ gText_DoWhatWithItem,
+ gText_DoWhatWithMail,
+ gText_AlreadyHoldingOne,
};
-static const u8 *const gUnknown_08615B60[] =
-{
- gUnknown_085EA091,
- gUnknown_085EA099,
- gUnknown_085EA09E,
- gUnknown_085EA0A4,
- gUnknown_085EA0AB,
- gUnknown_085EA0E7,
- gUnknown_085EA0B1,
- gUnknown_085EA0B6,
- gUnknown_085EA0BF,
- gUnknown_085EA0C5,
- gUnknown_085EA0CF,
- gUnknown_085EA0D7,
- gUnknown_085EA0DC,
+static const u8 *const sSelectionStringTable[] =
+{
+ gText_NoUse,
+ gText_Able,
+ gText_First_PM,
+ gText_Second_PM,
+ gText_Third_PM,
+ gText_Fourth,
+ gText_Able2,
+ gText_NotAble,
+ gText_Able3,
+ gText_NotAble2,
+ gText_Learned,
+ gText_Have,
+ gText_DontHave,
};
// Unknown unused data. Feel free to remove.
@@ -1093,21 +1118,21 @@ struct
[MENU_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCb_FieldMove},
};
-static const u8 gUnknown_08615D10[] = {0, 1, 2};
-static const u8 gUnknown_08615D13[] = {10, 0, 2};
-static const u8 gUnknown_08615D16[] = {11, 0, 2};
-static const u8 gUnknown_08615D19[] = {0, 2};
-static const u8 gUnknown_08615D1B[] = {12, 0, 2};
-static const u8 gUnknown_08615D1E[] = {13, 0, 2};
-static const u8 gUnknown_08615D21[] = {14, 0, 2};
-static const u8 gUnknown_08615D24[] = {4, 5, 9};
-static const u8 gUnknown_08615D27[] = {8, 7, 9};
-static const u8 gUnknown_08615D2A[] = {15, 0, 2};
-static const u8 gUnknown_08615D2D[] = {16, 0, 2};
-static const u8 gUnknown_08615D30[] = {17, 0, 2};
-static const u8 gUnknown_08615D33[] = {5, 18, 2};
-
-static const u8 *const gUnknown_08615D38[] =
+static const u8 gUnknown_08615D10[] = {MENU_SUMMARY, MENU_SWITCH, MENU_CANCEL1};
+static const u8 gUnknown_08615D13[] = {MENU_SHIFT, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D16[] = {MENU_SEND_OUT, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D19[] = {MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D1B[] = {MENU_ENTER, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D1E[] = {MENU_NO_ENTRY, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D21[] = {MENU_STORE, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D24[] = {MENU_GIVE, MENU_TAKE_ITEM, MENU_CANCEL2};
+static const u8 gUnknown_08615D27[] = {MENU_READ, MENU_TAKE_MAIL, MENU_CANCEL2};
+static const u8 gUnknown_08615D2A[] = {MENU_REGISTER, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D2D[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D30[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1};
+static const u8 gUnknown_08615D33[] = {MENU_TAKE_ITEM, MENU_TOSS, MENU_CANCEL1};
+
+static const u8 *const sActionTable[] =
{
NULL,
gUnknown_08615D10,
@@ -1125,7 +1150,23 @@ static const u8 *const gUnknown_08615D38[] =
gUnknown_08615D33,
};
-static const u8 gUnknown_08615D70[] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};
+static const u8 sListSizeTable[] =
+{
+ 0x00,
+ ARRAY_COUNT(gUnknown_08615D10),
+ ARRAY_COUNT(gUnknown_08615D13),
+ ARRAY_COUNT(gUnknown_08615D16),
+ ARRAY_COUNT(gUnknown_08615D1B),
+ ARRAY_COUNT(gUnknown_08615D1E),
+ ARRAY_COUNT(gUnknown_08615D21),
+ ARRAY_COUNT(gUnknown_08615D19),
+ ARRAY_COUNT(gUnknown_08615D24),
+ ARRAY_COUNT(gUnknown_08615D27),
+ ARRAY_COUNT(gUnknown_08615D2A),
+ ARRAY_COUNT(gUnknown_08615D2D),
+ ARRAY_COUNT(gUnknown_08615D30),
+ ARRAY_COUNT(gUnknown_08615D33)
+};
static const u16 sFieldMoves[] =
{
@@ -1168,10 +1209,10 @@ static const u8 *const gUnknown_08615E0C[] =
gText_CantTradeWithTrainer,
};
-static const u32 gUnknown_08615E30[] = INCBIN_U32("graphics/interface/hold_icons.4bpp");
-static const u16 gUnknown_08615E70[] = INCBIN_U16("graphics/interface/hold_icons.gbapal");
+static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp");
+static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal");
-static const struct OamData gOamData_83765EC =
+static const struct OamData sOamData_HeldItem =
{
.y = 0,
.affineMode = 0,
@@ -1188,46 +1229,46 @@ static const struct OamData gOamData_83765EC =
.affineParam = 0,
};
-static const union AnimCmd gSpriteAnim_83765F4[] =
+static const union AnimCmd sSpriteAnim_HeldItem[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_83765FC[] =
+static const union AnimCmd sSpriteAnim_HeldMail[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8376604[] =
+static const union AnimCmd *const sSpriteAnimTable_HeldItem[] =
{
- gSpriteAnim_83765F4,
- gSpriteAnim_83765FC,
+ sSpriteAnim_HeldItem,
+ sSpriteAnim_HeldMail,
};
-static const struct SpriteSheet gUnknown_08615EB0 =
+static const struct SpriteSheet sSpriteSheet_HeldItem =
{
- gUnknown_08615E30, sizeof(gUnknown_08615E30), 0xd750
+ sHeldItemGfx, sizeof(sHeldItemGfx), 0xd750
};
-static const struct SpritePalette gUnknown_08615EB8 =
+static const struct SpritePalette sSpritePalette_HeldItem =
{
- gUnknown_08615E70, 0xd750
+ sHeldItemPalette, 0xd750
};
-static const struct SpriteTemplate gSpriteTemplate_8615EC0 =
+static const struct SpriteTemplate sSpriteTemplate_HeldItem =
{
0xd750,
0xd750,
- &gOamData_83765EC,
- gSpriteAnimTable_8376604,
+ &sOamData_HeldItem,
+ sSpriteAnimTable_HeldItem,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
};
-static const struct OamData sOamData_8615ED8 =
+static const struct OamData sOamData_MenuPokeball =
{
.y = 0,
.affineMode = 0,
@@ -1244,40 +1285,40 @@ static const struct OamData sOamData_8615ED8 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_8615EE0[] =
+static const union AnimCmd sPokeballAnim_Closed[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615EE8[] =
+static const union AnimCmd sPokeballAnim_Open[] =
{
ANIMCMD_FRAME(16, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_8615EF0[] =
+static const union AnimCmd *const sSpriteAnimTable_Pokeball[] =
{
- sSpriteAnim_8615EE0,
- sSpriteAnim_8615EE8
+ sPokeballAnim_Closed,
+ sPokeballAnim_Open
};
-static const struct CompressedSpriteSheet gUnknown_08615EF8 =
+static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeball =
{
gPartyMenuPokeball_Gfx, 0x400, 0x04b0
};
-static const struct CompressedSpritePalette gUnknown_08615F00 =
+static const struct CompressedSpritePalette sSpritePalette_MenuPokeball =
{
gPartyMenuPokeball_Pal, 0x04b0
};
-static const struct SpriteTemplate gSpriteTemplate_8615F08 =
+static const struct SpriteTemplate sSpriteTemplate_MenuPokeball =
{
.tileTag = 0x04b0,
.paletteTag = 0x04b0,
- .oam = &sOamData_8615ED8,
- .anims = sSpriteAnimTable_8615EF0,
+ .oam = &sOamData_MenuPokeball,
+ .anims = sSpriteAnimTable_Pokeball,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -1346,7 +1387,7 @@ static const union AnimCmd *const sSpriteAnimTable_8615F58[] =
sSpriteAnim_8615F50
};
-static const struct CompressedSpriteSheet gUnknown_08615F70 =
+static const struct CompressedSpriteSheet sSpriteSheet_MenuPokeballSmall =
{
gPartyMenuPokeballSmall_Gfx, 0x0300, 0x04b1
};
@@ -1362,7 +1403,7 @@ static const struct SpriteTemplate gSpriteTemplate_8615F78 =
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_8615F90 =
+static const struct OamData sOamData_StatusCondition =
{
.y = 0,
.affineMode = 0,
@@ -1379,82 +1420,82 @@ static const struct OamData sOamData_8615F90 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_8615F98[] =
+static const union AnimCmd sSpriteAnim_StatusPoison[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FA0[] =
+static const union AnimCmd sSpriteAnim_StatusParalyzed[] =
{
ANIMCMD_FRAME(4, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FA8[] =
+static const union AnimCmd sSpriteAnim_StatusSleep[] =
{
ANIMCMD_FRAME(8, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FB0[] =
+static const union AnimCmd sSpriteAnim_StatusFrozen[] =
{
ANIMCMD_FRAME(12, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FB8[] =
+static const union AnimCmd sSpriteAnim_StatusBurn[] =
{
ANIMCMD_FRAME(16, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FC0[] =
+static const union AnimCmd sSpriteAnim_StatusPokerus[] =
{
ANIMCMD_FRAME(20, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FC8[] =
+static const union AnimCmd sSpriteAnim_StatusFaint[] =
{
ANIMCMD_FRAME(24, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8615FD0[] =
+static const union AnimCmd sSpriteAnim_Blank[] =
{
ANIMCMD_FRAME(28, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_8615FD8[] =
+static const union AnimCmd *const sSpriteTemplate_StatusCondition[] =
{
- sSpriteAnim_8615F98,
- sSpriteAnim_8615FA0,
- sSpriteAnim_8615FA8,
- sSpriteAnim_8615FB0,
- sSpriteAnim_8615FB8,
- sSpriteAnim_8615FC0,
- sSpriteAnim_8615FC8,
- sSpriteAnim_8615FD0
+ sSpriteAnim_StatusPoison,
+ sSpriteAnim_StatusParalyzed,
+ sSpriteAnim_StatusSleep,
+ sSpriteAnim_StatusFrozen,
+ sSpriteAnim_StatusBurn,
+ sSpriteAnim_StatusPokerus,
+ sSpriteAnim_StatusFaint,
+ sSpriteAnim_Blank
};
-static const struct CompressedSpriteSheet gUnknown_08615FF8 =
+static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons =
{
gStatusGfx_Icons, 0x400, 1202
};
-static const struct CompressedSpritePalette gUnknown_08616000 =
+static const struct CompressedSpritePalette sSpritePalette_StatusIcons =
{
gStatusPal_Icons, 1202
};
-static const struct SpriteTemplate gSpriteTemplate_8616008 =
+static const struct SpriteTemplate sSpriteTemplate_StatusIcons =
{
.tileTag = 1202,
.paletteTag = 1202,
- .oam = &sOamData_8615F90,
- .anims = sSpriteAnimTable_8615FD8,
+ .oam = &sOamData_StatusCondition,
+ .anims = sSpriteTemplate_StatusCondition,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -1536,7 +1577,7 @@ static const u16 gTMHMMoves[] =
};
// code
-static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallback callback)
+static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback)
{
u16 i;
@@ -1551,12 +1592,12 @@ static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallb
gUnknown_0203CEC8.unk8_0 = a;
gUnknown_0203CEC8.exitCallback = callback;
gUnknown_0203CEC8.unkB = c;
- gUnknown_0203CEC4->unkA_0 = e;
- gUnknown_0203CEC4->unk0 = task;
+ gUnknown_0203CEC4->messageId = messageId;
+ gUnknown_0203CEC4->task = task;
gUnknown_0203CEC4->exitCallback = NULL;
gUnknown_0203CEC4->unk8_1 = 0;
- gUnknown_0203CEC4->unk8_2 = 0xFF;
- gUnknown_0203CEC4->unk9_0 = 0xFF;
+ gUnknown_0203CEC4->unk8_2 = 0x7F;
+ gUnknown_0203CEC4->unk9_0 = 0x7F;
if (a == 4)
gUnknown_0203CEC4->unk8_0 = TRUE;
@@ -1568,13 +1609,13 @@ static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallb
for (i = 0; i <= 15; i++)
gUnknown_0203CEC4->data[i] = 0;
- for (i = 0; i < 3; i++)
- gUnknown_0203CEC4->unkC[i] = 0xFF;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_0203CEC4->windowId); i++)
+ gUnknown_0203CEC4->windowId[i] = 0xFF;
if (d == 0)
- gUnknown_0203CEC8.unk9 = 0;
- else if (gUnknown_0203CEC8.unk9 > 5 || GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES) == SPECIES_NONE)
- gUnknown_0203CEC8.unk9 = 0; // wut why is this else if?
+ gUnknown_0203CEC8.slotId = 0;
+ else if (gUnknown_0203CEC8.slotId > 5 || GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES) == SPECIES_NONE)
+ gUnknown_0203CEC8.slotId = 0; // wut why is this else if?
gTextFlags.autoScroll = 0;
CalculatePlayerPartyCount();
@@ -1710,8 +1751,8 @@ static bool8 PartyMenuSetup(void)
gMain.state++;
break;
case 20:
- CreateTask(gUnknown_0203CEC4->unk0, 0);
- display_pokemon_menu_message(gUnknown_0203CEC4->unkA_0);
+ CreateTask(gUnknown_0203CEC4->task, 0);
+ display_pokemon_menu_message(gUnknown_0203CEC4->messageId);
gMain.state++;
break;
case 21:
@@ -1779,7 +1820,7 @@ static bool8 AllocPartyMenuBg(void)
static bool8 AllocPartyMiscGfx(void)
{
- int sizeout;
+ u32 sizeout;
switch (gUnknown_0203CEC4->data[0])
{
@@ -1857,10 +1898,10 @@ static void PartyMenuInitHelperStructs(u8 a)
gUnknown_0203CEDC[i].unk0 = &gUnknown_086156C4[1];
gUnknown_0203CEDC[i].unk4 = gUnknown_08615704[a][i];
gUnknown_0203CEDC[i].windowId = i;
- gUnknown_0203CEDC[i].unk9 = 0xFF;
- gUnknown_0203CEDC[i].unkA = 0xFF;
- gUnknown_0203CEDC[i].unkB = 0xFF;
- gUnknown_0203CEDC[i].unkC = 0xFF;
+ gUnknown_0203CEDC[i].monSpriteId = 0xFF;
+ gUnknown_0203CEDC[i].itemSpriteId = 0xFF;
+ gUnknown_0203CEDC[i].pokeballSpriteId = 0xFF;
+ gUnknown_0203CEDC[i].statusSpriteId = 0xFF;
}
gUnknown_0203CEDC[0].unk0 = &gUnknown_086156C4[0];
if (a == 3)
@@ -1886,7 +1927,7 @@ static void RenderPartyMenuBox(u8 slot)
{
if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) == SPECIES_NONE)
{
- sub_81B2720(gUnknown_0203CEDC[slot].windowId);
+ DrawEmptySlot(gUnknown_0203CEDC[slot].windowId);
UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], 0x40);
CopyWindowToVram(gUnknown_0203CEDC[slot].windowId, 2);
}
@@ -1907,7 +1948,7 @@ static void RenderPartyMenuBox(u8 slot)
if (gUnknown_0203CEC8.unk8_0 == 5)
sub_81B0FCC(slot, 0);
- else if (gUnknown_0203CEC8.unk9 == slot)
+ else if (gUnknown_0203CEC8.slotId == slot)
sub_81B0FCC(slot, 1);
else
sub_81B0FCC(slot, 0);
@@ -2071,7 +2112,7 @@ static void sub_81B0CEC(u8 slot)
if (gUnknown_02022FF8[actualSlot].species == SPECIES_NONE)
{
- sub_81B2720(structPtr->windowId);
+ DrawEmptySlot(structPtr->windowId);
}
else
{
@@ -2159,7 +2200,7 @@ static void sub_81B0F28(void)
{
gUnknown_0203CEC4->unk9_0 = sub_81B5F34(0xC6, 0x94);
}
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
}
}
@@ -2173,8 +2214,8 @@ void sub_81B0FCC(u8 slot, u8 b)
if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE)
{
UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], GetPartyBoxPalBitfield(slot, b));
- AnimateSelectedPartyIcon(gUnknown_0203CEDC[slot].unk9, b);
- sub_81B5F98(gUnknown_0203CEDC[slot].unkB, b);
+ AnimateSelectedPartyIcon(gUnknown_0203CEDC[slot].monSpriteId, b);
+ sub_81B5F98(gUnknown_0203CEDC[slot].pokeballSpriteId, b);
}
return;
case 6:
@@ -2221,10 +2262,10 @@ static u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
returnVar |= 16;
if (gUnknown_0203CEC8.unkB == 8)
{
- if (slot == gUnknown_0203CEC8.unk9 || slot == gUnknown_0203CEC8.unkA)
+ if (slot == gUnknown_0203CEC8.slotId || slot == gUnknown_0203CEC8.unkA)
returnVar |= 4;
}
- if (gUnknown_0203CEC8.unkB == 10 && slot == gUnknown_0203CEC8.unk9 )
+ if (gUnknown_0203CEC8.unkB == 10 && slot == gUnknown_0203CEC8.slotId )
returnVar |= 32;
return returnVar;
@@ -2293,7 +2334,7 @@ static void c3_0811FAB4(u8 taskId)
u8 GetCursorSelectionMonId(void)
{
- return gUnknown_0203CEC8.unk9;
+ return gUnknown_0203CEC8.slotId;
}
u8 sub_81B1360(void)
@@ -2331,7 +2372,7 @@ static s8* sub_81B13EC(void)
if (gUnknown_0203CEC8.unkB == 8 || gUnknown_0203CEC8.unkB == 10)
return &gUnknown_0203CEC8.unkA;
else
- return &gUnknown_0203CEC8.unk9;
+ return &gUnknown_0203CEC8.slotId;
}
static void sub_81B140C(u8 taskId, s8 *ptr)
@@ -2347,7 +2388,7 @@ static void sub_81B140C(u8 taskId, s8 *ptr)
case 7:
if (sub_81B15A4((u8*)ptr))
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
sub_81615A8(taskId);
}
break;
@@ -2357,7 +2398,7 @@ static void sub_81B140C(u8 taskId, s8 *ptr)
if (gUnknown_0203CEC8.unk8_0 == 1)
gUnknown_0203CEC4->exitCallback = sub_81B9140;
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
gUnknown_03006328(taskId, sub_81B6794);
}
break;
@@ -2365,7 +2406,7 @@ static void sub_81B140C(u8 taskId, s8 *ptr)
if (sub_81B15A4((u8*)ptr))
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
sub_81B7E4C(taskId);
}
break;
@@ -2373,7 +2414,7 @@ static void sub_81B140C(u8 taskId, s8 *ptr)
if (sub_81B15A4((u8*)ptr))
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
sub_81B8474(taskId);
}
break;
@@ -2382,7 +2423,7 @@ static void sub_81B140C(u8 taskId, s8 *ptr)
if (sub_81B15A4((u8*)ptr))
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
sub_81B7FAC(taskId);
}
break;
@@ -2462,7 +2503,7 @@ static bool8 sub_81B1660(u8 taskId)
if (stringPtr == NULL)
return FALSE;
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
StringExpandPlaceholders(gStringVar4, stringPtr);
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B16D4;
@@ -2484,7 +2525,7 @@ static void sub_81B1708(u8 taskId)
{
case 0:
gUnknown_0203CEE8 = 0;
- gUnknown_0203CEC8.unk9 = 7;
+ gUnknown_0203CEC8.slotId = 7;
sub_81B8558();
sub_81B12C0(taskId);
break;
@@ -3132,7 +3173,7 @@ static void sub_81B2428(bool8 a)
firstWindowId = AddWindow(&gUnknown_08615918);
FillWindowPixelBuffer(firstWindowId, PIXEL_FILL(0));
mainOffset = GetStringCenterAlignXOffset(0, gMenuText_Confirm, 48);
- AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, gUnknown_086157FC[0], -1, gMenuText_Confirm);
+ AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, sFontColorTable[0], -1, gMenuText_Confirm);
PutWindowTilemap(firstWindowId);
CopyWindowToVram(firstWindowId, 2);
windowId = AddWindow(&gUnknown_08615910);
@@ -3147,12 +3188,12 @@ static void sub_81B2428(bool8 a)
if (gUnknown_0203CEC8.unk8_0 != 10)
{
mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel, 48);
- AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, gUnknown_086157FC[0], -1, gText_Cancel);
+ AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, sFontColorTable[0], -1, gText_Cancel);
}
else
{
mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel2, 48);
- AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, gUnknown_086157FC[0], -1, gText_Cancel2);
+ AddTextPrinterParameterized3(windowId, 0, mainOffset + offset, 1, sFontColorTable[0], -1, gText_Cancel2);
}
PutWindowTilemap(windowId);
CopyWindowToVram(windowId, 2);
@@ -3182,35 +3223,35 @@ static void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y,
}
}
-static void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+static void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg)
{
if (width == 0 && height == 0)
{
width = 10;
height = 7;
}
- if (f == 0)
- BlitBitmapToPartyWindow(windowId, gUnknown_08615988, 10, x, y, width, height);
+ if (isEgg == FALSE)
+ BlitBitmapToPartyWindow(windowId, sMainSlotTileNums, 10, x, y, width, height);
else
- BlitBitmapToPartyWindow(windowId, gUnknown_086159CE, 10, x, y, width, height);
+ BlitBitmapToPartyWindow(windowId, sMainSlotTileNums_Egg, 10, x, y, width, height);
}
-static void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+static void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg)
{
if (width == 0 && height == 0)
{
width = 18;
height = 3;
}
- if (f == 0)
- BlitBitmapToPartyWindow(windowId, gUnknown_08615A14, 18, x, y, width, height);
+ if (isEgg == FALSE)
+ BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums, 18, x, y, width, height);
else
- BlitBitmapToPartyWindow(windowId, gUnknown_08615A4A, 18, x, y, width, height);
+ BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums_Egg, 18, x, y, width, height);
}
-static void sub_81B2720(u8 windowId)
+static void DrawEmptySlot(u8 windowId)
{
- BlitBitmapToPartyWindow(windowId, gUnknown_08615A80, 18, 0, 0, 18, 3);
+ BlitBitmapToPartyWindow(windowId, sEmptySlotTileNums, 18, 0, 0, 18, 3);
}
static void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
@@ -3338,7 +3379,7 @@ static void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
static void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align)
{
- AddTextPrinterParameterized3(windowId, 0, align[0], align[1], gUnknown_086157FC[color], 0, str);
+ AddTextPrinterParameterized3(windowId, 0, align[0], align[1], sFontColorTable[color], 0, str);
}
static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
@@ -3499,7 +3540,7 @@ static void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr,
ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk1C >> 3, ptr->unk0->unk1D >> 3, unk, unk2, 1);
}
if (c != 2)
- AddTextPrinterParameterized3(ptr->windowId, 1, ptr->unk0->unk1C, ptr->unk0->unk1D, gUnknown_086157FC[0], 0, gUnknown_08615B60[stringID]);
+ AddTextPrinterParameterized3(ptr->windowId, 1, ptr->unk0->unk1C, ptr->unk0->unk1D, sFontColorTable[0], 0, sSelectionStringTable[stringID]);
}
static void sub_81B302C(u8 *ptr)
@@ -3515,7 +3556,7 @@ static void sub_81B302C(u8 *ptr)
void display_pokemon_menu_message(u32 stringID)
{
- u8 *windowPtr = &gUnknown_0203CEC4->unkC[1];
+ u8 *windowPtr = &gUnknown_0203CEC4->windowId[1];
if (*windowPtr != 0xFF)
sub_81B302C(windowPtr);
@@ -3552,7 +3593,7 @@ void display_pokemon_menu_message(u32 stringID)
stringID = 1;
}
DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 0xD);
- StringExpandPlaceholders(gStringVar4, gUnknown_08615AF4[stringID]);
+ StringExpandPlaceholders(gStringVar4, sActionStringTable[stringID]);
AddTextPrinterParameterized(*windowPtr, 1, gStringVar4, 0, 1, 0, 0);
schedule_bg_copy_tilemap_to_vram(2);
}
@@ -3587,7 +3628,7 @@ static u8 sub_81B31B0(u8 a)
switch (a)
{
case 0:
- SetWindowTemplateFields(&window, 2, 19, 19 - (gUnknown_0203CEC4->unk17 * 2), 10, gUnknown_0203CEC4->unk17 * 2, 14, 0x2E9);
+ SetWindowTemplateFields(&window, 2, 19, 19 - (gUnknown_0203CEC4->listSize * 2), 10, gUnknown_0203CEC4->listSize * 2, 14, 0x2E9);
break;
case 1:
window = gUnknown_08615950;
@@ -3600,23 +3641,23 @@ static u8 sub_81B31B0(u8 a)
break;
}
- gUnknown_0203CEC4->unkC[0] = AddWindow(&window);
- DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ gUnknown_0203CEC4->windowId[0] = AddWindow(&window);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->windowId[0], FALSE, 0x4F, 13);
if (a == 3)
- return gUnknown_0203CEC4->unkC[0];
+ return gUnknown_0203CEC4->windowId[0];
cursorDimension = GetMenuCursorDimensionByFont(1, 0);
fontAttribute = GetFontAttribute(1, 2);
- for (i = 0; i < gUnknown_0203CEC4->unk17; i++)
+ for (i = 0; i < gUnknown_0203CEC4->listSize; i++)
{
- u8 unk = (gUnknown_0203CEC4->unkF[i] > 18) ? 4 : 3;
- AddTextPrinterParameterized4(gUnknown_0203CEC4->unkC[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, gUnknown_086157FC[unk], 0, sCursorOptions[gUnknown_0203CEC4->unkF[i]].text);
+ u8 unk = (gUnknown_0203CEC4->actions[i] > 18) ? 4 : 3;
+ AddTextPrinterParameterized4(gUnknown_0203CEC4->windowId[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, sFontColorTable[unk], 0, sCursorOptions[gUnknown_0203CEC4->actions[i]].text);
}
- InitMenuInUpperLeftCorner(gUnknown_0203CEC4->unkC[0], gUnknown_0203CEC4->unk17, 0, 1);
+ InitMenuInUpperLeftCorner(gUnknown_0203CEC4->windowId[0], gUnknown_0203CEC4->listSize, 0, 1);
schedule_bg_copy_tilemap_to_vram(2);
- return gUnknown_0203CEC4->unkC[0];
+ return gUnknown_0203CEC4->windowId[0];
}
static void sub_81B3300(const u8 *text)
@@ -3633,46 +3674,46 @@ static void sub_81B334C(void)
static u8 sub_81B3364(void)
{
- gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970);
- DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
- return gUnknown_0203CEC4->unkC[0];
+ gUnknown_0203CEC4->windowId[0] = AddWindow(&gUnknown_08615970);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->windowId[0], FALSE, 0x4F, 13);
+ return gUnknown_0203CEC4->windowId[0];
}
static void sub_81B3394(void)
{
- ClearWindowTilemap(gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ ClearWindowTilemap(gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
}
-static void sub_81B33B4(struct Pokemon *mons, u8 a, u8 b)
+static void sub_81B33B4(struct Pokemon *mons, u8 slotId, u8 b)
{
u8 i;
if (b == 0)
{
- sub_81B3414(mons, a);
+ CreateActionList(mons, slotId);
}
else
{
- gUnknown_0203CEC4->unk17 = gUnknown_08615D70[b];
- for (i = 0; i < gUnknown_0203CEC4->unk17; i++)
- gUnknown_0203CEC4->unkF[i] = gUnknown_08615D38[b][i];
+ gUnknown_0203CEC4->listSize = sListSizeTable[b];
+ for (i = 0; i < gUnknown_0203CEC4->listSize; i++)
+ gUnknown_0203CEC4->actions[i] = sActionTable[b][i];
}
}
-static void sub_81B3414(struct Pokemon *mons, u8 a)
+static void CreateActionList(struct Pokemon *mons, u8 slotId)
{
u8 i, j;
- gUnknown_0203CEC4->unk17 = 0;
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 0);
+ gUnknown_0203CEC4->listSize = 0;
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, MENU_SUMMARY);
for (i = 0; i < MAX_MON_MOVES; i++)
{
for (j = 0; sFieldMoves[j] != FIELD_MOVE_TERMINATOR; j++)
{
- if (GetMonData(&mons[a], i + MON_DATA_MOVE1) == sFieldMoves[j])
+ if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j])
{
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, j + 19);
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, j + MENU_FIELD_MOVES);
break;
}
}
@@ -3681,13 +3722,13 @@ static void sub_81B3414(struct Pokemon *mons, u8 a)
if (!InBattlePike())
{
if (GetMonData(&mons[1], MON_DATA_SPECIES) != SPECIES_NONE)
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 1);
- if (ItemIsMail(GetMonData(&mons[a], MON_DATA_HELD_ITEM)))
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 6);
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, MENU_SWITCH);
+ if (ItemIsMail(GetMonData(&mons[slotId], MON_DATA_HELD_ITEM)))
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, MENU_MAIL);
else
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 3);
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, MENU_ITEM);
}
- AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 2);
+ AppendToList(gUnknown_0203CEC4->actions, &gUnknown_0203CEC4->listSize, MENU_CANCEL1);
}
static u8 sub_81B353C(struct Pokemon *mon)
@@ -3706,7 +3747,7 @@ static u8 sub_81B353C(struct Pokemon *mon)
returnVar = sub_81B8A2C(mon);
break;
case 4:
- switch (sub_81B856C(gUnknown_0203CEC8.unk9))
+ switch (sub_81B856C(gUnknown_0203CEC8.slotId))
{
default:
returnVar = 7;
@@ -3743,14 +3784,14 @@ static u8 sub_81B353C(struct Pokemon *mon)
static bool8 sub_81B3608(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item;
GetMonNickname(mon, gStringVar1);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
if (gUnknown_0203CEC8.unk8_0 != 12)
{
- sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.slotId, sub_81B353C(mon));
sub_81B31B0(0);
display_pokemon_menu_message(21);
}
@@ -3759,7 +3800,7 @@ static bool8 sub_81B3608(u8 taskId)
item = GetMonData(mon, MON_DATA_HELD_ITEM);
if (item != ITEM_NONE)
{
- sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.slotId, sub_81B353C(mon));
sub_81B31B0(1);
CopyItemName(item, gStringVar2);
display_pokemon_menu_message(26);
@@ -3792,7 +3833,7 @@ static void HandleMenuInput(u8 taskId)
s8 input;
s16 *data = gTasks[taskId].data;
- if (gUnknown_0203CEC4->unk17 <= 3)
+ if (gUnknown_0203CEC4->listSize <= 3)
input = Menu_ProcessInputNoWrapAround_other();
else
input = ProcessMenuInput_other();
@@ -3804,12 +3845,12 @@ static void HandleMenuInput(u8 taskId)
break;
case MENU_B_PRESSED:
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
- sCursorOptions[gUnknown_0203CEC4->unkF[gUnknown_0203CEC4->unk17 - 1]].func(taskId);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[2]);
+ sCursorOptions[gUnknown_0203CEC4->actions[gUnknown_0203CEC4->listSize - 1]].func(taskId);
break;
default:
- sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
- sCursorOptions[gUnknown_0203CEC4->unkF[input]].func(taskId);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[2]);
+ sCursorOptions[gUnknown_0203CEC4->actions[input]].func(taskId);
break;
}
}
@@ -3827,18 +3868,18 @@ static void sub_81B3828(void)
if (gUnknown_0203CEC8.unk8_0 == 1)
{
pokemon_change_order();
- ShowPokemonSummaryScreen(PSS_MODE_UNK1, gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B3894);
+ ShowPokemonSummaryScreen(PSS_MODE_UNK1, gPlayerParty, gUnknown_0203CEC8.slotId, gPlayerPartyCount - 1, sub_81B3894);
}
else
{
- ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B3894);
+ ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, gUnknown_0203CEC8.slotId, gPlayerPartyCount - 1, sub_81B3894);
}
}
static void sub_81B3894(void)
{
gPaletteFade.bufferTransferDisabled = TRUE;
- gUnknown_0203CEC8.unk9 = gLastViewedMonIndex;
+ gUnknown_0203CEC8.slotId = gLastViewedMonIndex;
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
}
@@ -3846,11 +3887,11 @@ static void CursorCb_Switch(u8 taskId)
{
PlaySE(SE_SELECT);
gUnknown_0203CEC8.unkB = 8;
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
display_pokemon_menu_message(3);
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
- gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.unk9;
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
+ gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.slotId;
gTasks[taskId].func = sub_81B1370;
}
@@ -3859,13 +3900,13 @@ static void sub_81B3938(u8 taskId)
s16 *data = gTasks[taskId].data;
u8 windowIds[2];
- if (gUnknown_0203CEC8.unkA == gUnknown_0203CEC8.unk9)
+ if (gUnknown_0203CEC8.unkA == gUnknown_0203CEC8.slotId)
{
sub_81B407C(taskId);
}
else
{
- windowIds[0] = gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId;
+ windowIds[0] = gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].windowId;
data[0] = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_LEFT);
data[1] = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_TOP);
data[2] = GetWindowAttribute(windowIds[0], WINDOW_WIDTH);
@@ -3892,7 +3933,7 @@ static void sub_81B3938(u8 taskId)
ClearWindowTilemap(windowIds[0]);
ClearWindowTilemap(windowIds[1]);
gUnknown_0203CEC8.unkB = 9;
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
sub_81B3CC0(taskId);
gTasks[taskId].func = sub_81B3D48;
@@ -3939,10 +3980,10 @@ static void sub_81B3B40(const void *rectSrc, s16 a, s16 b, s16 c, s16 d, s16 e)
static void sub_81B3C0C(struct Struct203CEDC *ptr, s16 a)
{
- gSprites[ptr->unkB].pos2.x += a * 8;
- gSprites[ptr->unkA].pos2.x += a * 8;
- gSprites[ptr->unk9].pos2.x += a * 8;
- gSprites[ptr->unkC].pos2.x += a * 8;
+ gSprites[ptr->pokeballSpriteId].pos2.x += a * 8;
+ gSprites[ptr->itemSpriteId].pos2.x += a * 8;
+ gSprites[ptr->monSpriteId].pos2.x += a * 8;
+ gSprites[ptr->statusSpriteId].pos2.x += a * 8;
}
static void sub_81B3C60(u8 taskId)
@@ -3950,7 +3991,7 @@ static void sub_81B3C60(u8 taskId)
s16 *data = gTasks[taskId].data;
if (data[10] != 0)
- sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], data[10]);
+ sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], data[10]);
if (data[11] != 0)
sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unkA], data[11]);
}
@@ -3982,13 +4023,13 @@ static void sub_81B3D48(u8 taskId)
data[10] *= -1;
data[11] *= -1;
swap_pokemon_and_oams();
- DisplayPartyPokemonData(gUnknown_0203CEC8.unk9);
+ DisplayPartyPokemonData(gUnknown_0203CEC8.slotId);
DisplayPartyPokemonData(gUnknown_0203CEC8.unkA);
- PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].windowId);
PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
sub_8199CBC(0, gUnknown_0203CEF0, data[0], data[1], data[2], data[3]);
sub_8199CBC(0, gUnknown_0203CEF4, data[4], data[5], data[6], data[7]);
- ClearWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ ClearWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].windowId);
ClearWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
gTasks[taskId].func = sub_81B3E60;
}
@@ -4002,7 +4043,7 @@ static void sub_81B3E60(u8 taskId)
sub_81B3C60(taskId);
if (data[10] == 0 && data[11] == 0)
{
- PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].windowId);
+ PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].windowId);
PutWindowTilemap(gUnknown_0203CEDC[gUnknown_0203CEC8.unkA].windowId);
schedule_bg_copy_tilemap_to_vram(0);
Free(gUnknown_0203CEF0);
@@ -4047,27 +4088,27 @@ static void swap_pokemon_and_oams(void)
struct Pokemon *mon1, *mon2;
struct Pokemon *monBuffer;
- structPtrs[0] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9];
+ structPtrs[0] = &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId];
structPtrs[1] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unkA];
- mon1 = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ mon1 = &gPlayerParty[gUnknown_0203CEC8.slotId];
mon2 = &gPlayerParty[gUnknown_0203CEC8.unkA];
monBuffer = Alloc(sizeof(struct Pokemon));
*monBuffer = *mon1;
*mon1 = *mon2;
*mon2 = *monBuffer;
Free(monBuffer);
- oamt_swap_pos(&structPtrs[0]->unkB, &structPtrs[1]->unkB);
- oamt_swap_pos(&structPtrs[0]->unkA, &structPtrs[1]->unkA);
- oamt_swap_pos(&structPtrs[0]->unk9, &structPtrs[1]->unk9);
- oamt_swap_pos(&structPtrs[0]->unkC, &structPtrs[1]->unkC);
+ oamt_swap_pos(&structPtrs[0]->pokeballSpriteId, &structPtrs[1]->pokeballSpriteId);
+ oamt_swap_pos(&structPtrs[0]->itemSpriteId, &structPtrs[1]->itemSpriteId);
+ oamt_swap_pos(&structPtrs[0]->monSpriteId, &structPtrs[1]->monSpriteId);
+ oamt_swap_pos(&structPtrs[0]->statusSpriteId, &structPtrs[1]->statusSpriteId);
}
static void sub_81B407C(u8 taskId)
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
gUnknown_0203CEC8.unkB = 0;
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
- gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA;
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 0);
+ gUnknown_0203CEC8.slotId = gUnknown_0203CEC8.unkA;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
display_pokemon_menu_message(0);
gTasks[taskId].func = sub_81B1370;
@@ -4076,8 +4117,8 @@ static void sub_81B407C(u8 taskId)
static void CursorCb_Cancel1(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
if (gUnknown_0203CEC8.unk8_0 == 6)
display_pokemon_menu_message(15);
else
@@ -4088,9 +4129,9 @@ static void CursorCb_Cancel1(u8 taskId)
static void CursorCb_Item(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, 8);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.slotId, 8);
sub_81B31B0(1);
display_pokemon_menu_message(24);
gTasks[taskId].data[0] = 0xFF;
@@ -4120,7 +4161,7 @@ static void c2_8123744(void)
}
else
{
- gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_HELD_ITEM);
if (gUnknown_0203CEFC != ITEM_NONE)
{
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 0x7F, sub_81B4350, gUnknown_0203CEC8.exitCallback);
@@ -4128,7 +4169,7 @@ static void c2_8123744(void)
else if (ItemIsMail(gSpecialVar_ItemId))
{
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], gSpecialVar_ItemId);
sub_81B452C();
}
else
@@ -4145,8 +4186,8 @@ static void sub_81B42D0(u8 taskId)
if (!gPaletteFade.active)
{
item = gSpecialVar_ItemId;
- sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], item, 0, 0);
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.slotId], item, 0, 0);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], item);
RemoveBagItem(item, 1);
gTasks[taskId].func = sub_81B469C;
}
@@ -4156,7 +4197,7 @@ static void sub_81B4350(u8 taskId)
{
if (!gPaletteFade.active)
{
- sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEFC, 1);
+ sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.slotId], gUnknown_0203CEFC, 1);
gTasks[taskId].func = sub_81B43A8;
}
}
@@ -4185,12 +4226,12 @@ static void sub_81B43DC(u8 taskId)
}
else if (ItemIsMail(gSpecialVar_ItemId))
{
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], gSpecialVar_ItemId);
gTasks[taskId].func = sub_81B44FC;
}
else
{
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], gSpecialVar_ItemId);
sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 1);
gTasks[taskId].func = sub_81B469C;
}
@@ -4214,7 +4255,7 @@ static void sub_81B44FC(u8 taskId)
static void sub_81B452C(void)
{
- u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
+ u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_MAIL);
DoEasyChatScreen(
EASY_CHAT_TYPE_MAIL,
@@ -4225,7 +4266,7 @@ static void sub_81B452C(void)
static void sub_81B4578(void)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
if (gSpecialVar_Result == FALSE)
@@ -4247,7 +4288,7 @@ static void sub_81B4624(u8 taskId)
if (!gPaletteFade.active)
{
if (gUnknown_0203CEFC == ITEM_NONE)
- sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId, 0, 0);
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.slotId], gSpecialVar_ItemId, 0, 0);
else
sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 0);
gTasks[taskId].func = sub_81B469C;
@@ -4256,17 +4297,17 @@ static void sub_81B4624(u8 taskId)
static void sub_81B469C(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
if (sub_81B1BD4() != TRUE)
{
- sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
+ sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
if (gUnknown_0203CEC8.unk8_0 == 12)
{
if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
- DisplayPartyPokemonOtherText(11, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ DisplayPartyPokemonOtherText(11, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
else
- DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
}
sub_81B1C1C(taskId);
}
@@ -4274,12 +4315,12 @@ static void sub_81B469C(u8 taskId)
static void CursorCb_TakeItem(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
switch (TryTakeMonItem(mon))
{
case 0:
@@ -4301,12 +4342,12 @@ static void CursorCb_TakeItem(u8 taskId)
static void CursorCb_Toss(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
if (item == ITEM_NONE)
{
GetMonNickname(mon, gStringVar1);
@@ -4334,7 +4375,7 @@ static void sub_81B48A8(u8 taskId)
static void sub_81B48DC(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
@@ -4354,15 +4395,15 @@ static void sub_81B48DC(u8 taskId)
static void sub_81B4988(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
if (sub_81B1BD4() != TRUE)
{
u16 item = ITEM_NONE;
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
- sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
- DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
+ DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
gTasks[taskId].func = sub_81B1C1C;
}
}
@@ -4370,9 +4411,9 @@ static void sub_81B4988(u8 taskId)
static void CursorCb_Mail(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, 9);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.slotId, 9);
sub_81B31B0(2);
display_pokemon_menu_message(25);
gTasks[taskId].data[0] = 0xFF;
@@ -4388,7 +4429,7 @@ static void CursorCb_Read(u8 taskId)
static void sub_81B4A98(void)
{
- ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL)], sub_81B4AE0, 1);
+ ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_MAIL)], sub_81B4AE0, 1);
}
static void sub_81B4AE0(void)
@@ -4400,8 +4441,8 @@ static void sub_81B4AE0(void)
static void CursorCb_TakeMail(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
sub_81B1B5C(gText_SendMailToPC, 1);
gTasks[taskId].func = sub_81B4B6C;
}
@@ -4420,7 +4461,7 @@ static void sub_81B4BA0(u8 taskId)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- if (TakeMailFromMon2(&gPlayerParty[gUnknown_0203CEC8.unk9]) != 0xFF)
+ if (TakeMailFromMon2(&gPlayerParty[gUnknown_0203CEC8.slotId]) != 0xFF)
{
sub_81B1B5C(gText_MailSentToPC, 0);
gTasks[taskId].func = sub_81B469C;
@@ -4456,10 +4497,10 @@ static void sub_81B4C94(u8 taskId)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- item = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ item = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_HELD_ITEM);
if (AddBagItem(item, 1) == TRUE)
{
- TakeMailFromMon(&gPlayerParty[gUnknown_0203CEC8.unk9]);
+ TakeMailFromMon(&gPlayerParty[gUnknown_0203CEC8.slotId]);
sub_81B1B5C(gText_MailTakenFromPkmn, 0);
gTasks[taskId].func = sub_81B469C;
}
@@ -4480,12 +4521,12 @@ static void sub_81B4C94(u8 taskId)
static void CursorCb_Cancel2(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.unk9, sub_81B353C(mon));
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ sub_81B33B4(gPlayerParty, gUnknown_0203CEC8.slotId, sub_81B353C(mon));
if (gUnknown_0203CEC8.unk8_0 != 12)
{
sub_81B31B0(0);
@@ -4504,14 +4545,14 @@ static void CursorCb_Cancel2(u8 taskId)
static void CursorCb_SendMon(u8 taskId)
{
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
if (sub_81B8A7C() == TRUE)
{
sub_81B12C0(taskId);
}
else
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B1C1C;
}
@@ -4522,16 +4563,16 @@ static void CursorCb_Enter(u8 taskId)
u8 unk;
u8 i;
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
unk = sub_81B8830();
for (i = 0; i < unk; i++)
{
if (gSelectedOrderFromParty[i] == 0)
{
PlaySE(SE_SELECT);
- gSelectedOrderFromParty[i] = gUnknown_0203CEC8.unk9 + 1;
- DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ gSelectedOrderFromParty[i] = gUnknown_0203CEC8.slotId + 1;
+ DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
if (i == (unk - 1))
sub_81B4F88();
display_pokemon_menu_message(0);
@@ -4548,9 +4589,9 @@ static void CursorCb_Enter(u8 taskId)
static void sub_81B4F88(void)
{
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
- gUnknown_0203CEC8.unk9 = 6;
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 0);
+ gUnknown_0203CEC8.slotId = 6;
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
}
static void CursorCb_NoEntry(u8 taskId)
@@ -4559,12 +4600,12 @@ static void CursorCb_NoEntry(u8 taskId)
u8 i, j;
PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
unk = sub_81B8830();
for (i = 0; i < unk; i++)
{
- if (gSelectedOrderFromParty[i] == (gUnknown_0203CEC8.unk9 + 1))
+ if (gSelectedOrderFromParty[i] == (gUnknown_0203CEC8.slotId + 1))
{
for (j = i; j < (unk - 1); j++)
gSelectedOrderFromParty[j] = gSelectedOrderFromParty[j + 1];
@@ -4572,7 +4613,7 @@ static void CursorCb_NoEntry(u8 taskId)
break;
}
}
- DisplayPartyPokemonOtherText(1, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ DisplayPartyPokemonOtherText(1, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
for (i = 0; i < (unk - 1); i++)
{
if (gSelectedOrderFromParty[i] != 0)
@@ -4590,9 +4631,9 @@ static void CursorCb_Store(u8 taskId)
static void CursorCb_Register(u8 taskId)
{
- u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
- u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
+ u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_OBEDIENCE);
switch (sub_807A8D0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), species2, species, obedience))
{
@@ -4608,8 +4649,8 @@ static void CursorCb_Register(u8 taskId)
return;
}
PlaySE(SE_HAZURE);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
StringAppend(gStringVar4, gText_PauseUntilPress);
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B1C1C;
@@ -4617,17 +4658,17 @@ static void CursorCb_Register(u8 taskId)
static void CursorCb_Trade1(u8 taskId)
{
- u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
- u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
+ u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES2);
+ u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES);
+ u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_OBEDIENCE);
u32 stringId = sub_807A7E0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), gUnknown_02022C38, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
if (stringId != 0)
{
StringExpandPlaceholders(gStringVar4, gUnknown_08615E0C[stringId - 1]);
PlaySE(SE_HAZURE);
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
StringAppend(gStringVar4, gText_PauseUntilPress);
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B1C1C;
@@ -4641,9 +4682,9 @@ static void CursorCb_Trade1(u8 taskId)
static void CursorCb_Trade2(u8 taskId)
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- switch (sub_807A918(gPlayerParty, gUnknown_0203CEC8.unk9))
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
+ switch (sub_807A918(gPlayerParty, gUnknown_0203CEC8.slotId))
{
case 1:
StringExpandPlaceholders(gStringVar4, gText_OnlyPkmnForBattle);
@@ -4656,7 +4697,7 @@ static void CursorCb_Trade2(u8 taskId)
break;
default:
PlaySE(SE_SELECT);
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.slotId], gStringVar1);
StringExpandPlaceholders(gStringVar4, gJPText_PutVar1IntoSpinner);
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B53FC;
@@ -4694,15 +4735,15 @@ static void sub_81B5430(u8 taskId)
static void CursorCb_FieldMove(u8 taskId)
{
- u8 fieldMove = gUnknown_0203CEC4->unkF[Menu_GetCursorPos()] - MENU_FIELD_MOVES;
+ u8 fieldMove = gUnknown_0203CEC4->actions[Menu_GetCursorPos()] - MENU_FIELD_MOVES;
const struct MapHeader *mapHeader;
PlaySE(SE_SELECT);
if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc == NULL)
return;
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
{
if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED)
@@ -4823,7 +4864,7 @@ static void task_launch_hm_phase_2(u8 taskId)
static u16 brm_get_selected_species(void)
{
- return GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
+ return GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_SPECIES);
}
static void task_brm_cancel_1_on_keypad_a_or_b(u8 taskId)
@@ -4925,15 +4966,15 @@ static void party_menu_icon_anim(struct Pokemon *mon, struct Struct203CEDC *ptr,
bit = (gUnknown_08616020[a] ^ bit) ? 1 : 0;
species2 = GetMonData(mon, MON_DATA_SPECIES2);
party_menu_link_mon_icon_anim(species2, GetMonData(mon, MON_DATA_PERSONALITY), ptr, 1, bit);
- sub_81B5B38(ptr->unk9, mon);
+ sub_81B5B38(ptr->monSpriteId, mon);
}
static void party_menu_link_mon_icon_anim(u16 species, u32 pid, struct Struct203CEDC *ptr, u8 priority, u32 bit)
{
if (species != SPECIES_NONE)
{
- ptr->unk9 = CreateMonIcon(species, sub_80D3014, ptr->unk4[0], ptr->unk4[1], 4, pid, bit);
- gSprites[ptr->unk9].oam.priority = priority;
+ ptr->monSpriteId = CreateMonIcon(species, sub_80D3014, ptr->unk4[0], ptr->unk4[1], 4, pid, bit);
+ gSprites[ptr->monSpriteId].oam.priority = priority;
}
}
@@ -5011,7 +5052,7 @@ static void party_menu_held_item_object(struct Pokemon *mon, struct Struct203CED
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- ptr->unkA = CreateSprite(&gSpriteTemplate_8615EC0, ptr->unk4[2], ptr->unk4[3], 0);
+ ptr->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, ptr->unk4[2], ptr->unk4[3], 0);
sub_81B5C94(mon, ptr);
}
}
@@ -5020,8 +5061,8 @@ static void party_menu_link_mon_held_item_object(u16 species, u16 item, struct S
{
if (species != SPECIES_NONE)
{
- ptr->unkA = CreateSprite(&gSpriteTemplate_8615EC0, ptr->unk4[2], ptr->unk4[3], 0);
- gSprites[ptr->unkA].oam.priority = 0;
+ ptr->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, ptr->unk4[2], ptr->unk4[3], 0);
+ gSprites[ptr->itemSpriteId].oam.priority = 0;
sub_81B5CB0(item, ptr);
}
}
@@ -5035,22 +5076,22 @@ static void sub_81B5CB0(u16 item, struct Struct203CEDC *ptr)
{
if (item == ITEM_NONE)
{
- gSprites[ptr->unkA].invisible = TRUE;
+ gSprites[ptr->itemSpriteId].invisible = TRUE;
}
else
{
if (ItemIsMail(item))
- StartSpriteAnim(&gSprites[ptr->unkA], 1);
+ StartSpriteAnim(&gSprites[ptr->itemSpriteId], 1);
else
- StartSpriteAnim(&gSprites[ptr->unkA], 0);
- gSprites[ptr->unkA].invisible = FALSE;
+ StartSpriteAnim(&gSprites[ptr->itemSpriteId], 0);
+ gSprites[ptr->itemSpriteId].invisible = FALSE;
}
}
void LoadHeldItemIcons(void)
{
- LoadSpriteSheet(&gUnknown_08615EB0);
- LoadSpritePalette(&gUnknown_08615EB8);
+ LoadSpriteSheet(&sSpriteSheet_HeldItem);
+ LoadSpritePalette(&sSpritePalette_HeldItem);
}
void sub_81B5D4C(u8 *a, u8 *b, u8 c)
@@ -5082,17 +5123,17 @@ void sub_81B5D4C(u8 *a, u8 *b, u8 c)
static void sub_81B5DF0(u8 spriteId, u8 isMail)
{
u8 subpriority = gSprites[spriteId].subpriority;
- u8 newSpriteId = CreateSprite(&gSpriteTemplate_8615EC0, 250, 170, subpriority - 1);
+ u8 newSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, 250, 170, subpriority - 1);
gSprites[newSpriteId].pos2.x = 4;
gSprites[newSpriteId].pos2.y = 10;
- gSprites[newSpriteId].callback = sub_81B5E74;
+ gSprites[newSpriteId].callback = SpriteCB_HeldItem;
gSprites[newSpriteId].data[7] = spriteId;
StartSpriteAnim(&gSprites[newSpriteId], isMail);
gSprites[newSpriteId].callback(&gSprites[newSpriteId]);
}
-static void sub_81B5E74(struct Sprite *sprite)
+static void SpriteCB_HeldItem(struct Sprite *sprite)
{
u8 otherSpriteId = sprite->data[7];
@@ -5111,21 +5152,21 @@ static void sub_81B5E74(struct Sprite *sprite)
static void party_menu_pokeball_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
- ptr->unkB = CreateSprite(&gSpriteTemplate_8615F08, ptr->unk4[6], ptr->unk4[7], 8);
+ ptr->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, ptr->unk4[6], ptr->unk4[7], 8);
}
static void party_menu_link_mon_pokeball_object(u16 species, struct Struct203CEDC *ptr)
{
if (species != SPECIES_NONE)
{
- ptr->unkB = CreateSprite(&gSpriteTemplate_8615F08, ptr->unk4[6], ptr->unk4[7], 8);
- gSprites[ptr->unkB].oam.priority = 0;
+ ptr->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, ptr->unk4[6], ptr->unk4[7], 8);
+ gSprites[ptr->pokeballSpriteId].oam.priority = 0;
}
}
static u8 sub_81B5F34(u8 x, u8 y)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_8615F08, x, y, 8);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, x, y, 8);
gSprites[spriteId].oam.priority = 2;
return spriteId;
@@ -5161,16 +5202,16 @@ static void sub_81B5FBC(u8 spriteId, u8 spriteId2, u8 a)
static void LoadPartyMenuPokeballGfx(void)
{
- LoadCompressedSpriteSheet(&gUnknown_08615EF8);
- LoadCompressedSpriteSheet(&gUnknown_08615F70);
- LoadCompressedSpritePalette(&gUnknown_08615F00);
+ LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeball);
+ LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeballSmall);
+ LoadCompressedSpritePalette(&sSpritePalette_MenuPokeball);
}
static void party_menu_status_condition_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- ptr->unkC = CreateSprite(&gSpriteTemplate_8616008, ptr->unk4[4], ptr->unk4[5], 0);
+ ptr->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, ptr->unk4[4], ptr->unk4[5], 0);
party_menu_get_status_condition_and_update_object(mon, ptr);
}
}
@@ -5179,9 +5220,9 @@ static void party_menu_link_mon_status_condition_object(u16 species, u8 status,
{
if (species != SPECIES_NONE)
{
- ptr->unkC = CreateSprite(&gSpriteTemplate_8616008, ptr->unk4[4], ptr->unk4[5], 0);
+ ptr->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, ptr->unk4[4], ptr->unk4[5], 0);
party_menu_update_status_condition_object(status, ptr);
- gSprites[ptr->unkC].oam.priority = 0;
+ gSprites[ptr->statusSpriteId].oam.priority = 0;
}
}
@@ -5196,19 +5237,19 @@ static void party_menu_update_status_condition_object(u8 status, struct Struct20
{
case AILMENT_NONE:
case AILMENT_PKRS:
- gSprites[ptr->unkC].invisible = TRUE;
+ gSprites[ptr->statusSpriteId].invisible = TRUE;
break;
default:
- StartSpriteAnim(&gSprites[ptr->unkC], status - 1);
- gSprites[ptr->unkC].invisible = FALSE;
+ StartSpriteAnim(&gSprites[ptr->statusSpriteId], status - 1);
+ gSprites[ptr->statusSpriteId].invisible = FALSE;
break;
}
}
static void LoadPartyMenuAilmentGfx(void)
{
- LoadCompressedSpriteSheet(&gUnknown_08615FF8);
- LoadCompressedSpritePalette(&gUnknown_08616000);
+ LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons);
+ LoadCompressedSpritePalette(&sSpritePalette_StatusIcons);
}
void sub_81B617C(void)
@@ -5233,12 +5274,12 @@ void sub_81B617C(void)
if (GetItemEffectType(gSpecialVar_ItemId) == ITEM_EFFECT_SACRED_ASH)
{
- gUnknown_0203CEC8.unk9 = 0;
+ gUnknown_0203CEC8.slotId = 0;
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
{
- gUnknown_0203CEC8.unk9 = i;
+ gUnknown_0203CEC8.slotId = i;
break;
}
}
@@ -5381,7 +5422,7 @@ static bool8 ExecuteTableBasedItemEffect__(u8 partyMonIndex, u16 item, u8 monMov
void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
{
u16 hp = 0;
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = gSpecialVar_ItemId;
bool8 canHeal;
@@ -5394,7 +5435,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
if (hp == GetMonData(mon, MON_DATA_MAX_HP))
canHeal = FALSE;
}
- if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0))
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.slotId, item, 0))
{
iTriedHonestlyIDid:
gUnknown_0203CEE8 = 0;
@@ -5420,14 +5461,14 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
{
PlaySE(SE_BIDORO);
}
- party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
- if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].unkC].invisible)
- DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
+ if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].statusSpriteId].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
if (canHeal == TRUE)
{
if (hp == 0)
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
- sub_81B1F18(taskId, gUnknown_0203CEC8.unk9, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B672C);
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
+ sub_81B1F18(taskId, gUnknown_0203CEC8.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B672C);
sub_81B1FA8(taskId, 0, hp);
return;
}
@@ -5443,7 +5484,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
static void sub_81B672C(u8 taskId)
{
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.slotId], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
sub_81B1B5C(gStringVar4, 0);
schedule_bg_copy_tilemap_to_vram(2);
@@ -5463,12 +5504,12 @@ static void sub_81B6794(u8 taskId)
void sub_81B67C8(u8 taskId, TaskFunc task)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = gSpecialVar_ItemId;
u8 effectType = GetItemEffectType(item);
u16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
u16 relevantEV = ItemEffectToMonEv(mon, effectType);
- bool8 cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0);
+ bool8 cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.slotId, item, 0);
u16 newFriendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
u16 newRelevantEV = ItemEffectToMonEv(mon, effectType);
@@ -5583,7 +5624,7 @@ static void ether_effect_related_3(u8 taskId)
}
else
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[1]);
ether_effect_related_2(taskId);
}
}
@@ -5608,14 +5649,14 @@ void dp05_ether(u8 taskId, TaskFunc task)
{
PlaySE(SE_SELECT);
display_pokemon_menu_message(22);
- sub_81B6A10(gUnknown_0203CEC8.unk9);
+ sub_81B6A10(gUnknown_0203CEC8.slotId);
gTasks[taskId].func = ether_effect_related_3;
}
}
static void ether_effect_related_2(u8 taskId)
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
gUnknown_0203CEC8.unkE = Menu_GetCursorPos();
ether_effect_related(taskId);
}
@@ -5624,7 +5665,7 @@ static void sub_81B6BB4(u8 taskId)
{
gTasks[taskId].func = sub_81B1370;
gUnknown_0203CEC4->exitCallback = NULL;
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->windowId[0]);
display_pokemon_menu_message(5);
}
@@ -5636,7 +5677,7 @@ static void ether_effect_related(u8 taskId)
struct Struct203CEC8 *ptr = &gUnknown_0203CEC8;
struct Pokemon *mon;
- if (ExecuteTableBasedItemEffect__(ptr->unk9, item, *moveslot))
+ if (ExecuteTableBasedItemEffect__(ptr->slotId, item, *moveslot))
{
gUnknown_0203CEE8 = 0;
PlaySE(SE_SELECT);
@@ -5647,7 +5688,7 @@ static void ether_effect_related(u8 taskId)
else
{
gUnknown_0203CEE8 = 1;
- mon = &gPlayerParty[ptr->unk9];
+ mon = &gPlayerParty[ptr->slotId];
PlaySE(SE_KAIFUKU);
RemoveBagItem(item, 1);
move = GetMonData(mon, MON_DATA_MOVE1 + *moveslot);
@@ -5663,7 +5704,7 @@ void dp05_pp_up(u8 taskId, TaskFunc task)
{
PlaySE(SE_SELECT);
display_pokemon_menu_message(23);
- sub_81B6A10(gUnknown_0203CEC8.unk9);
+ sub_81B6A10(gUnknown_0203CEC8.slotId);
gTasks[taskId].func = ether_effect_related_3;
}
@@ -5719,7 +5760,7 @@ void sub_81B6DC4(u8 taskId, TaskFunc task)
u16 item;
PlaySE(SE_SELECT);
- mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
move = &gUnknown_0203CEC8.unkE;
item = gSpecialVar_ItemId;
GetMonNickname(mon, gStringVar1);
@@ -5750,7 +5791,7 @@ void sub_81B6DC4(u8 taskId, TaskFunc task)
static void sub_81B6EB4(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
s16 *move = &gUnknown_0203CEC8.unkE;
u16 item = gSpecialVar_ItemId;
@@ -5828,7 +5869,7 @@ static void sub_81B7088(u8 taskId)
static void sub_81B70B8(void)
{
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B70F0, gUnknown_0203CEC8.unkE);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gUnknown_0203CEC8.slotId, gPlayerPartyCount - 1, sub_81B70F0, gUnknown_0203CEC8.unkE);
}
static void sub_81B70F0(void)
@@ -5849,7 +5890,7 @@ static void sub_81B711C(u8 taskId)
static void sub_81B7154(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 move = GetMonData(mon, MON_DATA_MOVE1 + sub_81C1B94());
GetMonNickname(mon, gStringVar1);
@@ -5865,7 +5906,7 @@ static void sub_81B71D4(u8 taskId)
if (sub_81B1BD4() != TRUE)
{
- mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
RemoveMonPPBonus(mon, sub_81C1B94());
move = gUnknown_0203CEC8.unkE;
SetMonMoveSlot(mon, move, sub_81C1B94());
@@ -5893,7 +5934,7 @@ static void sub_81B7294(u8 taskId)
static void sub_81B72C8(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
@@ -5932,7 +5973,7 @@ static void sub_81B73E4(u8 taskId)
void dp05_rare_candy(u8 taskId, TaskFunc task)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
struct Struct203CEC4 *ptr = gUnknown_0203CEC4;
s16 *arrayPtr = ptr->data;
u16 *itemPtr = &gSpecialVar_ItemId;
@@ -5941,7 +5982,7 @@ void dp05_rare_candy(u8 taskId, TaskFunc task)
if (GetMonData(mon, MON_DATA_LEVEL) != MAX_LEVEL)
{
sub_81B79A0(mon, arrayPtr);
- cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, *itemPtr, 0);
+ cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.slotId, *itemPtr, 0);
sub_81B79A0(mon, &ptr->data[6]);
}
else
@@ -5960,7 +6001,7 @@ void dp05_rare_candy(u8 taskId, TaskFunc task)
{
gUnknown_0203CEE8 = 1;
PlayFanfareByFanfareNum(0);
- sub_81B754C(gUnknown_0203CEC8.unk9, mon);
+ sub_81B754C(gUnknown_0203CEC8.slotId, mon);
RemoveBagItem(gSpecialVar_ItemId, 1);
GetMonNickname(mon, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, GetMonData(mon, MON_DATA_LEVEL), 0, 3);
@@ -5974,12 +6015,12 @@ void dp05_rare_candy(u8 taskId, TaskFunc task)
static void sub_81B754C(u8 slot, struct Pokemon *mon)
{
party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[slot]);
- if (gSprites[gUnknown_0203CEDC[slot].unkC].invisible)
+ if (gSprites[gUnknown_0203CEDC[slot].statusSpriteId].invisible)
DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[slot], 1);
DisplayPartyPokemonHPCheck(mon, &gUnknown_0203CEDC[slot], 1);
DisplayPartyPokemonMaxHPCheck(mon, &gUnknown_0203CEDC[slot], 1);
DisplayPartyPokemonHPBarCheck(mon, &gUnknown_0203CEDC[slot]);
- sub_81B5B38(gUnknown_0203CEDC[slot].unk9, mon);
+ sub_81B5B38(gUnknown_0203CEDC[slot].monSpriteId, mon);
sub_81B0FCC(slot, 1);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -6030,7 +6071,7 @@ static void sub_81B7704(u8 taskId)
if (WaitFanfare(0) && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
{
sub_81B3394();
- result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 1);
+ result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.slotId], 1);
gUnknown_0203CEC8.unk10 = 1;
switch (result)
{
@@ -6052,7 +6093,7 @@ static void sub_81B7704(u8 taskId)
static void sub_81B77AC(u8 taskId)
{
- u16 result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 0);
+ u16 result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.slotId], 0);
switch (result)
{
@@ -6072,14 +6113,14 @@ static void sub_81B77AC(u8 taskId)
static void sub_81B7810(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0);
if (targetSpecies != SPECIES_NONE)
{
FreePartyPointers();
gCB2_AfterEvolution = gUnknown_0203CEC8.exitCallback;
- BeginEvolutionScene(mon, targetSpecies, 1, gUnknown_0203CEC8.unk9);
+ BeginEvolutionScene(mon, targetSpecies, 1, gUnknown_0203CEC8.slotId);
DestroyTask(taskId);
}
else
@@ -6090,7 +6131,7 @@ static void sub_81B7810(u8 taskId)
static void sub_81B787C(u8 taskId)
{
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.slotId], gStringVar1);
StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
StringExpandPlaceholders(gStringVar4, gText_PkmnNeedsToReplaceMove);
sub_81B1B5C(gStringVar4, 1);
@@ -6101,7 +6142,7 @@ static void sub_81B787C(u8 taskId)
static void sub_81B7910(u8 taskId, u16 move)
{
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.slotId], gStringVar1);
StringCopy(gStringVar2, gMoveNames[move]);
StringExpandPlaceholders(gStringVar4, gText_PkmnLearnedMove3);
sub_81B1B5C(gStringVar4, 1);
@@ -6124,13 +6165,13 @@ void sub_81B79E8(u8 taskId, TaskFunc task)
{
gUnknown_0203CEC4->data[0] = 0;
gUnknown_0203CEC4->data[1] = 0;
- gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.unk9;
+ gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.slotId;
sub_81B7A28(taskId);
}
static void sub_81B7A28(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 hp;
if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE)
@@ -6140,19 +6181,19 @@ static void sub_81B7A28(u8 taskId)
}
hp = GetMonData(mon, MON_DATA_HP);
- if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.slotId, gSpecialVar_ItemId, 0))
{
gTasks[taskId].func = task_sacred_ash_party_loop;
return;
}
PlaySE(SE_KAIFUKU);
- party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
- if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].unkC].invisible)
- DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
+ party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
+ if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.slotId].statusSpriteId].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
sub_81B0FCC(gUnknown_0203CEC4->data[2], 0);
- sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
- sub_81B1F18(taskId, gUnknown_0203CEC8.unk9, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B7C10);
+ sub_81B0FCC(gUnknown_0203CEC8.slotId, 1);
+ sub_81B1F18(taskId, gUnknown_0203CEC8.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, sub_81B7C10);
sub_81B1FA8(taskId, 0, hp);
gUnknown_0203CEC4->data[0] = 1;
gUnknown_0203CEC4->data[1] = 1;
@@ -6165,9 +6206,9 @@ static void task_sacred_ash_party_loop(u8 taskId)
if (gUnknown_0203CEC4->data[0] == 1)
{
gUnknown_0203CEC4->data[0] = 0;
- gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.unk9;
+ gUnknown_0203CEC4->data[2] = gUnknown_0203CEC8.slotId;
}
- if (++(gUnknown_0203CEC8.unk9) == PARTY_SIZE)
+ if (++(gUnknown_0203CEC8.slotId) == PARTY_SIZE)
{
if (gUnknown_0203CEC4->data[1] == 0)
{
@@ -6181,7 +6222,7 @@ static void task_sacred_ash_party_loop(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, 1);
}
gTasks[taskId].func = sub_81B6794;
- gUnknown_0203CEC8.unk9 = 0;
+ gUnknown_0203CEC8.slotId = 0;
}
else
{
@@ -6192,7 +6233,7 @@ static void task_sacred_ash_party_loop(u8 taskId)
static void sub_81B7C10(u8 taskId)
{
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.slotId], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
sub_81B1B5C(gStringVar4, 0);
schedule_bg_copy_tilemap_to_vram(2);
@@ -6203,7 +6244,7 @@ void sub_81B7C74(u8 taskId, TaskFunc task)
{
PlaySE(SE_SELECT);
gCB2_AfterEvolution = gUnknown_0203CEC8.exitCallback;
- if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.slotId, gSpecialVar_ItemId, 0))
{
gUnknown_0203CEE8 = 0;
sub_81B1B5C(gText_WontHaveEffect, 1);
@@ -6292,7 +6333,7 @@ static void sub_81B7E4C(u8 taskId)
if (!gPaletteFade.active)
{
- mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
move = &gUnknown_0203CEC8.unkE;
GetMonNickname(mon, gStringVar1);
gUnknown_0203CEC8.unkE = GetTutorMove(gSpecialVar_0x8005);
@@ -6333,7 +6374,7 @@ void sub_81B7F60(void)
static void sub_81B7FAC(u8 taskId)
{
- gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_HELD_ITEM);
if (gUnknown_0203CEFC == ITEM_NONE)
{
sub_81B8044(taskId);
@@ -6344,7 +6385,7 @@ static void sub_81B7FAC(u8 taskId)
}
else
{
- sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEFC, 1);
+ sub_81B1D1C(&gPlayerParty[gUnknown_0203CEC8.slotId], gUnknown_0203CEFC, 1);
gTasks[taskId].func = sub_81B82A0;
}
}
@@ -6370,8 +6411,8 @@ static void sub_81B8088(u8 taskId)
if (!gPaletteFade.active)
{
item = gUnknown_0203CEC8.unkC;
- sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], item, 0, 1);
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.slotId], item, 0, 1);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], item);
sub_81B83F0(item);
gTasks[taskId].func = sub_81B8104;
}
@@ -6379,7 +6420,7 @@ static void sub_81B8088(u8 taskId)
static void sub_81B8104(u8 taskId)
{
- s8 slot = gUnknown_0203CEC8.unk9;
+ s8 slot = gUnknown_0203CEC8.slotId;
if (sub_81B1BD4() != TRUE)
{
@@ -6392,8 +6433,8 @@ static void sub_81B814C(void)
{
u8 mail;
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC);
- mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], gUnknown_0203CEC8.unkC);
+ mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.slotId], MON_DATA_MAIL);
DoEasyChatScreen(
EASY_CHAT_TYPE_MAIL,
gSaveBlock1Ptr->mail[mail].words,
@@ -6403,7 +6444,7 @@ static void sub_81B814C(void)
static void sub_81B81A8(void)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
if (gSpecialVar_Result == FALSE)
@@ -6427,7 +6468,7 @@ static void sub_81B8230(u8 taskId)
if (gUnknown_0203CEFC != ITEM_NONE)
sub_81B1D68(gUnknown_0203CEC8.unkC, gUnknown_0203CEFC, 0);
else
- sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC, 0, 1);
+ sub_81B1C84(&gPlayerParty[gUnknown_0203CEC8.slotId], gUnknown_0203CEC8.unkC, 0, 1);
gTasks[taskId].func = sub_81B8104;
}
}
@@ -6464,7 +6505,7 @@ static void sub_81B82D4(u8 taskId)
}
else
{
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.slotId], item);
sub_81B1D68(item, gUnknown_0203CEFC, 1);
gTasks[taskId].func = sub_81B8104;
}
@@ -6507,7 +6548,7 @@ void sub_81B8448(void)
static void sub_81B8474(u8 taskId)
{
- struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
+ struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.slotId];
struct MailStruct *mail;
gUnknown_0203CEE8 = 0;
@@ -7107,7 +7148,7 @@ static void sub_81B91B4(u8 taskId)
for (i = 3; i < PARTY_SIZE; i++)
{
if (gUnknown_02022FF8[i - 3].species != SPECIES_NONE)
- AnimateSelectedPartyIcon(gUnknown_0203CEDC[i].unk9, 0);
+ AnimateSelectedPartyIcon(gUnknown_0203CEDC[i].monSpriteId, 0);
}
PlaySE(SE_W231); // Harden SE?
gTasks[taskId].func = sub_81B9240;
@@ -7138,10 +7179,10 @@ static void sub_81B9294(u8 taskId)
{
if (gUnknown_02022FF8[i - 3].species != SPECIES_NONE)
{
- sub_81B9270(gUnknown_0203CEDC[i].unk9, data[0] - 8);
- sub_81B9270(gUnknown_0203CEDC[i].unkA, data[0] - 8);
- sub_81B9270(gUnknown_0203CEDC[i].unkB, data[0] - 8);
- sub_81B9270(gUnknown_0203CEDC[i].unkC, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].monSpriteId, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].itemSpriteId, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].pokeballSpriteId, data[0] - 8);
+ sub_81B9270(gUnknown_0203CEDC[i].statusSpriteId, data[0] - 8);
}
}
ChangeBgX(2, 0x800, 1);
diff --git a/src/pokedex.c b/src/pokedex.c
index 2588e2b73..da3f06bf1 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -3855,7 +3855,7 @@ void blockset_load_palette_to_gpu(u8 taskId)
otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12];
personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14];
paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum;
- lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
+ lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality);
LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32);
DestroyTask(taskId);
}
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 1eb8c0953..dc69b5d54 100755
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -763,11 +763,11 @@ static void sub_813D6B4(void)
static void CreateAreaMarkerSprites(void)
{
u8 spriteId;
- static IWRAM_DATA s16 x;
- static IWRAM_DATA s16 y;
- static IWRAM_DATA s16 i;
- static IWRAM_DATA s16 mapSecId;
- static IWRAM_DATA s16 numSprites;
+ static s16 x;
+ static s16 y;
+ static s16 i;
+ static s16 mapSecId;
+ static s16 numSprites;
LoadSpriteSheet(&sAreaMarkerSpriteSheet);
LoadSpritePalette(&sAreaMarkerSpritePalette);
diff --git a/src/pokemon.c b/src/pokemon.c
index fc9a0843f..cb7be1715 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1879,14 +1879,14 @@ static const u16 sDeoxysBaseStats[] =
90, // Sp.Defense
};
-const u16 gUnknown_08329D54[] =
+const u16 gLinkPlayerFacilityClasses[] =
{
FACILITY_CLASS_COOLTRAINER_M, FACILITY_CLASS_BLACK_BELT, FACILITY_CLASS_CAMPER,
FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_PSYCHIC_M, FACILITY_CLASS_BUG_CATCHER,
- FACILITY_CLASS_PKMN_BREEDER_M, FACILITY_CLASS_GUITARIST, FACILITY_CLASS_COOLTRAINER_F,
- FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_LASS,
- FACILITY_CLASS_PSYCHIC_F, FACILITY_CLASS_BATTLE_GIRL, FACILITY_CLASS_POKEMON_BREEDER_F,
- FACILITY_CLASS_BEAUTY
+ FACILITY_CLASS_PKMN_BREEDER_M, FACILITY_CLASS_GUITARIST,
+ FACILITY_CLASS_COOLTRAINER_F, FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER,
+ FACILITY_CLASS_LASS, FACILITY_CLASS_PSYCHIC_F, FACILITY_CLASS_BATTLE_GIRL,
+ FACILITY_CLASS_POKEMON_BREEDER_F, FACILITY_CLASS_BEAUTY
};
static const u8 sHoldEffectToType[][2] =
@@ -2183,7 +2183,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
{
value = Random32();
shinyValue = HIHALF(value) ^ LOHALF(value) ^ HIHALF(personality) ^ LOHALF(personality);
- } while (shinyValue < 8);
+ } while (shinyValue < SHINY_ODDS);
}
else if (otIdType == OT_ID_PRESET) //Pokemon has a preset OT ID
{
@@ -2248,10 +2248,10 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv);
}
- if (gBaseStats[species].ability2)
+ if (gBaseStats[species].abilities[1])
{
value = personality & 1;
- SetBoxMonData(boxMon, MON_DATA_ALT_ABILITY, &value);
+ SetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, &value);
}
GiveBoxMonInitialMoveset(boxMon);
@@ -2402,8 +2402,8 @@ void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src)
SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV);
SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV);
SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV);
- value = src->altAbility;
- SetMonData(mon, MON_DATA_ALT_ABILITY, &value);
+ value = src->abilityNum;
+ SetMonData(mon, MON_DATA_ABILITY_NUM, &value);
value = src->hpIV;
SetMonData(mon, MON_DATA_HP_IV, &value);
value = src->attackIV;
@@ -2464,8 +2464,8 @@ void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src,
SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV);
SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV);
SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV);
- value = src->altAbility;
- SetMonData(mon, MON_DATA_ALT_ABILITY, &value);
+ value = src->abilityNum;
+ SetMonData(mon, MON_DATA_ABILITY_NUM, &value);
value = src->hpIV;
SetMonData(mon, MON_DATA_HP_IV, &value);
value = src->attackIV;
@@ -2580,7 +2580,7 @@ void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest)
dest->speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL);
dest->spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL);
dest->spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL);
- dest->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY, NULL);
+ dest->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL);
dest->personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
GetMonData(mon, MON_DATA_NICKNAME, dest->nickname);
}
@@ -2649,25 +2649,20 @@ bool8 sub_80688F8(u8 caseId, u8 battlerId)
return TRUE;
}
-static s32 GetDeoxysStat(struct Pokemon *mon, s32 statId)
+static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId)
{
s32 ivVal, evVal;
- s32 statValue;
- u8 nature, statId_;
+ u16 statValue = 0;
+ u8 nature;
- if (gBattleTypeFlags & BATTLE_TYPE_20)
- return 0;
- if (GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
+ if (gBattleTypeFlags & BATTLE_TYPE_20 || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
return 0;
ivVal = GetMonData(mon, MON_DATA_HP_IV + statId, NULL);
evVal = GetMonData(mon, MON_DATA_HP_EV + statId, NULL);
- statValue = (u16)(((sDeoxysBaseStats[statId] * 2 + ivVal + evVal / 4) * mon->level) / 100 + 5);
-
+ statValue = ((sDeoxysBaseStats[statId] * 2 + ivVal + evVal / 4) * mon->level) / 100 + 5;
nature = GetNature(mon);
- statId_ = statId; // needed to match
- statValue = ModifyStatByNature(nature, statValue, statId_);
-
+ statValue = ModifyStatByNature(nature, statValue, (u8)statId);
return statValue;
}
@@ -2711,7 +2706,7 @@ u16 sub_8068B48(void)
arrId = gLinkPlayers[linkId].trainerId & 7;
arrId |= gLinkPlayers[linkId].gender << 3;
- return FacilityClassToPicIndex(gUnknown_08329D54[arrId]);
+ return FacilityClassToPicIndex(gLinkPlayerFacilityClasses[arrId]);
}
u16 sub_8068BB0(void)
@@ -2726,7 +2721,7 @@ u16 sub_8068BB0(void)
arrId = gLinkPlayers[linkId].trainerId & 7;
arrId |= gLinkPlayers[linkId].gender << 3;
- return gFacilityClassToTrainerClass[gUnknown_08329D54[arrId]];
+ return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]];
}
void CreateObedientEnemyMon(void)
@@ -3584,27 +3579,27 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
ret = mon->maxHP;
break;
case MON_DATA_ATK:
- ret = (u16)GetDeoxysStat(mon, STAT_ATK);
+ ret = GetDeoxysStat(mon, STAT_ATK);
if (!ret)
ret = mon->attack;
break;
case MON_DATA_DEF:
- ret = (u16)GetDeoxysStat(mon, STAT_DEF);
+ ret = GetDeoxysStat(mon, STAT_DEF);
if (!ret)
ret = mon->defense;
break;
case MON_DATA_SPEED:
- ret = (u16)GetDeoxysStat(mon, STAT_SPEED);
+ ret = GetDeoxysStat(mon, STAT_SPEED);
if (!ret)
ret = mon->speed;
break;
case MON_DATA_SPATK:
- ret = (u16)GetDeoxysStat(mon, STAT_SPATK);
+ ret = GetDeoxysStat(mon, STAT_SPATK);
if (!ret)
ret = mon->spAttack;
break;
case MON_DATA_SPDEF:
- ret = (u16)GetDeoxysStat(mon, STAT_SPDEF);
+ ret = GetDeoxysStat(mon, STAT_SPDEF);
if (!ret)
ret = mon->spDefense;
break;
@@ -3642,7 +3637,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
struct PokemonSubstruct2 *substruct2 = NULL;
struct PokemonSubstruct3 *substruct3 = NULL;
- if (field > MON_DATA_10)
+ // Any field greater than MON_DATA_ENCRYPT_SEPARATOR is encrypted and must be treated as such
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0);
substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1);
@@ -3736,7 +3732,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_CHECKSUM:
retVal = boxMon->checksum;
break;
- case MON_DATA_10:
+ case MON_DATA_ENCRYPT_SEPARATOR:
retVal = boxMon->unknown;
break;
case MON_DATA_SPECIES:
@@ -3841,8 +3837,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_IS_EGG:
retVal = substruct3->isEgg;
break;
- case MON_DATA_ALT_ABILITY:
- retVal = substruct3->altAbility;
+ case MON_DATA_ABILITY_NUM:
+ retVal = substruct3->abilityNum;
break;
case MON_DATA_COOL_RIBBON:
retVal = substruct3->coolRibbon;
@@ -3977,7 +3973,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
break;
}
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
EncryptBoxMon(boxMon);
return retVal;
@@ -4040,7 +4036,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
struct PokemonSubstruct2 *substruct2 = NULL;
struct PokemonSubstruct3 *substruct3 = NULL;
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0);
substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1);
@@ -4099,7 +4095,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_CHECKSUM:
SET16(boxMon->checksum);
break;
- case MON_DATA_10:
+ case MON_DATA_ENCRYPT_SEPARATOR:
SET16(boxMon->unknown);
break;
case MON_DATA_SPECIES:
@@ -4220,8 +4216,8 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
else
boxMon->isEgg = 0;
break;
- case MON_DATA_ALT_ABILITY:
- SET8(substruct3->altAbility);
+ case MON_DATA_ABILITY_NUM:
+ SET8(substruct3->abilityNum);
break;
case MON_DATA_COOL_RIBBON:
SET8(substruct3->coolRibbon);
@@ -4295,7 +4291,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
break;
}
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
boxMon->checksum = CalculateBoxMonChecksum(boxMon);
EncryptBoxMon(boxMon);
@@ -4428,12 +4424,12 @@ u8 GetMonsStateToDoubles_2(void)
return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON;
}
-u8 GetAbilityBySpecies(u16 species, bool8 altAbility)
+u8 GetAbilityBySpecies(u16 species, bool8 abilityNum)
{
- if (altAbility)
- gLastUsedAbility = gBaseStats[species].ability2;
+ if (abilityNum)
+ gLastUsedAbility = gBaseStats[species].abilities[1];
else
- gLastUsedAbility = gBaseStats[species].ability1;
+ gLastUsedAbility = gBaseStats[species].abilities[0];
return gLastUsedAbility;
}
@@ -4441,8 +4437,8 @@ u8 GetAbilityBySpecies(u16 species, bool8 altAbility)
u8 GetMonAbility(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- u8 altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY, NULL);
- return GetAbilityBySpecies(species, altAbility);
+ u8 abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL);
+ return GetAbilityBySpecies(species, abilityNum);
}
void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
@@ -4585,11 +4581,11 @@ void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
gBattleMons[battlerId].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL);
gBattleMons[battlerId].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL);
gBattleMons[battlerId].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
- gBattleMons[battlerId].altAbility = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ALT_ABILITY, NULL);
+ gBattleMons[battlerId].abilityNum = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ABILITY_NUM, NULL);
gBattleMons[battlerId].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID, NULL);
gBattleMons[battlerId].type1 = gBaseStats[gBattleMons[battlerId].species].type1;
gBattleMons[battlerId].type2 = gBaseStats[gBattleMons[battlerId].species].type2;
- gBattleMons[battlerId].ability = GetAbilityBySpecies(gBattleMons[battlerId].species, gBattleMons[battlerId].altAbility);
+ gBattleMons[battlerId].ability = GetAbilityBySpecies(gBattleMons[battlerId].species, gBattleMons[battlerId].abilityNum);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname);
StringCopy10(gBattleMons[battlerId].nickname, nickname);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[battlerId].otName);
@@ -6320,10 +6316,10 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
- return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
+ return GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality);
}
-const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
+const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
@@ -6331,7 +6327,7 @@ const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32
return gMonPaletteTable[0].data;
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
- if (shinyValue < 8)
+ if (shinyValue < SHINY_ODDS)
return gMonShinyPaletteTable[species].data;
else
return gMonPaletteTable[species].data;
@@ -6350,7 +6346,7 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u
u32 shinyValue;
shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
- if (shinyValue < 8)
+ if (shinyValue < SHINY_ODDS)
return &gMonShinyPaletteTable[species];
else
return &gMonPaletteTable[species];
@@ -6524,7 +6520,7 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
{
bool8 retVal = FALSE;
u32 shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
- if (shinyValue < 8)
+ if (shinyValue < SHINY_ODDS)
retVal = TRUE;
return retVal;
}
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index 52fa6db51..340327475 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -177,9 +177,9 @@ static void SpriteCB_SetDummyOnAnimEnd(struct Sprite *sprite);
#define STRUCT_COUNT 4
// IWRAM bss
-static IWRAM_DATA struct UnkAnimStruct sUnknown_03001240[STRUCT_COUNT];
-static IWRAM_DATA u8 sUnknown_03001270;
-static IWRAM_DATA bool32 sUnknown_03001274;
+static struct UnkAnimStruct sUnknown_03001240[STRUCT_COUNT];
+static u8 sUnknown_03001270;
+static bool32 sUnknown_03001274;
// const rom data
static const u8 sSpeciesToBackAnimSet[] =
@@ -861,16 +861,27 @@ u8 GetSpeciesBackAnimSet(u16 species)
}
#define tState data[0]
-#define tPtrLO data[1]
-#define tPtrHI data[2]
+#define tPtrHi data[1]
+#define tPtrLo data[2]
#define tAnimId data[3]
#define tSaved0 data[4]
#define tSaved2 data[5]
+// BUG: In vanilla, tPtrLo is read as an s16, so if bit 15 of the
+// address were to be set it would cause the pointer to be read
+// as 0xFFFFXXXX instead of the desired 0x02YYXXXX.
+// By dumb luck, this is not an issue in vanilla. However,
+// changing the link order revealed this bug.
+#if MODERN
+#define ANIM_SPRITE(taskId) ((struct Sprite *)((gTasks[taskId].tPtrHi << 16) | ((u16)gTasks[taskId].tPtrLo)))
+#else
+#define ANIM_SPRITE(taskId) ((struct Sprite *)((gTasks[taskId].tPtrHi << 16) | (gTasks[taskId].tPtrLo)))
+#endif //MODERN
+
static void Task_HandleMonAnimation(u8 taskId)
{
u32 i;
- struct Sprite *sprite = (struct Sprite*)(u32)((gTasks[taskId].tPtrLO << 0x10) | (gTasks[taskId].tPtrHI));
+ struct Sprite *sprite = ANIM_SPRITE(taskId);
if (gTasks[taskId].tState == 0)
{
@@ -900,8 +911,8 @@ static void Task_HandleMonAnimation(u8 taskId)
void LaunchAnimationTaskForFrontSprite(struct Sprite *sprite, u8 frontAnimId)
{
u8 taskId = CreateTask(Task_HandleMonAnimation, 128);
- gTasks[taskId].tPtrLO = (u32)(sprite) >> 0x10;
- gTasks[taskId].tPtrHI = (u32)(sprite);
+ gTasks[taskId].tPtrHi = (u32)(sprite) >> 0x10;
+ gTasks[taskId].tPtrLo = (u32)(sprite);
gTasks[taskId].tAnimId = frontAnimId;
}
@@ -916,8 +927,8 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
u8 nature, taskId, animId, battlerId;
taskId = CreateTask(Task_HandleMonAnimation, 128);
- gTasks[taskId].tPtrLO = (u32)(sprite) >> 0x10;
- gTasks[taskId].tPtrHI = (u32)(sprite);
+ gTasks[taskId].tPtrHi = (u32)(sprite) >> 0x10;
+ gTasks[taskId].tPtrLo = (u32)(sprite);
battlerId = sprite->data[0];
nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]);
@@ -927,8 +938,8 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
}
#undef tState
-#undef tPtrLO
-#undef tPtrHI
+#undef tPtrHi
+#undef tPtrLo
#undef tAnimId
#undef tSaved0
#undef tSaved2
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index 6a135875e..ee68de326 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -1223,7 +1223,7 @@ u8 GetValidMonIconPalIndex(u16 species)
return gMonIconPaletteIndices[species];
}
-u8 sub_80D30A0(u16 species)
+u8 GetMonIconPaletteIndexFromSpecies(u16 species)
{
return gMonIconPaletteIndices[species];
}
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
index 4a457adc4..8f16e1ce2 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -1,8 +1,12 @@
#include "global.h"
#include "alloc.h"
+#include "battle_anim.h"
+#include "bg.h"
#include "data.h"
#include "decompress.h"
+#include "dynamic_placeholder_text_util.h"
#include "event_data.h"
+#include "international_string_util.h"
#include "item.h"
#include "link.h"
#include "link_rfu.h"
@@ -10,11 +14,15 @@
#include "menu.h"
#include "palette.h"
#include "random.h"
+#include "rom_8034C54.h"
#include "save.h"
+#include "script.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
+#include "text_window.h"
#include "trig.h"
#include "pokemon.h"
#include "pokemon_jump.h"
@@ -43,6 +51,42 @@ struct PokemonJump1_82E4
u8 unk1C[11];
};
+struct PokemonJump2
+{
+ int unk0;
+ u16 unk4;
+ u8 unk6;
+ u8 filler7[0xa - 0x7];
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE;
+ u8 unkF;
+ u16 filler10;
+ u16 unk12;
+ u16 unk14;
+ u32 unk18;
+ u16 unk1C[5];
+ u8 txtBuff[2][0x40];
+ u8 strBuff[0x100];
+ u16 tilemapBuffer[(0x81a8 - 0x1a6) / 2]; // 0x1A6
+ struct Sprite *unk81A8[MAX_RFU_PLAYERS];
+ struct Sprite *unk81BC[MAX_RFU_PLAYERS];
+ struct Sprite *unk81D0[8];
+ u8 filler81F0[0xC];
+ u8 unk81FC[MAX_RFU_PLAYERS];
+};
+
+struct PokemonJump1Sub
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ u32 unk8;
+};
+
struct PokemonJump1
{
MainCallback returnCallback;
@@ -91,19 +135,14 @@ struct PokemonJump1
int unk64;
int unk68;
int unk6C;
- u8 unk70;
- u8 unk71;
- u16 unk72;
- u16 unk74;
- u32 unk78;
+ struct PokemonJump1Sub unk70;
u8 unk7C[MAX_RFU_PLAYERS];
u8 unk81[MAX_RFU_PLAYERS];
u8 unk86[MAX_RFU_PLAYERS];
u8 unk8B[MAX_RFU_PLAYERS];
u16 unk90[MAX_RFU_PLAYERS];
u16 unk9A[MAX_RFU_PLAYERS];
- void **unkA4;
- u8 fillerA8[0x8200];
+ struct PokemonJump2 unkA4;
struct PokemonJump1_MonInfo unk82A8[MAX_RFU_PLAYERS];
struct PokemonJump1_82E4 unk82E4[MAX_RFU_PLAYERS];
struct PokemonJump1_82E4 *unk83AC;
@@ -115,33 +154,9 @@ struct PokemonJumpMons
u16 unk2;
};
-struct Unk802B078
-{
- u8 unk0;
- u8 unk1;
- u16 unk2;
- u16 unk4;
- u16 unk6;
- int unk8;
-};
-
-
-struct PokemonJump2
-{
- u8 filler0[0xE];
- u8 unkE;
- u8 unkF;
- u8 filler10[0x8198];
- struct Sprite *unk81A8[MAX_RFU_PLAYERS];
- struct Sprite *unk81BC[MAX_RFU_PLAYERS];
- struct Sprite *unk81D0[8];
- u8 filler81F0[0xC];
- u8 unk81FC[MAX_RFU_PLAYERS];
-};
-
static void sub_802AA60(struct PokemonJump1 *);
-void sub_802AA94(struct PokemonJump1 *);
-void sub_802AB20(void);
+static void sub_802AA94(struct PokemonJump1 *);
+static void sub_802AB20(void);
static void sub_802AB98(void);
static s16 sub_802AC00(u16 species);
static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon);
@@ -215,45 +230,85 @@ static void sub_802CB7C(struct Sprite *sprite);
static void sub_802CC40(struct Sprite *sprite);
static void sub_802CD08(struct Sprite *sprite);
static void sub_802CDD4(struct Sprite *sprite);
-void sub_802DC9C(u32);
-void sub_802D074(void *);
-void sub_802D0AC(void);
-void sub_802D0C8(int);
-int sub_802D0F0(void);
-void sub_802D764(void);
-bool32 sub_802D788(void);
-void sub_802D7E8(u16, u16);
-void sub_802D884(u16);
-void sub_802D8FC(u16);
-bool32 sub_802D974(void);
-void sub_802DA14(void);
-void sub_802DC80(int, s8);
-void sub_802DD88(u8);
-bool32 sub_802DA44(void);
-void sub_802DD64(int);
-s8 sub_802DA8C(void);
-int sub_802DCCC(u8);
-void sub_802DD74(u16);
-void sub_802DDA0(u8);
-int sub_802DDB8(int);
-void sub_802DDCC(void);
-void sub_802DDE0(void);
-void sub_802DDF4(int);
-int sub_802DE08(void);
-void sub_802E0AC(struct PokemonJump1_MonInfo *);
-bool32 sub_802E0D0(int, struct PokemonJump1_MonInfo *);
-void sub_802E138(struct PokemonJump1_82E4 *, u8 *);
-bool32 sub_802E1BC(struct PokemonJump1_82E4 *, struct Unk802B078 *);
-void sub_802E234(struct PokemonJump1_82E4 *, u8 , u16);
-bool32 sub_802E264(struct PokemonJump1_82E4 *, int, u8 *, u16 *);
-bool32 sub_802E2D0(struct PokemonJump1_82E4 *, int);
-int sub_802E354(int, u16, u16);
-void sub_802E3A8(void);
-
-extern struct PokemonJump1 *gUnknown_02022CFC;
-extern struct PokemonJump2 *gUnknown_02022D00;
-
-const struct PokemonJumpMons gPkmnJumpSpecies[] =
+static void sub_802DC9C(int id);
+static void sub_802D074(struct PokemonJump2 *);
+static void sub_802D0BC(struct PokemonJump2 *);
+static void sub_802D0AC(void);
+static void sub_802D0C8(int);
+static bool32 sub_802D0F0(void);
+static void sub_802D764(void);
+static bool32 sub_802D788(void);
+static void sub_802D7E8(u16 itemId, u16 quantity);
+static void sub_802D884(u16 itemId);
+static void sub_802D8FC(u16 itemId);
+static bool32 sub_802D974(void);
+static void sub_802DA14(void);
+static void sub_802DC80(u32 id, s16 y);
+static void sub_802DD88(u8 multiplayerId);
+static bool32 sub_802DA44(void);
+static void sub_802DD64(int);
+static s8 sub_802DA8C(void);
+static int sub_802DCCC(u8 flags);
+static void sub_802DD74(u16);
+static void sub_802DDA0(u8 multiplayerId);
+static int sub_802DDB8(int multiplayerId);
+static void sub_802DDCC(void);
+static void sub_802DDE0(void);
+static void sub_802DDF4(int);
+static int sub_802DE08(void);
+static void sub_802E0AC(struct PokemonJump1_MonInfo *arg0);
+static bool32 sub_802E0D0(int multiplayerId, struct PokemonJump1_MonInfo *arg0);
+static void sub_802E138(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
+static bool32 sub_802E1BC(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1);
+static void sub_802E234(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2);
+static bool32 sub_802E264(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3);
+static bool32 sub_802E2D0(struct PokemonJump1_82E4 *arg0, int multiplayerId);
+static bool32 sub_802E354(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow);
+static void sub_802E3A8(void);
+static void sub_802D12C(u8 taskId);
+static void sub_802E00C(u8 arg0);
+static void sub_802E090(u8 taskId);
+static void sub_802D150(void);
+static void sub_802DD08(void);
+static void sub_802DB8C(void);
+static void sub_802DBF8(void);
+static void sub_802DE1C(void);
+static void sub_802DFD4(void);
+static void sub_802D108(void (*func)(void));
+static void sub_802DF70(bool32 arg0);
+static u32 sub_802DA9C(u32 left, u32 top, u32 width, u32 height);
+static void sub_802DB18(u16 left, u16 top, u8 cursorPos);
+static void sub_802D150(void);
+static void sub_802D2E4(void);
+static void sub_802D350(void);
+static void sub_802D3BC(void);
+static void sub_802D448(void);
+static void sub_802D4F4(void);
+static void sub_802D598(void);
+static void sub_802D5E4(void);
+static void sub_802D72C(void);
+static void sub_802D688(void);
+static void sub_802E3E4(u8 taskId);
+static void sub_802E6D0(u8 taskId);
+static void sub_802EB98(u8 taskId);
+static void sub_802E500(u16 windowId, int width);
+static void TruncateToFirstWordOnly(u8 *str);
+static void sub_802EF50(u16 tileTag, u16 palTag);
+static u8 sub_802EFA8(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority);
+static void sub_802EFFC(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 *spriteId1, s16 *spriteId2);
+static bool32 sub_802EC98(u8 spriteId);
+static bool32 sub_802EE30(u8 spriteId);
+static void sub_802EDCC(u8 spriteId1, u8 spriteId2, u8 spriteId3);
+static void sub_802EE5C(struct Sprite *sprite);
+static void sub_802E83C(u8 taskId);
+static void sub_802E8C8(u8 taskId);
+static void sub_802EA50(u8 taskId);
+static void sub_802EAB0(u8 taskId);
+
+EWRAM_DATA static struct PokemonJump1 *gUnknown_02022CFC = NULL;
+EWRAM_DATA static struct PokemonJump2 *gUnknown_02022D00 = NULL;
+
+static const struct PokemonJumpMons gPkmnJumpSpecies[] =
{
{ .species = SPECIES_BULBASAUR, .unk2 = 2, },
{ .species = SPECIES_CHARMANDER, .unk2 = 1, },
@@ -357,47 +412,6 @@ const struct PokemonJumpMons gPkmnJumpSpecies[] =
{ .species = SPECIES_BAGON, .unk2 = 1, },
};
-bool32 (* const gUnknown_082FB5F4[])(void) =
-{
- sub_802B248,
- sub_802B2D4,
- sub_802B368,
- sub_802B3D4,
- sub_802B4CC,
- sub_802B5C8,
- sub_802B664,
- sub_802B6B8,
- sub_802B720,
-};
-
-bool32 (* const gUnknown_082FB618[])(void) =
-{
- sub_802B29C,
- sub_802B31C,
- sub_802B3B4,
- sub_802B470,
- sub_802B568,
- sub_802B628,
- sub_802B664,
- sub_802B704,
- sub_802B720,
-};
-
-extern const u16 gUnknown_082FB63C[];
-extern const u16 gUnknown_082FB64C[4];
-extern const u16 gUnknown_082FB654[];
-extern const s8 gUnknown_082FB65C[][48];
-extern const int gUnknown_082FB6EC[];
-extern const int gUnknown_082FB714[];
-extern const u16 gUnknown_082FB704[8];
-extern const struct CompressedSpriteSheet gUnknown_082FBE08[5];
-extern const struct SpritePalette gUnknown_082FBE30[2];
-extern const struct SpriteTemplate gUnknown_082FBE40;
-extern const struct SpriteTemplate gUnknown_082FC00C;
-extern const s16 gUnknown_082FBE58[];
-extern const s16 gUnknown_082FBEA8[8];
-extern const struct SpriteTemplate gUnknown_082FBEB8[4];
-
void sub_802A9A8(u16 partyIndex, MainCallback callback)
{
u8 taskId;
@@ -433,15 +447,15 @@ static void sub_802AA48(void)
static void sub_802AA60(struct PokemonJump1 *arg0)
{
arg0->unk5 = GetLinkPlayerCount();
- arg0->unk70 = 5;
- arg0->unk72 = 0;
+ arg0->unk70.unk0 = 5;
+ arg0->unk70.unk2 = 0;
sub_802AB20();
sub_802AA94(arg0);
if (arg0->unk5 == MAX_RFU_PLAYERS)
sub_802E3A8();
}
-void sub_802AA94(struct PokemonJump1 *arg0)
+static void sub_802AA94(struct PokemonJump1 *arg0)
{
int i;
@@ -462,9 +476,9 @@ void sub_802AA94(struct PokemonJump1 *arg0)
arg0->unk46 = 0;
arg0->unk49 = 0;
arg0->unk48 = 1;
- arg0->unk78 = 0;
- arg0->unk71 = 0;
- arg0->unk74 = 0;
+ arg0->unk70.unk8 = 0;
+ arg0->unk70.unk1 = 0;
+ arg0->unk70.unk4 = 0;
arg0->unk60 = 1;
arg0->unk4D = 0;
arg0->unk68 = 0;
@@ -481,7 +495,7 @@ void sub_802AA94(struct PokemonJump1 *arg0)
}
}
-void sub_802AB20(void)
+static void sub_802AB20(void)
{
int i, index;
@@ -629,7 +643,7 @@ static void sub_802AE50(u8 arg0)
{
int i;
- gUnknown_02022CFC->unk70 = arg0;
+ gUnknown_02022CFC->unk70.unk0 = arg0;
gUnknown_02022CFC->unk8 = 0;
gUnknown_02022CFC->unkA = 0;
gUnknown_02022CFC->unk48 = 1;
@@ -656,7 +670,7 @@ static void sub_802AEA4(void)
gUnknown_02022CFC->unk82E4[i].unk12 = var0;
}
- if (gUnknown_02022CFC->unk82E4[i].unk18 && gUnknown_02022CFC->unk8B[i] == gUnknown_02022CFC->unk70)
+ if (gUnknown_02022CFC->unk82E4[i].unk18 && gUnknown_02022CFC->unk8B[i] == gUnknown_02022CFC->unk70.unk0)
count++;
}
@@ -664,6 +678,19 @@ static void sub_802AEA4(void)
gUnknown_02022CFC->unk49 = 1;
}
+static bool32 (* const gUnknown_082FB5F4[])(void) =
+{
+ sub_802B248,
+ sub_802B2D4,
+ sub_802B368,
+ sub_802B3D4,
+ sub_802B4CC,
+ sub_802B5C8,
+ sub_802B664,
+ sub_802B6B8,
+ sub_802B720,
+};
+
static void sub_802AF80(u8 taskId)
{
sub_802AEA4();
@@ -676,7 +703,7 @@ static void sub_802AF80(u8 taskId)
if (gUnknown_02022CFC->unk48 == 1)
{
- if (!gUnknown_082FB5F4[gUnknown_02022CFC->unk70]())
+ if (!gUnknown_082FB5F4[gUnknown_02022CFC->unk70.unk0]())
{
gUnknown_02022CFC->unk48 = 0;
gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1;
@@ -701,7 +728,7 @@ static void sub_802B008(void)
static void sub_802B044(u8 arg0)
{
- gUnknown_02022CFC->unk70 = arg0;
+ gUnknown_02022CFC->unk70.unk0 = arg0;
gUnknown_02022CFC->unk8 = 0;
gUnknown_02022CFC->unkA = 0;
gUnknown_02022CFC->unk48 = 1;
@@ -712,30 +739,30 @@ static void sub_802B078(void)
{
int i;
u16 var0;
- struct Unk802B078 sp0;
+ struct PokemonJump1Sub sp0;
var0 = gUnknown_02022CFC->unk82E4[0].unk10;
if (sub_802E1BC(gUnknown_02022CFC->unk82E4, &sp0))
{
if (gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 == 1
- && sp0.unk0 != gUnknown_02022CFC->unk70)
+ && sp0.unk0 != gUnknown_02022CFC->unk70.unk0)
{
sub_802B044(sp0.unk0);
}
- if (gUnknown_02022CFC->unk78 != sp0.unk8)
+ if (gUnknown_02022CFC->unk70.unk8 != sp0.unk8)
{
- gUnknown_02022CFC->unk78 = sp0.unk8;
+ gUnknown_02022CFC->unk70.unk8 = sp0.unk8;
gUnknown_02022CFC->unk5C = 1;
- gUnknown_02022CFC->unk71 = sp0.unk1;
- if (gUnknown_02022CFC->unk71)
+ gUnknown_02022CFC->unk70.unk1 = sp0.unk1;
+ if (gUnknown_02022CFC->unk70.unk1)
gUnknown_02022CFC->unk4D = 1;
else
gUnknown_02022CFC->unk4D = 0;
}
- gUnknown_02022CFC->unk72 = sp0.unk2;
- gUnknown_02022CFC->unk74 = sp0.unk4;
+ gUnknown_02022CFC->unk70.unk2 = sp0.unk2;
+ gUnknown_02022CFC->unk70.unk4 = sp0.unk4;
gUnknown_02022CFC->unk82E4[0].unk12 = var0;
}
@@ -750,12 +777,25 @@ static void sub_802B078(void)
}
}
+static bool32 (* const gUnknown_082FB618[])(void) =
+{
+ sub_802B29C,
+ sub_802B31C,
+ sub_802B3B4,
+ sub_802B470,
+ sub_802B568,
+ sub_802B628,
+ sub_802B664,
+ sub_802B704,
+ sub_802B720,
+};
+
static void sub_802B194(u8 taskId)
{
sub_802B078();
if (gUnknown_02022CFC->unk48)
{
- if (!gUnknown_082FB618[gUnknown_02022CFC->unk70]())
+ if (!gUnknown_082FB618[gUnknown_02022CFC->unk70.unk0]())
{
gUnknown_02022CFC->unk48 = 0;
gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1;
@@ -770,7 +810,7 @@ static void sub_802B194(u8 taskId)
static void sub_802B1FC(void)
{
if (!gUnknown_02022CFC->unk2C)
- sub_802E234(&gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6], gUnknown_02022CFC->unk70, gUnknown_02022CFC->unk42);
+ sub_802E234(&gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6], gUnknown_02022CFC->unk70.unk0, gUnknown_02022CFC->unk42);
if (gUnknown_02022CFC->unk30 != 0x1111)
{
@@ -790,7 +830,7 @@ static bool32 sub_802B248(void)
case 1:
if (!sub_802B7E0())
{
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unk4A;
gUnknown_02022CFC->unk4C = 1;
return FALSE;
}
@@ -806,7 +846,7 @@ static bool32 sub_802B29C(void)
{
case 0:
sub_802AE14(0);
- gUnknown_02022CFC->unk24 = gUnknown_02022CFC->unk72;
+ gUnknown_02022CFC->unk24 = gUnknown_02022CFC->unk70.unk2;
gUnknown_02022CFC->unk8++;
// fall through
case 1:
@@ -844,7 +884,7 @@ static bool32 sub_802B31C(void)
case 0:
sub_802C0E8();
sub_802AE14(0);
- gUnknown_02022CFC->unk4A = gUnknown_02022CFC->unk72;
+ gUnknown_02022CFC->unk4A = gUnknown_02022CFC->unk70.unk2;
gUnknown_02022CFC->unk8++;
// fall through
case 1:
@@ -860,7 +900,7 @@ static bool32 sub_802B368(void)
{
if (!sub_802B8CC())
{
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unk4A;
gUnknown_02022CFC->unk4C = 1;
}
else if (sub_802C538())
@@ -902,17 +942,17 @@ static bool32 sub_802B3D4(void)
{
if (sub_802C7BC())
{
- gUnknown_02022CFC->unk72 = sub_802C7E0();
+ gUnknown_02022CFC->unk70.unk2 = sub_802C7E0();
gUnknown_02022CFC->unk4C = 7;
}
- else if (gUnknown_02022CFC->unk74 >= 200)
+ else if (gUnknown_02022CFC->unk70.unk4 >= 200)
{
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unkE;
gUnknown_02022CFC->unk4C = 8;
}
else
{
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unkE;
gUnknown_02022CFC->unk4C = 4;
}
@@ -962,7 +1002,7 @@ static bool32 sub_802B4CC(void)
case 1:
if (!sub_802BB84())
{
- sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ sub_802E354(gUnknown_02022CFC->unk70.unk8, gUnknown_02022CFC->unk70.unk4, gUnknown_02022CFC->unk70.unk2);
gUnknown_02022CFC->unk8++;
}
break;
@@ -996,7 +1036,7 @@ static bool32 sub_802B568(void)
case 1:
if (!sub_802BB84())
{
- sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ sub_802E354(gUnknown_02022CFC->unk70.unk8, gUnknown_02022CFC->unk70.unk4, gUnknown_02022CFC->unk70.unk2);
gUnknown_02022CFC->unk42 = gUnknown_02022CFC->unk45;
return FALSE;
}
@@ -1019,7 +1059,7 @@ static bool32 sub_802B5C8(void)
{
sub_802AA94(gUnknown_02022CFC);
gUnknown_02022CFC->unk24 = Random();
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk24;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unk24;
gUnknown_02022CFC->unk4C = 0;
return FALSE;
}
@@ -1082,7 +1122,7 @@ static bool32 sub_802B6B8(void)
case 1:
if (!sub_802BA58())
{
- gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk70.unk2 = gUnknown_02022CFC->unkE;
gUnknown_02022CFC->unk4C = 8;
return FALSE;
}
@@ -1106,7 +1146,7 @@ static bool32 sub_802B720(void)
switch (gUnknown_02022CFC->unk8)
{
case 0:
- sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ sub_802E354(gUnknown_02022CFC->unk70.unk8, gUnknown_02022CFC->unk70.unk4, gUnknown_02022CFC->unk70.unk2);
sub_802D0C8(5);
gUnknown_02022CFC->unk8++;
break;
@@ -1145,8 +1185,6 @@ static bool32 sub_802B720(void)
static bool32 sub_802B7E0(void)
{
- int var0;
-
switch (gUnknown_02022CFC->unkA)
{
case 0:
@@ -1155,8 +1193,7 @@ static bool32 sub_802B7E0(void)
gUnknown_02022CFC->unkA++;
break;
case 1:
- var0 = sub_802D0F0();
- if (!var0)
+ if (!sub_802D0F0())
{
sub_802DDF4(gUnknown_02022CFC->unk6);
gUnknown_02022CFC->unk3C = 0;
@@ -1278,7 +1315,7 @@ static bool32 sub_802B964(void)
if (!sub_802D0F0())
{
sub_802DDCC();
- gUnknown_02022CFC->unk71 = 0;
+ gUnknown_02022CFC->unk70.unk1 = 0;
sub_802C114();
gUnknown_02022CFC->unkA++;
return FALSE;
@@ -1296,7 +1333,7 @@ static bool32 sub_802BA58(void)
switch (gUnknown_02022CFC->unkA)
{
case 0:
- sub_802C808(gUnknown_02022CFC->unk72, &gUnknown_02022CFC->unk3E, &gUnknown_02022CFC->unk40);
+ sub_802C808(gUnknown_02022CFC->unk70.unk2, &gUnknown_02022CFC->unk3E, &gUnknown_02022CFC->unk40);
sub_802D7E8(gUnknown_02022CFC->unk3E, gUnknown_02022CFC->unk40);
gUnknown_02022CFC->unkA++;
break;
@@ -1576,6 +1613,9 @@ static int sub_802BF48(void)
return result;
}
+static const u16 gUnknown_082FB63C[] = {0x1a, 0x1f, 0x24, 0x29, 0x2e, 0x33, 0x38, 0x3d};
+static const u16 gUnknown_082FB64C[] = {0, 1, 1, 2};
+
static void sub_802BF7C(void)
{
int var0;
@@ -1694,21 +1734,23 @@ static void sub_802C1BC(void)
gUnknown_02022CFC->unk83AC->unk10 = 0;
}
+static const u16 gUnknown_082FB654[] = {SE_REGI, SE_REAPOKE, SE_W234, SE_RG_EXCELLENT};
+
static void sub_802C1DC(void)
{
if (gUnknown_02022CFC->unk5C)
{
- sub_802DD64(gUnknown_02022CFC->unk78);
+ sub_802DD64(gUnknown_02022CFC->unk70.unk8);
gUnknown_02022CFC->unk5C = 0;
if (gUnknown_02022CFC->unk4D)
{
- int index = sub_802DCCC(gUnknown_02022CFC->unk71);
+ int index = sub_802DCCC(gUnknown_02022CFC->unk70.unk1);
PlaySE(gUnknown_082FB654[index - 2]);
gUnknown_02022CFC->unk4D = 0;
}
}
- sub_802DD74(gUnknown_02022CFC->unk74);
+ sub_802DD74(gUnknown_02022CFC->unk70.unk4);
sub_802C280();
sub_802C240();
}
@@ -1774,6 +1816,19 @@ static void sub_802C280(void)
PlaySE(SE_DANSA);
}
+static const s8 gUnknown_082FB65C[][48] =
+{
+ {-3, -6, -8, -10, -13, -15, -17, -19, -21, -23, -25, -27, -28, -29, -30, -30, -30, -28, -27,
+ -26, -25, -23, -22, -20, -18, -17, -15, -13, -11, -8, -6, -4, -1},
+
+ {-3, -6, -9, -11, -14, -16, -18, -20, -22, -24, -26, -28, -29, -30, -30, -28, -26, -24, -22,
+ -20, -18, -16, -14, -11, -9, -6, -4, -1},
+
+ {-3, -6, -9, -11, -13, -15, -17, -19, -21, -23, -25, -27, -28, -29, -30, -30, -30, -30, -29,
+ -29, -28, -28, -27, -27, -26, -25, -24, -22, -20, -18, -16, -14,
+ -12, -11, -9, -6, -4, -1},
+};
+
static void sub_802C398(int multiplayerId)
{
int var0;
@@ -1813,7 +1868,7 @@ static void sub_802C398(int multiplayerId)
sub_802DC80(multiplayerId, var1);
if (!var1 && multiplayerId == gUnknown_02022CFC->unk6)
sub_802C1BC();
-
+
player->unk0 = var1;
}
@@ -1826,7 +1881,7 @@ static void sub_802C43C(void)
sub_802C780();
gUnknown_02022CFC->unk54 = 0;
gUnknown_02022CFC->unk58 = 1;
- gUnknown_02022CFC->unk71 = 0;
+ gUnknown_02022CFC->unk70.unk1 = 0;
}
else
{
@@ -1849,9 +1904,9 @@ static void sub_802C43C(void)
sub_802C780();
gUnknown_02022CFC->unk54 = 0;
gUnknown_02022CFC->unk58 = 1;
- gUnknown_02022CFC->unk71 = 0;
- if (gUnknown_02022CFC->unk74 < 9999)
- gUnknown_02022CFC->unk74++;
+ gUnknown_02022CFC->unk70.unk1 = 0;
+ if (gUnknown_02022CFC->unk70.unk4 < 9999)
+ gUnknown_02022CFC->unk70.unk4++;
sub_802C688(10);
sub_802AE14(3);
@@ -1955,10 +2010,10 @@ static bool32 sub_802C650(void)
static void sub_802C688(int arg0)
{
- gUnknown_02022CFC->unk78 += arg0;
+ gUnknown_02022CFC->unk70.unk8 += arg0;
gUnknown_02022CFC->unk5C = 1;
- if (gUnknown_02022CFC->unk78 >= 99990)
- gUnknown_02022CFC->unk78 = 99990;
+ if (gUnknown_02022CFC->unk70.unk8 >= 99990)
+ gUnknown_02022CFC->unk70.unk8 = 99990;
}
static int sub_802C6B0(void)
@@ -2003,7 +2058,7 @@ static int sub_802C73C(u8 *arg0)
}
}
- gUnknown_02022CFC->unk71 = flags;
+ gUnknown_02022CFC->unk70.unk1 = flags;
if (flags)
gUnknown_02022CFC->unk4D = 1;
@@ -2015,6 +2070,8 @@ static void sub_802C780(void)
gUnknown_02022CFC->unk44 = 0;
}
+static const int gUnknown_082FB6EC[] = {0, 0, 0x32, 0x64, 0xc8, 0x1f4};
+
static int sub_802C790(int arg0)
{
return gUnknown_082FB6EC[arg0];
@@ -2026,9 +2083,19 @@ static void sub_802C7A0(u16 arg0)
gUnknown_02022CFC->unkE = arg0;
}
+static const u16 gUnknown_082FB704[] = {0x8a, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93};
+static const u32 gUnknown_082FB714[][2] =
+{
+ {0x1388, 1},
+ {0x1f40, 2},
+ {0x2ee0, 3},
+ {0x3e80, 4},
+ {0x4e20, 5},
+};
+
static bool32 sub_802C7BC(void)
{
- if (gUnknown_02022CFC->unk78 >= gUnknown_082FB714[0])
+ if (gUnknown_02022CFC->unk70.unk8 >= gUnknown_082FB714[0][0])
return TRUE;
else
return FALSE;
@@ -2053,6 +2120,22 @@ static u16 sub_802C818(void)
return gUnknown_082FB704[index];
}
+#ifdef NONMATCHING
+// Impossible to match.
+static u16 sub_802C838(void)
+{
+ u32 val, i;
+
+ val = 0;
+ for (i = 0; i < 5; val = gUnknown_082FB714[i][1], i++)
+ {
+ if (gUnknown_02022CFC->unk70.unk8 < gUnknown_082FB714[i][0])
+ break;
+ }
+
+ return val;
+}
+#else
NAKED
static u16 sub_802C838(void)
{
@@ -2091,31 +2174,32 @@ _0802C874:\n\
pop {r1}\n\
bx r1");
}
+#endif
static u16 sub_802C880(u16 item, u16 quantity)
{
while (quantity && !CheckBagHasSpace(item, quantity))
quantity--;
-
+
return quantity;
}
-u16 sub_802C8AC(void)
+static u16 sub_802C8AC(void)
{
return GetLinkPlayerCount();
}
-u16 sub_802C8BC(void)
+static u16 sub_802C8BC(void)
{
return gUnknown_02022CFC->unk6;
}
-struct PokemonJump1_MonInfo *sub_802C8C8(u8 multiplayerId)
+static struct PokemonJump1_MonInfo *sub_802C8C8(u8 multiplayerId)
{
return &gUnknown_02022CFC->unk82A8[multiplayerId];
}
-u8 *sub_802C8E8(u8 multiplayerId)
+static u8 *sub_802C8E8(u8 multiplayerId)
{
return gUnknown_02022CFC->unk82E4[multiplayerId].unk1C;
}
@@ -2145,13 +2229,331 @@ void sub_802C920(void)
gSpecialVar_Result = 0;
}
-void sub_802C974(struct PokemonJump2 *arg0)
+// Large group of data.
+static const u16 gPkmnJumpPal1[] = INCBIN_U16("graphics/link_games/pkmnjump_pal1.gbapal");
+static const u16 gPkmnJumpPal2[] = INCBIN_U16("graphics/link_games/pkmnjump_pal2.gbapal");
+
+static const u32 gPkmnJumpRopeGfx1[] = INCBIN_U32("graphics/link_games/pkmnjump_rope1.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx2[] = INCBIN_U32("graphics/link_games/pkmnjump_rope2.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx3[] = INCBIN_U32("graphics/link_games/pkmnjump_rope3.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx4[] = INCBIN_U32("graphics/link_games/pkmnjump_rope4.4bpp.lz");
+
+static const u32 gPkmnJumpStarGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_star.4bpp.lz");
+
+static const struct CompressedSpriteSheet gUnknown_082FBE08[] =
+{
+ {gPkmnJumpRopeGfx1, 0x600, 5},
+ {gPkmnJumpRopeGfx2, 0x0c00, 6},
+ {gPkmnJumpRopeGfx3, 0x0600, 7},
+ {gPkmnJumpRopeGfx4, 0x0600, 8},
+ {gPkmnJumpStarGfx, 0x0200, 10},
+};
+
+static const struct SpritePalette gUnknown_082FBE30[] =
+{
+ {gPkmnJumpPal1, 5},
+ {gPkmnJumpPal2, 6},
+};
+
+// Forward declarations.
+static const struct OamData sOamData_82FBEC8;
+static const struct SpriteTemplate gUnknown_082FBF78;
+static const struct SpriteTemplate gUnknown_082FBF90;
+static const struct SpriteTemplate gUnknown_082FBFA8;
+static const struct SpriteTemplate gUnknown_082FBFC0;
+
+static const struct SpriteTemplate gUnknown_082FBE40 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_82FBEC8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const s16 gUnknown_082FBE58[][10] =
+{
+ {0x60, 0x60, 0x60, 0x72, 0x78, 0x78, 0x78, 0x72, 0x60, 0x60},
+ {0x46, 0x50, 0x60, 0x72, 0x78, 0x80, 0x78, 0x72, 0x60, 0x50},
+ {0x32, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
+ {0x2a, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
+};
+
+static const s16 gUnknown_082FBEA8[] = {0x10, 0x28, 0x48, 0x68, 0x88, 0xa8, 0xc8, 0xe0};
+
+static const struct SpriteTemplate *const gUnknown_082FBEB8[] =
+{
+ &gUnknown_082FBF78,
+ &gUnknown_082FBF90,
+ &gUnknown_082FBFA8,
+ &gUnknown_082FBFC0,
+};
+
+static const struct OamData sOamData_82FBEC8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FBED0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 2,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FBED8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FBEE0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FBEE8[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBEF0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBEF8[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF00[] =
+{
+ ANIMCMD_FRAME(24, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF08[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF10[] =
+{
+ ANIMCMD_FRAME(40, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF18[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF20[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF40[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FBF48[] =
+{
+ sSpriteAnim_82FBEE8,
+ sSpriteAnim_82FBEF0,
+ sSpriteAnim_82FBEF8,
+ sSpriteAnim_82FBF00,
+ sSpriteAnim_82FBF08,
+ sSpriteAnim_82FBF10
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FBF60[] =
+{
+ sSpriteAnim_82FBF18,
+ sSpriteAnim_82FBF20,
+ sSpriteAnim_82FBF28,
+ sSpriteAnim_82FBF30,
+ sSpriteAnim_82FBF38,
+ sSpriteAnim_82FBF40
+};
+
+static const struct SpriteTemplate gUnknown_082FBF78 =
+{
+ .tileTag = 5,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBED0,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_082FBF90 =
+{
+ .tileTag = 6,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBED8,
+ .anims = sSpriteAnimTable_82FBF60,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_082FBFA8 =
+{
+ .tileTag = 7,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBEE0,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_082FBFC0 =
+{
+ .tileTag = 8,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBEE0,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sOamData_82FBFD8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FBFE0[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBFE8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FC004[] =
+{
+ sSpriteAnim_82FBFE0,
+ sSpriteAnim_82FBFE8
+};
+
+static const struct SpriteTemplate gUnknown_082FC00C =
+{
+ .tileTag = 10,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBFD8,
+ .anims = sSpriteAnimTable_82FC004,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+// Back to code
+static void sub_802C974(struct PokemonJump2 *arg0)
{
int i;
for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE08); i++)
LoadCompressedSpriteSheet(&gUnknown_082FBE08[i]);
-
+
for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE30); i++)
LoadSpritePalette(&gUnknown_082FBE30[i]);
@@ -2166,7 +2568,7 @@ static void sub_802C9BC(struct Sprite *sprite)
sprite->data[i] = 0;
}
-void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, u16 x, u16 y, u8 multiplayerId)
+static void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, s16 x, s16 y, u8 multiplayerId)
{
struct SpriteTemplate spriteTemplate;
struct SpriteSheet spriteSheet;
@@ -2197,7 +2599,7 @@ void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon
spriteSheet.size = 0x800;
LoadSpriteSheet(&spriteSheet);
- spritePalette.data = GetFrontSpritePalFromSpeciesAndPersonality(jumpMon->species, jumpMon->otId, jumpMon->personality);
+ spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(jumpMon->species, jumpMon->otId, jumpMon->personality);
spritePalette.tag = multiplayerId;
LoadCompressedSpritePalette(&spritePalette);
@@ -2218,7 +2620,7 @@ void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon
arg0->unk81A8[multiplayerId] = NULL;
}
-void sub_802CB14(struct PokemonJump2 *arg0, int multiplayerId)
+static void sub_802CB14(struct PokemonJump2 *arg0, int multiplayerId)
{
sub_802C9BC(arg0->unk81BC[multiplayerId]);
arg0->unk81BC[multiplayerId]->data[7] = arg0->unk81A8[multiplayerId] - gSprites;
@@ -2258,14 +2660,14 @@ static void sub_802CB7C(struct Sprite *sprite)
}
}
-void sub_802CBF0(struct PokemonJump2 *arg0, int multiplayerId)
+static void sub_802CBF0(struct PokemonJump2 *arg0, int multiplayerId)
{
arg0->unk81A8[multiplayerId]->callback = sub_802CC40;
arg0->unk81A8[multiplayerId]->pos2.y = 0;
sub_802C9BC(arg0->unk81A8[multiplayerId]);
}
-bool32 sub_802CC18(struct PokemonJump2 *arg0, int multiplayerId)
+static bool32 sub_802CC18(struct PokemonJump2 *arg0, int multiplayerId)
{
return arg0->unk81A8[multiplayerId]->callback == sub_802CC40;
}
@@ -2289,13 +2691,13 @@ static void sub_802CC40(struct Sprite *sprite)
}
}
-void sub_802CC88(struct PokemonJump2 *arg0, int multiplayerId)
+static void sub_802CC88(struct PokemonJump2 *arg0, int multiplayerId)
{
sub_802C9BC(arg0->unk81A8[multiplayerId]);
arg0->unk81A8[multiplayerId]->callback = sub_802CD08;
}
-void sub_802CCB0(struct PokemonJump2 *arg0)
+static void sub_802CCB0(struct PokemonJump2 *arg0)
{
int i;
u16 numPlayers = sub_802C8AC();
@@ -2319,7 +2721,7 @@ static void sub_802CD08(struct Sprite *sprite)
}
}
-void sub_802CD3C(struct PokemonJump2 *arg0)
+static void sub_802CD3C(struct PokemonJump2 *arg0)
{
int i;
u16 numPlayers = sub_802C8AC();
@@ -2327,13 +2729,13 @@ void sub_802CD3C(struct PokemonJump2 *arg0)
arg0->unk81A8[i]->subpriority = arg0->unk81FC[i];
}
-void sub_802CD70(struct PokemonJump2 *arg0, int multiplayerId)
+static void sub_802CD70(struct PokemonJump2 *arg0, int multiplayerId)
{
sub_802C9BC(arg0->unk81A8[multiplayerId]);
arg0->unk81A8[multiplayerId]->callback = sub_802CDD4;
}
-bool32 sub_802CD98(struct PokemonJump2 *arg0)
+static bool32 sub_802CD98(struct PokemonJump2 *arg0)
{
int i;
u16 numPlayers = sub_802C8AC();
@@ -2372,7 +2774,7 @@ static void sub_802CDD4(struct Sprite *sprite)
}
}
-void sub_802CE48(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
+static void sub_802CE48(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
{
u8 spriteId = CreateSprite(&gUnknown_082FC00C, x, y, 1);
if (spriteId != MAX_SPRITES)
@@ -2382,25 +2784,1853 @@ void sub_802CE48(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
}
}
-// void sub_802CE9C(struct PokemonJump2 *arg0)
-// {
-// int i;
-// int count;
-// u8 spriteId;
-
-// count = 0;
-// for (i = 0; i < 4; i++)
-// {
-// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
-// arg0->unk81D0[count] = &gSprites[spriteId];
-// count++;
-// }
-
-// for (i = 0; i < 4; i++)
-// {
-// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
-// arg0->unk81D0[count] = &gSprites[spriteId];
-// arg0->unk81D0[count]->hFlip = 1;
-// count++;
-// }
-// }
+static void sub_802CE9C(struct PokemonJump2 *arg0)
+{
+ int i;
+ int count;
+ u8 spriteId;
+
+ count = 0;
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i][0], 2);
+ arg0->unk81D0[count] = &gSprites[spriteId];
+ count++;
+ }
+
+ for (i = 3; i >= 0; i--)
+ {
+ spriteId = CreateSprite(gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i][0], 2);
+ arg0->unk81D0[count] = &gSprites[spriteId];
+ arg0->unk81D0[count]->hFlip = 1;
+ count++;
+ }
+}
+
+static void sub_802CF50(struct PokemonJump2 *arg0, int arg1)
+{
+ int i, count, palNum;
+ int priority;
+
+ if (arg1 > 5)
+ {
+ arg1 = 10 - arg1;
+ priority = 3;
+ palNum = arg0->unkF;
+ }
+ else
+ {
+ priority = 2;
+ palNum = arg0->unkE;
+ }
+
+ count = 0;
+ for (i = 0; i < 4; i++)
+ {
+ arg0->unk81D0[count]->pos1.y = gUnknown_082FBE58[i][arg1];
+ arg0->unk81D0[count]->oam.priority = priority;
+ arg0->unk81D0[count]->oam.paletteNum = palNum;
+ StartSpriteAnim(arg0->unk81D0[count], arg1);
+ count++;
+ }
+
+ for (i = 3; i >= 0; i--)
+ {
+ arg0->unk81D0[count]->pos1.y = gUnknown_082FBE58[i][arg1];
+ arg0->unk81D0[count]->oam.priority = priority;
+ arg0->unk81D0[count]->oam.paletteNum = palNum;
+ StartSpriteAnim(arg0->unk81D0[count], arg1);
+ count++;
+ }
+}
+
+static void sub_802D044(struct PokemonJump2 *arg0)
+{
+ sub_802EB24(9, 7, 120, 80, 0);
+ sub_802CD3C(arg0);
+}
+
+static bool32 sub_802D068(void)
+{
+ return sub_802EB84();
+}
+
+static void sub_802D074(struct PokemonJump2 *arg0)
+{
+ u8 taskId;
+
+ gUnknown_02022D00 = arg0;
+ sub_802D0BC(gUnknown_02022D00);
+ taskId = CreateTask(sub_802D12C, 3);
+ gUnknown_02022D00->unk6 = taskId;
+ SetWordTaskArg(gUnknown_02022D00->unk6, 2, (u32) gUnknown_02022D00);
+ sub_802D108(sub_802D150);
+}
+
+static void sub_802D0AC(void)
+{
+ FreeAllWindowBuffers();
+ sub_8034CC8();
+}
+
+static void sub_802D0BC(struct PokemonJump2 *arg0)
+{
+ arg0->unk4 = 0;
+ arg0->unk0 = 0;
+ arg0->unk12 = 0xFF;
+}
+
+// Gfx
+static const u16 gPkmnJumpPal3[] = INCBIN_U16("graphics/link_games/pkmnjump_pal3.gbapal");
+
+static const u16 gPkmnJumpBgPal[] = INCBIN_U16("graphics/link_games/pkmnjump_bg.gbapal");
+static const u32 gPkmnJumpBgGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.4bpp.lz");
+static const u32 gPkmnJumpBgTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.bin.lz");
+
+static const u16 gPkmnJumpVenusaurPal[] = INCBIN_U16("graphics/link_games/pkmnjump_venusaur.gbapal");
+static const u32 gPkmnJumpVenusaurGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.4bpp.lz");
+static const u32 gPkmnJumpVenusaurTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.bin.lz");
+
+static const u16 gPkmnJumpResultsPal[] = INCBIN_U16("graphics/link_games/pkmnjump_results.gbapal");
+static const u32 gPkmnJumpResultsGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_results.4bpp.lz");
+static const u32 gPkmnJumpResultsTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_results.bin.lz");
+
+static const struct BgTemplate gUnknown_082FE164[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 27,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 3,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate gUnknown_082FE174[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 0,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 8,
+ .tilemapTop = 0,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 0x1F,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+struct
+{
+ int id;
+ void (*func)(void);
+} static const gUnknown_082FE18C[] =
+{
+ {0x00, sub_802D150},
+ {0x01, sub_802D2E4},
+ {0x02, sub_802D350},
+ {0x03, sub_802D3BC},
+ {0x04, sub_802D448},
+ {0x05, sub_802D4F4},
+ {0x06, sub_802D598},
+ {0x07, sub_802D5E4},
+ {0x09, sub_802D72C},
+ {0x08, sub_802D688},
+};
+
+static void sub_802D0C8(int arg0)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082FE18C); i++)
+ {
+ if (gUnknown_082FE18C[i].id == arg0)
+ sub_802D108(gUnknown_082FE18C[i].func);
+ }
+}
+
+static bool32 sub_802D0F0(void)
+{
+ return (gUnknown_02022D00->unk0 != 1);
+}
+
+static void sub_802D108(void (*func)(void))
+{
+ SetWordTaskArg(gUnknown_02022D00->unk6, 0, (u32) func);
+ gUnknown_02022D00->unk4 = 0;
+ gUnknown_02022D00->unk0 = 0;
+}
+
+static void sub_802D12C(u8 taskId)
+{
+ if (!gUnknown_02022D00->unk0)
+ {
+ void (*func)(void) = (void *)(GetWordTaskArg(taskId, 0));
+
+ func();
+ }
+}
+
+static void sub_802D150(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_082FE164, ARRAY_COUNT(gUnknown_082FE164));
+ InitWindows(gUnknown_082FE174);
+ reset_temp_tile_data_buffers();
+ sub_802C974(gUnknown_02022D00);
+ sub_802DD08();
+ LoadPalette(gPkmnJumpBgPal, 0, 0x20);
+ decompress_and_copy_tile_data_to_vram(3, gPkmnJumpBgGfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(3, gPkmnJumpBgTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpVenusaurPal, 0x30, 0x20);
+ decompress_and_copy_tile_data_to_vram(2, gPkmnJumpVenusaurGfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gPkmnJumpVenusaurTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpResultsPal, 0x10, 0x20);
+ decompress_and_copy_tile_data_to_vram(1, gPkmnJumpResultsGfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(1, gPkmnJumpResultsTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpPal3, 0x20, 0x20);
+ SetBgTilemapBuffer(0, gUnknown_02022D00->tilemapBuffer);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
+ sub_802DB8C();
+ sub_802DD64(0);
+ sub_8098C6C(0, 1, 0xE0);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ ResetBgPositions();
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_802DBF8();
+ sub_802CE9C(gUnknown_02022D00);
+ sub_802CF50(gUnknown_02022D00, 6);
+ ShowBg(3);
+ ShowBg(0);
+ ShowBg(2);
+ HideBg(1);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D2E4(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ sub_802DE1C();
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_802DF70(FALSE);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_802DFD4();
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D350(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ sub_802DE1C();
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_802DF70(TRUE);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_802DFD4();
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D3BC(void)
+{
+ int i, numPlayers;
+
+ numPlayers = sub_802C8AC();
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ for (i = 0; i < numPlayers; i++)
+ ClearWindowTilemap(gUnknown_02022D00->unk1C[i]);
+
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ for (i = 0; i < numPlayers; i++)
+ RemoveWindow(gUnknown_02022D00->unk1C[i]);
+
+ gUnknown_02022D00->unk0 = 1;
+ }
+ break;
+ }
+}
+
+static void sub_802D448(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ gUnknown_02022D00->unk12 = sub_802DA9C(1, 8, 20, 2);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gText_WantToPlayAgain2, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022D00->unk12);
+ DrawTextBorderOuter(gUnknown_02022D00->unk12, 1, 14);
+ sub_802DB18(23, 7, 0);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D4F4(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ gUnknown_02022D00->unk12 = sub_802DA9C(2, 7, 26, 4);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gText_SavingDontTurnOffPower, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022D00->unk12);
+ DrawTextBorderOuter(gUnknown_02022D00->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D598(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ sub_802DA14();
+ sub_8198C78();
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!sub_802DA44() && !IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D5E4(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ gUnknown_02022D00->unk12 = sub_802DA9C(2, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gText_SomeoneDroppedOut2, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022D00->unk12);
+ DrawTextBorderOuter(gUnknown_02022D00->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D688(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ gUnknown_02022D00->unk12 = sub_802DA9C(7, 10, 16, 2);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gText_CommunicationStandby4, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022D00->unk12);
+ DrawTextBorderOuter(gUnknown_02022D00->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D72C(void)
+{
+ switch (gUnknown_02022D00->unk4)
+ {
+ case 0:
+ sub_802D044(gUnknown_02022D00);
+ gUnknown_02022D00->unk4++;
+ break;
+ case 1:
+ if (!sub_802D068())
+ gUnknown_02022D00->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_802D764(void)
+{
+ gUnknown_02022D00->unkA = 0;
+ gUnknown_02022D00->unkB = 0;
+ gUnknown_02022D00->unkC = 6;
+ sub_802DC9C(gUnknown_02022D00->unkC);
+}
+
+static bool32 sub_802D788(void)
+{
+ switch (gUnknown_02022D00->unkA)
+ {
+ case 0:
+ gUnknown_02022D00->unkB++;
+ if (gUnknown_02022D00->unkB > 10)
+ {
+ gUnknown_02022D00->unkB = 0;
+ gUnknown_02022D00->unkC++;
+ if (gUnknown_02022D00->unkC >= 10)
+ {
+ gUnknown_02022D00->unkC = 0;
+ gUnknown_02022D00->unkA++;
+ }
+ }
+ sub_802DC9C(gUnknown_02022D00->unkC);
+ if (gUnknown_02022D00->unkC != 7)
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_802D7E8(u16 itemId, u16 quantity)
+{
+ CopyItemNameHandlePlural(itemId, gUnknown_02022D00->txtBuff[0], quantity);
+ ConvertIntToDecimalStringN(gUnknown_02022D00->txtBuff[1], quantity, STR_CONV_MODE_LEFT_ALIGN, 1);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02022D00->txtBuff[0]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_02022D00->txtBuff[1]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_02022D00->strBuff, gText_AwesomeWonF701F700);
+ gUnknown_02022D00->unk12 = sub_802DA9C(4, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gUnknown_02022D00->strBuff, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk14 = MUS_FANFA1;
+ gUnknown_02022D00->unkD = 0;
+}
+
+static void sub_802D884(u16 itemId)
+{
+ CopyItemName(itemId, gUnknown_02022D00->txtBuff[0]);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02022D00->txtBuff[0]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_02022D00->strBuff, gText_FilledStorageSpace2);
+ gUnknown_02022D00->unk12 = sub_802DA9C(4, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gUnknown_02022D00->strBuff, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk14 = 0;
+ gUnknown_02022D00->unkD = 0;
+}
+
+static void sub_802D8FC(u16 itemId)
+{
+ CopyItemName(itemId, gUnknown_02022D00->txtBuff[0]);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02022D00->txtBuff[0]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_02022D00->strBuff, gText_CantHoldMore);
+ gUnknown_02022D00->unk12 = sub_802DA9C(4, 9, 22, 2);
+ AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gUnknown_02022D00->strBuff, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 2);
+ gUnknown_02022D00->unk14 = 0;
+ gUnknown_02022D00->unkD = 0;
+}
+
+static bool32 sub_802D974(void)
+{
+ switch (gUnknown_02022D00->unkD)
+ {
+ case 0:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_02022D00->unk12);
+ DrawTextBorderOuter(gUnknown_02022D00->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_02022D00->unkD++;
+ }
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ break;
+ if (gUnknown_02022D00->unk14 == 0)
+ {
+ gUnknown_02022D00->unkD += 2;
+ return FALSE;
+ }
+ PlayFanfare(gUnknown_02022D00->unk14);
+ gUnknown_02022D00->unkD++;
+ case 2:
+ if (!IsFanfareTaskInactive())
+ break;
+ gUnknown_02022D00->unkD++;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_802DA14(void)
+{
+ if (gUnknown_02022D00->unk12 != 0xFF)
+ {
+ rbox_fill_rectangle(gUnknown_02022D00->unk12);
+ CopyWindowToVram(gUnknown_02022D00->unk12, 1);
+ gUnknown_02022D00->unkD = 0;
+ }
+}
+
+// Can't match this without the ugly GOTO, oh well.
+static bool32 sub_802DA44(void)
+{
+ if (gUnknown_02022D00->unk12 == 0xFF)
+ {
+ RET_FALSE:
+ return FALSE;
+ }
+
+ if (gUnknown_02022D00->unkD == 0)
+ {
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(gUnknown_02022D00->unk12);
+ gUnknown_02022D00->unk12 = 0xFF;
+ gUnknown_02022D00->unkD++;
+ goto RET_FALSE;
+ }
+ }
+ else if (gUnknown_02022D00->unkD == 1)
+ goto RET_FALSE;
+
+ return TRUE;
+}
+
+static s8 sub_802DA8C(void)
+{
+ return Menu_ProcessInputNoWrapClearOnChoose();
+}
+
+static u32 sub_802DA9C(u32 left, u32 top, u32 width, u32 height)
+{
+ u32 windowId;
+ struct WindowTemplate window;
+
+ window.bg = 0;
+ window.tilemapLeft = left;
+ window.tilemapTop = top;
+ window.width = width;
+ window.height = height;
+ window.paletteNum = 0xF;
+ window.baseBlock = 0x43;
+
+ windowId = AddWindow(&window);
+ FillWindowPixelBuffer(windowId, 0x11);
+ return windowId;
+}
+
+static void sub_802DB18(u16 left, u16 top, u8 cursorPos)
+{
+ struct WindowTemplate window;
+ u8 a = cursorPos;
+
+ window.bg = 0;
+ window.tilemapLeft = left;
+ window.tilemapTop = top;
+ window.width = 6;
+ window.height = 4;
+ window.paletteNum = 2;
+ window.baseBlock = 0x2B;
+
+ CreateYesNoMenu(&window, 1, 0xD, a);
+}
+
+static void sub_802DB8C(void)
+{
+ u8 color[] = {0, 2, 3};
+
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(1, 0);
+ AddTextPrinterParameterized3(0, 0, 0, 1, color, 0, gText_SpacePoints2);
+ AddTextPrinterParameterized3(1, 0, 0, 1, color, 0, gText_SpaceTimes3);
+}
+
+static const u8 gUnknown_082FE1DF[] = {2, 2, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0};
+
+static const struct CompressedSpriteSheet gUnknown_082FE1EC = {gUnknown_082FF1F8, 0, 0x320};
+static const struct SpritePalette gUnknown_082FE1F4 = {gUnknown_082FF1D8, 0x320};
+
+static const u16 gUnknown_082FE1FC[] = {0x06, 0x08, 0x10, 0x08};
+static const u16 gUnknown_082FE204[] = {0x06, 0x08, 0x0b, 0x06, 0x10, 0x08};
+static const u16 gUnknown_082FE210[] = {0x02, 0x06, 0x06, 0x08, 0x10, 0x08, 0x14, 0x06};
+static const u16 gUnknown_082FE220[] = {0x02, 0x06, 0x06, 0x08, 0x0b, 0x06, 0x10, 0x08, 0x14, 0x06};
+
+static const u16 *const gUnknown_082FE234[] =
+{
+ gUnknown_082FE1FC,
+ gUnknown_082FE204,
+ gUnknown_082FE210,
+ gUnknown_082FE220,
+};
+
+static const s16 gUnknown_082FE244[] = {0x0058, 0x0098};
+static const s16 gUnknown_082FE248[] = {0x0058, 0x0078, 0x0098};
+static const s16 gUnknown_082FE24E[] = {0x0038, 0x0058, 0x0098, 0x00b8};
+static const s16 gUnknown_082FE256[] = {0x0038, 0x0058, 0x0078, 0x0098, 0x00b8};
+
+static const s16 *const gUnknown_082FE260[] =
+{
+ gUnknown_082FE244,
+ gUnknown_082FE248,
+ gUnknown_082FE24E,
+ gUnknown_082FE256,
+};
+
+static void sub_802DBF8(void)
+{
+ int i, y, playersCount = sub_802C8AC();
+ const s16 *xCoords = gUnknown_082FE260[playersCount - 2];
+
+ for (i = 0; i < playersCount; i++)
+ {
+ struct PokemonJump1_MonInfo *info = sub_802C8C8(i);
+
+ y = gMonFrontPicCoords[info->species].y_offset;
+ sub_802C9D4(gUnknown_02022D00, info, *xCoords, y + 112, i);
+ sub_802CE48(gUnknown_02022D00, *xCoords, 112, i);
+ xCoords++;
+ }
+}
+
+static void sub_802DC80(u32 id, s16 y)
+{
+ gUnknown_02022D00->unk81A8[id]->pos2.y = y;
+}
+
+static void sub_802DC9C(int id)
+{
+ sub_802CF50(gUnknown_02022D00, id);
+ ChangeBgY(2, (gUnknown_082FE1DF[id] * 5) << 0xD, 0);
+}
+
+static int sub_802DCCC(u8 flags)
+{
+ int i, count;
+
+ for (i = 0, count = 0; i < 5; i++)
+ {
+ if (flags & 1)
+ {
+ sub_802CB14(gUnknown_02022D00, i);
+ count++;
+ }
+ flags >>= 1;
+ }
+
+ sub_802E00C(count - 2);
+ return count;
+}
+
+static void sub_802DD08(void)
+{
+ struct UnkStruct3 unkStruct;
+ struct UnkStruct3 *ptr = &unkStruct; // This temp variable is needed to match, don't ask me why.
+
+ ptr->shape = 0;
+ ptr->size = 0;
+ ptr->field_0_0 = 0;
+ ptr->priority = 1;
+ ptr->field_1 = 5;
+ ptr->xDelta = 8;
+ ptr->x = 108;
+ ptr->y = 6;
+ ptr->spriteSheet = (void*) &gUnknown_082FE1EC;
+ ptr->spritePal = &gUnknown_082FE1F4;
+
+ sub_8034C54(2);
+ sub_8034D14(0, 0, ptr);
+
+ unkStruct.field_1 = 4;
+ unkStruct.x = 30;
+ unkStruct.y = 6;
+ sub_8034D14(1, 0, &unkStruct);
+}
+
+static void sub_802DD64(int arg0)
+{
+ sub_8035044(0, arg0);
+}
+
+static void sub_802DD74(u16 arg0)
+{
+ sub_8035044(1, arg0);
+}
+
+static void sub_802DD88(u8 multiplayerId)
+{
+ sub_802CBF0(gUnknown_02022D00, multiplayerId);
+}
+
+static void sub_802DDA0(u8 multiplayerId)
+{
+ sub_802CC88(gUnknown_02022D00, multiplayerId);
+}
+
+static int sub_802DDB8(int multiplayerId)
+{
+ return sub_802CC18(gUnknown_02022D00, multiplayerId);
+}
+
+static void sub_802DDCC(void)
+{
+ sub_802CCB0(gUnknown_02022D00);
+}
+
+static void sub_802DDE0(void)
+{
+ sub_802CD3C(gUnknown_02022D00);
+}
+
+static void sub_802DDF4(int multiplayerId)
+{
+ sub_802CD70(gUnknown_02022D00, multiplayerId);
+}
+
+static int sub_802DE08(void)
+{
+ return sub_802CD98(gUnknown_02022D00);
+}
+
+static void sub_802DE1C(void)
+{
+ struct WindowTemplate window;
+ int i, playersCount = sub_802C8AC();
+ const u16 *winCoords = gUnknown_082FE234[playersCount - 2];
+
+ window.bg = 0;
+ window.width = 8;
+ window.height = 2;
+ window.paletteNum = 2;
+ window.baseBlock = 0x2B;
+
+ for (i = 0; i < playersCount; i++)
+ {
+ window.tilemapLeft = winCoords[0];
+ window.tilemapTop = winCoords[1];
+ gUnknown_02022D00->unk1C[i] = AddWindow(&window);
+ ClearWindowTilemap(gUnknown_02022D00->unk1C[i]);
+ window.baseBlock += 0x10;
+ winCoords += 2;
+ }
+
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_802DED8(int multiplayerId, u8 clr1, u8 clr2, u8 clr3)
+{
+ u32 x;
+ u8 colors[3] = {clr1, clr2, clr3};
+
+ FillWindowPixelBuffer(gUnknown_02022D00->unk1C[multiplayerId], 0);
+ x = 64 - GetStringWidth(1, sub_802C8E8(multiplayerId), -1);
+ x /= 2;
+ AddTextPrinterParameterized3(gUnknown_02022D00->unk1C[multiplayerId], 1, x, 1, colors, -1, sub_802C8E8(multiplayerId));
+ CopyWindowToVram(gUnknown_02022D00->unk1C[multiplayerId], 2);
+}
+
+static void sub_802DF70(bool32 arg0)
+{
+ int i, var, playersCount = sub_802C8AC();
+
+ if (!arg0)
+ {
+ for (i = 0; i < playersCount; i++)
+ sub_802DED8(i, 0, 2, 3);
+ }
+ else
+ {
+ var = sub_802C8BC();
+ for (i = 0; i < playersCount; i++)
+ {
+ if (var != i)
+ sub_802DED8(i, 0, 2, 3);
+ else
+ sub_802DED8(i, 0, 4, 5);
+ }
+ }
+}
+
+static void sub_802DFD4(void)
+{
+ int i, playersCount = sub_802C8AC();
+
+ for (i = 0; i < playersCount; i++)
+ PutWindowTilemap(gUnknown_02022D00->unk1C[i]);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_802E00C(u8 arg0)
+{
+ gUnknown_02022D00->unk18 = 0;
+ ChangeBgX(1, (arg0 / 2) << 16, 0);
+ ChangeBgY(1, (((arg0 % 2) << 8) - 40) << 8, 0);
+ ShowBg(1);
+ CreateTask(sub_802E090, 4);
+}
+
+static bool32 sub_802E058(void)
+{
+ if (gUnknown_02022D00->unk18 >= 32)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(1, 128, 1);
+ if (++gUnknown_02022D00->unk18 >= 32)
+ HideBg(1);
+ return TRUE;
+ }
+}
+
+static void sub_802E090(u8 taskId)
+{
+ if (!sub_802E058())
+ DestroyTask(taskId);
+}
+
+struct MonInfoPacket
+{
+ u8 id; // packet id
+ u16 species;
+ u32 personality;
+ u32 otId;
+};
+
+static void sub_802E0AC(struct PokemonJump1_MonInfo *arg0)
+{
+ struct MonInfoPacket packet;
+ packet.id = 1,
+ packet.species = arg0->species,
+ packet.otId = arg0->otId,
+ packet.personality = arg0->personality,
+ sub_800FE50(&packet);
+}
+
+static bool32 sub_802E0D0(int multiplayerId, struct PokemonJump1_MonInfo *arg0)
+{
+ struct MonInfoPacket packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id == 1)
+ {
+ arg0->species = packet.species;
+ arg0->otId = packet.otId;
+ arg0->personality = packet.personality;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+struct UnkPacket2
+{
+ u8 id; // packet id
+ u32 unk4;
+ u32 unk8;
+};
+
+static void sub_802E120(u32 arg0)
+{
+ struct UnkPacket2 packet;
+ packet.id = 2;
+ packet.unk4 = arg0;
+ sub_800FE50(&packet);
+}
+
+struct UnkPacket3
+{
+ u8 id; // packet id
+ u8 unk1;
+ u8 unk2;
+ u8 unk3_0:5;
+ u8 unk3_1:3;
+ u16 unk4;
+ u16 unk6;
+ u32 unk8_0:15;
+ u32 unk8_1:17;
+};
+
+static void sub_802E138(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
+{
+ struct UnkPacket3 packet;
+ packet.id = 3;
+ packet.unk8_1 = arg1->unk8;
+ packet.unk3_0 = arg1->unk1;
+ packet.unk1 = arg1->unk0;
+ packet.unk6 = arg1->unk2;
+ packet.unk8_0 = arg1->unk4;
+ packet.unk2 = arg0->unk10;
+ packet.unk3_1 = arg0->unk14;
+ packet.unk4 = arg0->unkE;
+ sub_800FE50(&packet);
+}
+
+static bool32 sub_802E1BC(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
+{
+ struct UnkPacket3 packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[0][1], sizeof(packet));
+ if (packet.id != 3)
+ return FALSE;
+
+ arg1->unk8 = packet.unk8_1;
+ arg1->unk1 = packet.unk3_0;
+ arg1->unk0 = packet.unk1;
+ arg1->unk2 = packet.unk6;
+ arg1->unk4 = packet.unk8_0;
+ arg0->unk10 = packet.unk2;
+ arg0->unk14 = packet.unk3_1;
+ arg0->unkE = packet.unk4;
+ return TRUE;
+}
+
+struct UnkPacket4
+{
+ u8 id; // packet id
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u16 unk4;
+ u8 unk6;
+ u16 unk8;
+};
+
+static void sub_802E234(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2)
+{
+ struct UnkPacket4 packet;
+ packet.id = 4;
+ packet.unk1 = arg0->unk10;
+ packet.unk2 = arg0->unk14;
+ packet.unk3 = arg0->unk18;
+ packet.unk4 = arg0->unkE;
+ packet.unk6 = arg1;
+ packet.unk8 = arg2;
+ sub_800FE50(&packet);
+}
+
+static bool32 sub_802E264(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3)
+{
+ struct UnkPacket4 packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id != 4)
+ return FALSE;
+
+ arg0->unk10 = packet.unk1;
+ arg0->unk14 = packet.unk2;
+ arg0->unk18 = packet.unk3;
+ arg0->unkE = packet.unk4;
+ *arg2 = packet.unk6;
+ *arg3 = packet.unk8;
+ return TRUE;
+}
+
+static bool32 sub_802E2D0(struct PokemonJump1_82E4 *arg0, int multiplayerId)
+{
+ struct UnkPacket4 packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id != 4)
+ return FALSE;
+
+ arg0->unk10 = packet.unk1;
+ arg0->unk14 = packet.unk2;
+ arg0->unk18 = packet.unk3;
+ arg0->unkE = packet.unk4;
+ return TRUE;
+}
+
+static struct PokemonJumpResults *sub_802E32C(void)
+{
+ return &gSaveBlock2Ptr->pokeJump;
+}
+
+void ResetPokeJumpResults(void)
+{
+ struct PokemonJumpResults *pokeJump = sub_802E32C();
+ pokeJump->jumpsInRow = 0;
+ pokeJump->bestJumpScore = 0;
+ pokeJump->excellentsInRow = 0;
+ pokeJump->field6 = 0;
+ pokeJump->field8 = 0;
+ pokeJump->field2 = 0;
+}
+
+static bool32 sub_802E354(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow)
+{
+ struct PokemonJumpResults *pokeJump = sub_802E32C();
+ bool32 ret = FALSE;
+
+ if (pokeJump->bestJumpScore < jumpScore && jumpScore <= 99990)
+ pokeJump->bestJumpScore = jumpScore, ret = TRUE;
+ if (pokeJump->jumpsInRow < jumpsInRow && jumpsInRow <= 9999)
+ pokeJump->jumpsInRow = jumpsInRow, ret = TRUE;
+ if (pokeJump->excellentsInRow < excellentsInRow && excellentsInRow <= 9999)
+ pokeJump->excellentsInRow = excellentsInRow, ret = TRUE;
+
+ return ret;
+}
+
+static void sub_802E3A8(void)
+{
+ struct PokemonJumpResults *pokeJump = sub_802E32C();
+ if (pokeJump->field6 < 9999)
+ pokeJump->field6++;
+}
+
+void sub_802E3C4(void)
+{
+ u8 taskId = CreateTask(sub_802E3E4, 0);
+ sub_802E3E4(taskId);
+}
+
+static const struct WindowTemplate gUnknown_082FE270 =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 9,
+ .paletteNum = 15,
+ .baseBlock = 0x1,
+};
+
+static const u8 *const gUnknown_082FE278[] = {gText_JumpsInARow, gText_BestScore2, gText_ExcellentsInARow};
+
+static void sub_802E3E4(u8 taskId)
+{
+ struct WindowTemplate window;
+ int i, width, widthCurr;
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ window = gUnknown_082FE270;
+ width = GetStringWidth(1, gText_PkmnJumpRecords, 0);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082FE278); i++)
+ {
+ widthCurr = GetStringWidth(1, gUnknown_082FE278[i], 0) + 38;
+ if (widthCurr > width)
+ width = widthCurr;
+ }
+ width = (width + 7) / 8;
+ if (width & 1)
+ width++;
+ window.tilemapLeft = (30 - width) / 2;
+ window.width = width;
+ data[1] = AddWindow(&window);
+ sub_802E500(data[1], width);
+ CopyWindowToVram(data[1], 3);
+ data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ data[0]++;
+ break;
+ case 2:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ rbox_fill_rectangle(data[1]);
+ CopyWindowToVram(data[1], 1);
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(data[1]);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ break;
+ }
+}
+
+static void sub_802E500(u16 windowId, int width)
+{
+ int i, x;
+ int results[3];
+ struct PokemonJumpResults *pokeJump = sub_802E32C();
+ results[0] = pokeJump->jumpsInRow;
+ results[1] = pokeJump->bestJumpScore;
+ results[2] = pokeJump->excellentsInRow;
+
+ LoadUserWindowBorderGfx_(windowId, 0x21D, 0xD0);
+ DrawTextBorderOuter(windowId, 0x21D, 0xD);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized(windowId, 1, gText_PkmnJumpRecords, GetStringCenterAlignXOffset(1, gText_PkmnJumpRecords, width * 8), 1, TEXT_SPEED_FF, NULL);
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082FE278); i++)
+ {
+ AddTextPrinterParameterized(windowId, 1, gUnknown_082FE278[i], 0, 25 + (i * 16), TEXT_SPEED_FF, NULL);
+ ConvertIntToDecimalStringN(gStringVar1, results[i], STR_CONV_MODE_LEFT_ALIGN, 5);
+ TruncateToFirstWordOnly(gStringVar1);
+ x = (width * 8) - GetStringWidth(1, gStringVar1, 0);
+ AddTextPrinterParameterized(windowId, 1, gStringVar1, x, 25 + (i * 16), TEXT_SPEED_FF, NULL);
+ }
+ PutWindowTilemap(windowId);
+}
+
+static void TruncateToFirstWordOnly(u8 *str)
+{
+ for (;*str != EOS; str++)
+ {
+ if (*str == CHAR_SPACE)
+ {
+ *str = EOS;
+ break;
+ }
+ }
+}
+
+static const u16 gPkmnJump321StartPal1[] = INCBIN_U16("graphics/link_games/pkmnjump_321start1.gbapal");
+static const u32 gPkmnJump321StartGfx1[] = INCBIN_U32("graphics/link_games/pkmnjump_321start1.4bpp.lz");
+
+static const struct CompressedSpriteSheet gUnknown_082FE6C8[] =
+{
+ {gPkmnJump321StartGfx1, 0xC00, 0x2000},
+ {},
+};
+
+static const struct SpritePalette gUnknown_082FE6D8[] =
+{
+ {gPkmnJump321StartPal1, 0x2000},
+ {},
+};
+
+static const union AnimCmd sSpriteAnim_82FE6E8[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FE6F0[] =
+{
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FE6F8[] =
+{
+ ANIMCMD_FRAME(32, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FE700[] =
+{
+ ANIMCMD_FRAME(64, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FE708[] =
+{
+ ANIMCMD_FRAME(48, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FE710[] =
+{
+ ANIMCMD_FRAME(80, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FE718[] =
+{
+ sSpriteAnim_82FE6E8,
+ sSpriteAnim_82FE6F0,
+ sSpriteAnim_82FE6F8,
+ sSpriteAnim_82FE700,
+ sSpriteAnim_82FE708,
+ sSpriteAnim_82FE710
+};
+
+static const struct SpriteTemplate gUnknown_082FE730[] =
+{
+ {
+ .tileTag = 0x2000,
+ .paletteTag = 0x2000,
+ .oam = &gUnknown_08524914,
+ .anims = sSpriteAnimTable_82FE718,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+static const TaskFunc gUnknown_082FE748[][4] =
+{
+ {
+ sub_802E83C,
+ sub_802E8C8,
+ sub_802EA50,
+ sub_802EAB0
+ },
+};
+
+// There's only set of task functions.
+static u32 sub_802E63C(u8 funcSetId, u8 taskPriority)
+{
+ u8 taskId = CreateTask(sub_802E6D0, taskPriority);
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = 1;
+ task->data[1] = funcSetId;
+ gUnknown_082FE748[funcSetId][0](taskId);
+ return taskId;
+}
+
+static bool32 sub_802E688(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_802E6D0);
+ if (taskId == 0xFF)
+ return FALSE;
+
+ gTasks[taskId].data[0] = 2;
+ return TRUE;
+}
+
+static bool32 sub_802E6BC(void)
+{
+ return FuncIsActiveTask(sub_802E6D0);
+}
+
+static void sub_802E6D0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 2:
+ gUnknown_082FE748[data[1]][2](taskId);
+ data[0] = 3;
+ break;
+ case 3:
+ gUnknown_082FE748[data[1]][3](taskId);
+ break;
+ case 4:
+ gUnknown_082FE748[data[1]][1](taskId);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_802E75C(u8 taskId, s16 *data)
+{
+ u8 i;
+ struct Sprite *sprite;
+
+ LoadCompressedSpriteSheet(&gUnknown_082FE6C8[data[3]]);
+ LoadSpritePalette(&gUnknown_082FE6D8[data[4]]);
+ for (i = 0; i < data[8]; i++)
+ data[13 + i] = CreateSprite(&gUnknown_082FE730[data[2]], data[9], data[10], data[7]);
+ for (i = 0; i < data[8]; i++)
+ {
+ sprite = &gSprites[data[13 + i]];
+ sprite->oam.priority = data[6];
+ sprite->invisible = TRUE;
+ sprite->data[1] = data[5];
+ sprite->data[3] = taskId;
+ sprite->data[4] = i;
+ sprite->data[5] = data[13];
+ }
+}
+
+static void sub_802E83C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[2] = 0;
+ data[3] = 0;
+ data[4] = 0;
+ data[5] = 60;
+ data[6] = 0;
+ data[7] = 0;
+ data[8] = 3;
+ data[9] = 120;
+ data[10] = 88;
+ sub_802E75C(taskId, data);
+
+ StartSpriteAnim(&gSprites[data[14]], 4);
+ gSprites[data[14]].pos2.x = -32;
+
+ StartSpriteAnim(&gSprites[data[15]], 5);
+ gSprites[data[15]].pos2.x = 32;
+}
+
+static void sub_802E8C8(u8 taskId)
+{
+ u8 i = 0;
+ s16 *data = gTasks[taskId].data;
+
+ for (i = 0; i < data[8]; i++)
+ DestroySprite(&gSprites[data[13 + i]]);
+ FreeSpriteTilesByTag(gUnknown_082FE6C8[data[3]].tag);
+ FreeSpritePaletteByTag(gUnknown_082FE6D8[data[4]].tag);
+}
+
+static void sub_802E938(struct Sprite *sprite)
+{
+ s16 *data = gTasks[sprite->data[3]].data;
+
+ if (data[11] % data[5] != 0)
+ return;
+ if (data[11] == data[10])
+ return;
+
+ data[10] = data[11];
+ switch (sprite->data[2])
+ {
+ case 0:
+ sprite->invisible = FALSE;
+ case 1:
+ case 2:
+ PlaySE(SE_KON);
+ StartSpriteAnim(sprite, sprite->data[2]);
+ break;
+ case 3:
+ PlaySE(SE_PIN);
+ StartSpriteAnim(sprite, sprite->data[2]);
+ gSprites[data[14]].invisible = FALSE;
+ gSprites[data[15]].invisible = FALSE;
+ break;
+ case 4:
+ sprite->invisible = TRUE;
+ gSprites[data[14]].invisible = TRUE;
+ gSprites[data[15]].invisible = TRUE;
+ data[0] = 4;
+ return;
+ }
+ sprite->data[2]++;
+}
+
+static void sub_802EA50(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ PlaySE(SE_KON);
+ gSprites[data[13]].callback = sub_802E938;
+ gSprites[data[13]].invisible = FALSE;
+ gTasks[taskId].data[0] = 3;
+}
+
+static void sub_802EAB0(u8 taskId)
+{
+ u16 packet[6];
+ s16 *data = gTasks[taskId].data;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ if (gRecvCmds[0][1] == 0x7FFF)
+ data[11] = gRecvCmds[0][2];
+ if (GetMultiplayerId() == 0)
+ {
+ data[12]++;
+ memset(packet, 0, sizeof(packet));
+ packet[0] = 0x7FFF;
+ packet[1] = data[12];
+ sub_800FE50(packet);
+ }
+ }
+ else
+ {
+ data[11]++;
+ }
+}
+
+void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority)
+{
+ u8 taskId = CreateTask(sub_802EB98, 0x50);
+ gTasks[taskId].data[2] = tileTag;
+ gTasks[taskId].data[3] = palTag;
+ gTasks[taskId].data[4] = x;
+ gTasks[taskId].data[5] = y;
+ gTasks[taskId].data[6] = subpriority;
+}
+
+bool32 sub_802EB84(void)
+{
+ return FuncIsActiveTask(sub_802EB98);
+}
+
+static void sub_802EB98(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_802EF50(data[2], data[3]);
+ data[7] = sub_802EFA8(data[2], data[3], data[4], data[5], data[6]);
+ sub_802EFFC(data[2], data[3], data[4], data[5], data[6], &data[8], &data[9]);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_802EC98(data[7]))
+ {
+ sub_802EDCC(data[7], data[8], data[9]);
+ FreeSpriteOamMatrix(&gSprites[data[7]]);
+ DestroySprite(&gSprites[data[7]]);
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!sub_802EE30(data[8]))
+ {
+ DestroySprite(&gSprites[data[8]]);
+ DestroySprite(&gSprites[data[9]]);
+ FreeSpriteTilesByTag(data[2]);
+ FreeSpritePaletteByTag(data[3]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static bool32 sub_802EC98(u8 spriteId)
+{
+ struct Sprite *sprite = &gSprites[spriteId];
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sub_8007E18(sprite, 0x800, 0x1A);
+ sprite->data[0]++;
+ case 1:
+ if (sprite->data[2] == 0)
+ PlaySE(SE_KON2);
+ if (++sprite->data[2] >= 20)
+ {
+ sprite->data[2] = 0;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ break;
+ case 3:
+ if (++sprite->data[2] >= 4)
+ {
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ break;
+ case 4:
+ sprite->pos1.y -= 4;
+ if (++sprite->data[2] >= 8)
+ {
+ if (sprite->data[4] <= 1)
+ {
+ StartSpriteAnim(sprite, sprite->data[4] + 1);
+ sprite->data[2] = 0;
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[0] = 7;
+ return FALSE;
+ }
+ }
+ break;
+ case 5:
+ sprite->pos1.y += 4;
+ if (++sprite->data[2] >= 8)
+ {
+ sprite->data[2] = 0;
+ StartSpriteAffineAnim(sprite, 3);
+ sprite->data[0]++;
+ }
+ break;
+ case 6:
+ if (sprite->affineAnimEnded)
+ {
+ sprite->data[4]++;
+ sprite->data[0] = 1;
+ }
+ break;
+ case 7:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+// First argument is unused.
+static void sub_802EDCC(u8 spriteId1, u8 spriteId2, u8 spriteId3)
+{
+ gSprites[spriteId2].pos2.y = -40;
+ gSprites[spriteId3].pos2.y = -40;
+ gSprites[spriteId2].invisible = FALSE;
+ gSprites[spriteId3].invisible = FALSE;
+ gSprites[spriteId2].callback = sub_802EE5C;
+ gSprites[spriteId3].callback = sub_802EE5C;
+}
+
+static bool32 sub_802EE30(u8 spriteId)
+{
+ return (gSprites[spriteId].callback == sub_802EE5C);
+}
+
+static void sub_802EE5C(struct Sprite *sprite)
+{
+ int y;
+ s16 *data = sprite->data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[4] = 64;
+ data[5] = sprite->pos2.y << 4;
+ data[0]++;
+ case 1:
+ data[5] += data[4];
+ data[4]++;
+ sprite->pos2.y = data[5] >> 4;
+ if (sprite->pos2.y >= 0)
+ {
+ PlaySE(SE_KON2);
+ sprite->pos2.y = 0;
+ data[0]++;
+ }
+ break;
+ case 2:
+ data[1] += 12;
+ if (data[1] >= 128)
+ {
+ PlaySE(SE_KON2);
+ data[1] = 0;
+ data[0]++;
+ }
+ y = gSineTable[data[1]];
+ sprite->pos2.y = -(y >> 4);
+ break;
+ case 3:
+ data[1] += 16;
+ if (data[1] >= 128)
+ {
+ PlaySE(SE_KON2);
+ data[1] = 0;
+ data[0]++;
+ }
+ sprite->pos2.y = -(gSineTable[data[1]] >> 5);
+ break;
+ case 4:
+ if (++data[1] > 40)
+ sprite->callback = SpriteCallbackDummy;
+ break;
+ }
+}
+
+static const u16 gPkmnJump321StartPal2[] = INCBIN_U16("graphics/link_games/pkmnjump_321start2.gbapal");
+static const u32 gPkmnJump321StartGfx2[] = INCBIN_U32("graphics/link_games/pkmnjump_321start2.4bpp.lz");
+
+static void sub_802EF50(u16 tileTag, u16 palTag)
+{
+ struct CompressedSpriteSheet sprSheet = {gPkmnJump321StartGfx2, 0xE00, 0};
+ struct SpritePalette sprPal = {gPkmnJump321StartPal2, 0};
+
+ sprSheet.tag = tileTag;
+ sprPal.tag = palTag;
+
+ LoadCompressedSpriteSheet(&sprSheet);
+ LoadSpritePalette(&sprPal);
+}
+
+static const struct OamData sOamData_82FEBDC =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_82FEBE4 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FEBEC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FEBF4[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FEBFC[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FEC04[] =
+{
+ sSpriteAnim_82FEBEC,
+ sSpriteAnim_82FEBF4,
+ sSpriteAnim_82FEBFC
+};
+
+static const union AnimCmd sSpriteAnim_82FEC10[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FEC18[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FEC20[] =
+{
+ sSpriteAnim_82FEC10,
+ sSpriteAnim_82FEC18
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_82FEC28[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_82FEC38[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(16, -16, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_82FEC50[] =
+{
+ AFFINEANIMCMD_FRAME(-18, 18, 0, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_82FEC60[] =
+{
+ AFFINEANIMCMD_FRAME(6, -6, 0, 8),
+ AFFINEANIMCMD_FRAME(-4, 4, 0, 8),
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_82FEC80[] =
+{
+ sSpriteAffineAnim_82FEC28,
+ sSpriteAffineAnim_82FEC38,
+ sSpriteAffineAnim_82FEC50,
+ sSpriteAffineAnim_82FEC60
+};
+
+static u8 sub_802EFA8(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority)
+{
+ u8 spriteId;
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_82FEBDC,
+ .anims = sSpriteAnimTable_82FEC04,
+ .images = NULL,
+ .affineAnims = sSpriteAffineAnimTable_82FEC80,
+ .callback = SpriteCallbackDummy,
+ };
+
+ sprTemplate.tileTag = tileTag;
+ sprTemplate.paletteTag = palTag;
+ spriteId = CreateSprite(&sprTemplate, x, y, subpriority);
+ return spriteId;
+}
+
+static void sub_802EFFC(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 *spriteId1, s16 *spriteId2)
+{
+ struct SpriteTemplate sprTemplate =
+ {
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_82FEBE4,
+ .anims = sSpriteAnimTable_82FEC20,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ sprTemplate.tileTag = tileTag;
+ sprTemplate.paletteTag = palTag;
+ *spriteId1 = CreateSprite(&sprTemplate, x - 32, y, subpriority);
+ *spriteId2 = CreateSprite(&sprTemplate, x + 32, y, subpriority);
+
+ gSprites[*spriteId1].invisible = TRUE;
+ gSprites[*spriteId2].invisible = TRUE;
+ StartSpriteAnim(&gSprites[*spriteId2], 1);
+}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 148be7c5c..59ec8f4f1 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -443,7 +443,7 @@ enum
#define TAG_TILE_1 0x1
// IWRAM bss
-IWRAM_DATA static u32 gUnknown_03000F78[98];
+static u32 gUnknown_03000F78[98];
// EWRAM DATA
EWRAM_DATA static u8 sPreviousBoxOption = 0;
@@ -464,6 +464,9 @@ EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
EWRAM_DATA static bool8 sCanOnlyMove = 0;
// This file's functions.
+#if !defined(NONMATCHING) && MODERN
+#define static
+#endif
static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
static void Cb2_EnterPSS(u8 boxOption);
static u8 GetCurrentBoxOption(void);
@@ -6824,7 +6827,7 @@ static void SetCursorMonData(void *pokemon, u8 mode)
sPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon);
sPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
sPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
- sPSSData->cursorMonPalette = GetFrontSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality);
+ sPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality);
gender = GetGenderFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
sPSSData->cursorMonItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
}
@@ -6936,10 +6939,24 @@ static u8 InBoxInput_Normal(void)
sPSSData->field_CD2 = 0;
sPSSData->field_CD3 = 0;
sPSSData->field_CD7 = 0;
- retVal = 0;
- if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+
+ do
{
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ retVal = TRUE;
+ if (sBoxCursorPosition >= IN_BOX_ROWS)
+ {
+ cursorPosition -= IN_BOX_ROWS;
+ }
+ else
+ {
+ cursorArea = CURSOR_AREA_BOX;
+ cursorPosition = 0;
+ }
+ break;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
retVal = TRUE;
cursorPosition += IN_BOX_ROWS;
@@ -6951,6 +6968,7 @@ static u8 InBoxInput_Normal(void)
sPSSData->field_CD2 = 1;
sPSSData->field_CD7 = 1;
}
+ break;
}
else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
@@ -6964,6 +6982,7 @@ static u8 InBoxInput_Normal(void)
sPSSData->field_CD3 = -1;
cursorPosition += (IN_BOX_ROWS - 1);
}
+ break;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
@@ -6977,81 +6996,70 @@ static u8 InBoxInput_Normal(void)
sPSSData->field_CD3 = 1;
cursorPosition -= (IN_BOX_ROWS - 1);
}
+ break;
}
else if (gMain.newKeys & START_BUTTON)
{
retVal = TRUE;
cursorArea = CURSOR_AREA_BOX;
cursorPosition = 0;
+ break;
}
- else
+
+ if ((gMain.newKeys & A_BUTTON) && sub_80CFA5C())
{
- if ((gMain.newKeys & A_BUTTON) && sub_80CFA5C())
- {
- if (!sCanOnlyMove)
- return 8;
+ if (!sCanOnlyMove)
+ return 8;
- if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE)
- {
- switch (sub_80CFF98(0))
- {
- case 1:
- return 11;
- case 2:
- return 12;
- case 3:
- return 13;
- case 4:
- return 14;
- case 5:
- return 15;
- case 12:
- return 16;
- case 13:
- return 17;
- case 15:
- return 18;
- }
- }
- else
+ if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE)
+ {
+ switch (sub_80CFF98(0))
{
- sPSSData->inBoxMovingMode = 1;
- return 20;
+ case 1:
+ return 11;
+ case 2:
+ return 12;
+ case 3:
+ return 13;
+ case 4:
+ return 14;
+ case 5:
+ return 15;
+ case 12:
+ return 16;
+ case 13:
+ return 17;
+ case 15:
+ return 18;
}
}
-
- if (gMain.newKeys & B_BUTTON)
- return 19;
-
- if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
- {
- if (gMain.heldKeys & L_BUTTON)
- return 10;
- if (gMain.heldKeys & R_BUTTON)
- return 9;
- }
-
- if (gMain.newKeys & SELECT_BUTTON)
+ else
{
- sub_80CFDC4();
- return 0;
+ sPSSData->inBoxMovingMode = 1;
+ return 20;
}
- retVal = FALSE;
}
- }
- else
- {
- retVal = TRUE;
- if (sBoxCursorPosition >= IN_BOX_ROWS)
+
+ if (gMain.newKeys & B_BUTTON)
+ return 19;
+
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- cursorPosition -= IN_BOX_ROWS;
+ if (gMain.heldKeys & L_BUTTON)
+ return 10;
+ if (gMain.heldKeys & R_BUTTON)
+ return 9;
}
- else
+
+ if (gMain.newKeys & SELECT_BUTTON)
{
- cursorArea = CURSOR_AREA_BOX;
- cursorPosition = 0;
+ sub_80CFDC4();
+ return 0;
}
- }
+
+ retVal = 0;
+
+ } while (0);
if (retVal)
sub_80CD894(cursorArea, cursorPosition);
@@ -7533,20 +7541,30 @@ static u8 HandleInput_InParty(void)
gotoBox = FALSE;
retVal = 0;
- if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+ do
{
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (--cursorPosition < 0)
+ cursorPosition = PARTY_SIZE;
+ if (cursorPosition != sBoxCursorPosition)
+ retVal = 1;
+ break;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
if (++cursorPosition > PARTY_SIZE)
cursorPosition = 0;
if (cursorPosition != sBoxCursorPosition)
retVal = 1;
+ break;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_LEFT) && sBoxCursorPosition != 0)
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT && sBoxCursorPosition != 0)
{
retVal = 1;
sPSSData->field_CD6 = sBoxCursorPosition;
cursorPosition = 0;
+ break;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
@@ -7561,73 +7579,67 @@ static u8 HandleInput_InParty(void)
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
+ break;
}
- else
+
+ if (gMain.newKeys & A_BUTTON)
{
- if (gMain.newKeys & A_BUTTON)
+ if (sBoxCursorPosition == PARTY_SIZE)
{
- if (sBoxCursorPosition == PARTY_SIZE)
- {
- if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
- return 4;
+ if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
+ return 4;
- gotoBox = TRUE;
- }
- else if (sub_80CFA5C())
+ gotoBox = TRUE;
+ }
+ else if (sub_80CFA5C())
+ {
+ if (!sCanOnlyMove)
+ return 8;
+
+ switch (sub_80CFF98(0))
{
- if (!sCanOnlyMove)
- return 8;
-
- switch (sub_80CFF98(0))
- {
- case 1:
- return 11;
- case 2:
- return 12;
- case 3:
- return 13;
- case 4:
- return 14;
- case 5:
- return 15;
- case 12:
- return 16;
- case 13:
- return 17;
- case 15:
- return 18;
- }
+ case 1:
+ return 11;
+ case 2:
+ return 12;
+ case 3:
+ return 13;
+ case 4:
+ return 14;
+ case 5:
+ return 15;
+ case 12:
+ return 16;
+ case 13:
+ return 17;
+ case 15:
+ return 18;
}
}
+ }
- if (gMain.newKeys & B_BUTTON)
- {
- if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
- return 19;
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
+ return 19;
- gotoBox = TRUE;
- }
+ gotoBox = TRUE;
+ }
- if (gotoBox)
- {
- retVal = 6;
- cursorArea = CURSOR_AREA_IN_BOX;
- cursorPosition = 0;
- }
- else if (gMain.newKeys & SELECT_BUTTON)
- {
- sub_80CFDC4();
- return 0;
- }
+ if (gotoBox)
+ {
+ retVal = 6;
+ cursorArea = CURSOR_AREA_IN_BOX;
+ cursorPosition = 0;
}
- }
- else
- {
- if (--cursorPosition < 0)
- cursorPosition = PARTY_SIZE;
- if (cursorPosition != sBoxCursorPosition)
- retVal = 1;
- }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_80CFDC4();
+ return 0;
+ }
+
+ } while (0);
+
if (retVal != 0)
{
if (retVal != 6)
@@ -7911,63 +7923,63 @@ _080CF7D8:\n\
static u8 HandleInput_OnBox(void)
{
u8 retVal;
- s8 cursorArea = sBoxCursorArea;
- s8 cursorPosition = sBoxCursorPosition;
+ s8 cursorArea;
+ s8 cursorPosition;
sPSSData->field_CD3 = 0;
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
- retVal = 0;
- if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+ do
{
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ retVal = 1;
+ cursorArea = CURSOR_AREA_BUTTONS;
+ cursorPosition = 0;
+ sPSSData->field_CD7 = 1;
+ break;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
retVal = 1;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 2;
+ break;
}
- else
+
+ if (gMain.heldKeys & DPAD_LEFT)
+ return 10;
+ if (gMain.heldKeys & DPAD_RIGHT)
+ return 9;
+
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.heldKeys & DPAD_LEFT)
+ if (gMain.heldKeys & L_BUTTON)
return 10;
- if (gMain.heldKeys & DPAD_RIGHT)
+ if (gMain.heldKeys & R_BUTTON)
return 9;
+ }
- if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
- {
- if (gMain.heldKeys & L_BUTTON)
- return 10;
- if (gMain.heldKeys & R_BUTTON)
- return 9;
- }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_80CD1A8(FALSE);
+ AddBoxMenu();
+ return 7;
+ }
- if (gMain.newKeys & A_BUTTON)
- {
- sub_80CD1A8(FALSE);
- AddBoxMenu();
- return 7;
- }
+ if (gMain.newKeys & B_BUTTON)
+ return 19;
- if (gMain.newKeys & B_BUTTON)
- return 19;
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_80CFDC4();
+ return 0;
+ }
- if (gMain.newKeys & SELECT_BUTTON)
- {
- sub_80CFDC4();
- return 0;
- }
+ retVal = 0;
- retVal = 0;
- }
- }
- else
- {
- retVal = 1;
- cursorArea = CURSOR_AREA_BUTTONS;
- cursorPosition = 0;
- sPSSData->field_CD7 = 1;
- }
+ } while (0);
if (retVal)
{
@@ -8116,62 +8128,57 @@ static u8 HandleInput_OnButtons(void)
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
- if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+ do
{
- if (gMain.newAndRepeatedKeys & (DPAD_DOWN | START_BUTTON))
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ retVal = 1;
+ cursorArea = CURSOR_AREA_IN_BOX;
+ sPSSData->field_CD2 = -1;
+ cursorPosition = (sBoxCursorPosition == 0) ? IN_BOX_COUNT - 1 - 5 : IN_BOX_COUNT - 1;
+ sPSSData->field_CD7 = 1;
+ break;
+ }
+ else if (gMain.newAndRepeatedKeys & (DPAD_DOWN | START_BUTTON))
{
retVal = 1;
cursorArea = CURSOR_AREA_BOX;
cursorPosition = 0;
sPSSData->field_CD7 = 1;
+ break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
retVal = 1;
if (--cursorPosition < 0)
- {
cursorPosition = 1;
- }
+ break;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
retVal = 1;
if (++cursorPosition > 1)
- {
cursorPosition = 0;
- }
+ break;
}
- else if (gMain.newKeys & A_BUTTON)
- {
+
+ if (gMain.newKeys & A_BUTTON)
return (cursorPosition == 0) ? 5 : 4;
- }
- else if (gMain.newKeys & B_BUTTON)
- {
+ if (gMain.newKeys & B_BUTTON)
return 19;
- }
- else if (gMain.newKeys & SELECT_BUTTON)
+
+ if (gMain.newKeys & SELECT_BUTTON)
{
sub_80CFDC4();
return 0;
}
- else
- {
- retVal = 0;
- }
- }
- else
- {
- retVal = 1;
- cursorArea = CURSOR_AREA_IN_BOX;
- sPSSData->field_CD2 = -1;
- cursorPosition = (sBoxCursorPosition == 0) ? IN_BOX_COUNT - 1 - 5 : IN_BOX_COUNT - 1;
- sPSSData->field_CD7 = 1;
- }
+
+ retVal = 0;
+ } while (0);
if (retVal != 0)
- {
sub_80CD894(cursorArea, cursorPosition);
- }
return retVal;
}
@@ -8750,9 +8757,14 @@ static s16 sub_80D00AC(void)
{
s32 textId = -2;
- if (!(gMain.newKeys & A_BUTTON))
+ do
{
- if (gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
+ {
+ textId = Menu_GetCursorPos();
+ break;
+ }
+ else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
textId = -1;
@@ -8768,11 +8780,7 @@ static s16 sub_80D00AC(void)
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
}
- }
- else
- {
- textId = Menu_GetCursorPos();
- }
+ } while (0);
if (textId != -2)
sub_80D013C();
@@ -8780,9 +8788,6 @@ static s16 sub_80D00AC(void)
if (textId >= 0)
textId = sPSSData->menuItems[textId].textId;
- #ifndef NONMATCHING
- asm("":::"r4");
- #endif // NONMATCHING
return textId;
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 2ec088628..79aac4b5e 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -115,7 +115,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData
u8 level; // 0x5
u8 ribbonCount; // 0x6
u8 ailment; // 0x7
- u8 altAbility; // 0x8
+ u8 abilityNum; // 0x8
u8 metLocation; // 0x9
u8 metLevel; // 0xA
u8 metGame; // 0xB
@@ -1356,7 +1356,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon)
sum->species2 = GetMonData(mon, MON_DATA_SPECIES2);
sum->exp = GetMonData(mon, MON_DATA_EXP);
sum->level = GetMonData(mon, MON_DATA_LEVEL);
- sum->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY);
+ sum->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM);
sum->item = GetMonData(mon, MON_DATA_HELD_ITEM);
sum->pid = GetMonData(mon, MON_DATA_PERSONALITY);
sum->sanity = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
@@ -3062,13 +3062,13 @@ static void PrintMonOTID(void)
static void PrintMonAbilityName(void)
{
- u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.abilityNum);
SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityNames[ability], 0, 1, 0, 1);
}
static void PrintMonAbilityDescription(void)
{
- u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.abilityNum);
SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
}
diff --git a/src/pokenav.c b/src/pokenav.c
index be3826bed..132e4123b 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -318,7 +318,7 @@ void Task_RunLoopedTask_LinkMode(u8 taskId)
if (sub_8087598())
return;
-
+
task = (LoopedTask)GetWordTaskArg(taskId, 1);
state = &gTasks[taskId].data[0];
action = task(*state);
@@ -605,7 +605,7 @@ void sub_81C7694(u32 a0)
gPokenavResources->fieldA = value;
}
-u16 sub_81C76AC(void)
+u32 sub_81C76AC(void)
{
return gPokenavResources->fieldA;
}
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
index 94dab60bb..4422a70e3 100644
--- a/src/pokenav_main_menu.c
+++ b/src/pokenav_main_menu.c
@@ -64,16 +64,16 @@ static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide);
static void HideLeftHeaderSprites(bool32 isOnRightSide);
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide);
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide);
-static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration);
+static void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration);
static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
static void InitPokenavMainMenuResources(void);
static void InitHoennMapHeaderSprites(void);
static void sub_81C7B74(void);
-static u32 LoopedTask_ScrollMenuHeaderDown(int a0);
-static u32 LoopedTask_ScrollMenuHeaderUp(int a0);
+static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0);
+static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0);
static void sub_81C7BF8(u32 a0);
static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
-static u32 LoopedTask_InitPokenavMenu(int a0);
+static u32 LoopedTask_InitPokenavMenu(s32 a0);
const u16 gSpinningPokenavPaletteData[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
const u32 gSpinningPokenavGfx[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
@@ -360,7 +360,7 @@ bool32 WaitForPokenavShutdownFade(void)
return TRUE;
}
-static u32 LoopedTask_InitPokenavMenu(int a0)
+static u32 LoopedTask_InitPokenavMenu(s32 a0)
{
struct PokenavMainMenuResources *structPtr;
@@ -440,7 +440,7 @@ bool32 MainMenuLoopedTaskIsBusy(void)
return IsLoopedTaskActive(structPtr->currentTaskId);
}
-static u32 LoopedTask_ScrollMenuHeaderDown(int a0)
+static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
{
switch (a0)
{
@@ -461,7 +461,7 @@ static u32 LoopedTask_ScrollMenuHeaderDown(int a0)
}
}
-static u32 LoopedTask_ScrollMenuHeaderUp(int a0)
+static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0)
{
if (ChangeBgY(0, 384, 2) <= 0)
{
@@ -637,7 +637,7 @@ _081C7AAE:\n\
.syntax divided");
}
-void sub_81C7AC0(int a0)
+void sub_81C7AC0(s32 a0)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
@@ -708,7 +708,7 @@ static void sub_81C7BF8(u32 windowId)
static void InitPokenavMainMenuResources(void)
{
- int i;
+ s32 i;
u8 spriteId;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
@@ -758,13 +758,13 @@ void ResumeSpinningPokenavSprite(void)
static void InitHoennMapHeaderSprites(void)
{
- int i, spriteId;
+ s32 i, spriteId;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet);
AllocSpritePalette(1);
AllocSpritePalette(2);
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
spriteId = CreateSprite(&sPokenavLeftHeaderHoennMapSpriteTemplate, 0, 0, 1);
structPtr->leftHeaderSprites[i] = &gSprites[spriteId];
@@ -859,10 +859,10 @@ void sub_81C7FC4(u32 arg0, bool32 arg1)
void sub_81C7FDC(void)
{
- int i;
+ s32 i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
structPtr->leftHeaderSprites[i]->invisible = TRUE;
structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE;
@@ -881,7 +881,7 @@ bool32 sub_81C8010(void)
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
{
- int start, end, i;
+ s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
if (!isOnRightSide)
@@ -889,7 +889,7 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
else
start = 256, end = 160;
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
structPtr->leftHeaderSprites[i]->pos1.y = startY;
MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
@@ -898,7 +898,7 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
{
- int start, end, i;
+ s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
if (!isOnRightSide)
@@ -906,7 +906,7 @@ static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
else
start = 256, end = 192;
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
{
structPtr->submenuLeftHeaderSprites[i]->pos1.y = startY;
MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
@@ -915,7 +915,7 @@ static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
static void HideLeftHeaderSprites(bool32 isOnRightSide)
{
- int start, end, i;
+ s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
if (!isOnRightSide)
@@ -923,7 +923,7 @@ static void HideLeftHeaderSprites(bool32 isOnRightSide)
else
start = 192, end = 256;
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
}
@@ -931,7 +931,7 @@ static void HideLeftHeaderSprites(bool32 isOnRightSide)
static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
{
- int start, end, i;
+ s32 start, end, i;
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
if (!isOnRightSide)
@@ -939,13 +939,13 @@ static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
else
start = 192, end = 256;
- for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
+ for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
{
MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
}
}
-static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration)
+static void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration)
{
sprite->pos1.x = startX;
sprite->data[0] = startX * 16;
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index 70fa42541..d2d89babf 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -6,6 +6,7 @@
#include "battle.h"
#include "gym_leader_rematch.h"
#include "match_call.h"
+#include "constants/region_map_sections.h"
// Static type declarations
@@ -17,13 +18,13 @@ typedef struct MatchCallTextDataStruct {
struct MatchCallStructCommon {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
};
struct MatchCallStruct0 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
const u8 *desc;
const u8 *name;
@@ -32,7 +33,7 @@ struct MatchCallStruct0 {
struct MatchCallStruct1 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -42,12 +43,12 @@ struct MatchCallStruct1 {
struct MatchCallSubstruct2 {
u16 flag;
- u8 v2;
+ u8 mapSec;
};
struct MatchCallStruct2 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -57,7 +58,7 @@ struct MatchCallStruct2 {
struct MatchCallStruct3 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
const u8 *desc;
const u8 *name;
@@ -75,7 +76,7 @@ struct MatchCallStruct4 {
// Note: Type1 and Type5 have identical struct layouts.
struct MatchCallStruct5 {
u8 type;
- u8 v1;
+ u8 mapSec;
u16 flag;
u16 rematchTableIdx;
const u8 *desc;
@@ -96,7 +97,7 @@ typedef union {
struct UnkStruct_08625388 {
u16 idx;
u16 v2;
- u16 v4;
+ u32 v4;
const u8 *v8[4];
};
@@ -110,11 +111,11 @@ static bool32 MatchCallGetFlag_Type2(match_call_t);
static bool32 MatchCallGetFlag_Type3(match_call_t);
static bool32 MatchCallGetFlag_Type4(match_call_t);
-static u8 sub_81D1714(match_call_t);
-static u8 sub_81D1718(match_call_t);
-static u8 sub_81D171C(match_call_t);
-static u8 sub_81D1750(match_call_t);
-static u8 sub_81D1754(match_call_t);
+static u8 MatchCallGetMapSec_Type0(match_call_t);
+static u8 MatchCallGetMapSec_Type1(match_call_t);
+static u8 MatchCallGetMapSec_Type2(match_call_t);
+static u8 MatchCallGetMapSec_Type3(match_call_t);
+static u8 MatchCallGetMapSec_Type4(match_call_t);
static bool32 MatchCall_IsRematchable_Type0(match_call_t);
static bool32 MatchCall_IsRematchable_Type1(match_call_t);
@@ -325,7 +326,7 @@ static const match_call_text_data_t sMrStoneTextScripts[] = {
static const struct MatchCallStruct0 sMrStoneMatchCallHeader =
{
.type = 0,
- .v1 = 10,
+ .mapSec = MAPSEC_RUSTBORO_CITY,
.flag = 0xFFFF,
.desc = gMrStoneMatchCallDesc,
.name = gMrStoneMatchCallName,
@@ -348,7 +349,7 @@ static const match_call_text_data_t sNormanTextScripts[] = {
static const struct MatchCallStruct5 sNormanMatchCallHeader =
{
.type = 5,
- .v1 = 7,
+ .mapSec = MAPSEC_PETALBURG_CITY,
.flag = FLAG_ENABLE_NORMAN_MATCH_CALL,
.rematchTableIdx = REMATCH_NORMAN,
.desc = gNormanMatchCallDesc,
@@ -359,7 +360,7 @@ static const struct MatchCallStruct5 sNormanMatchCallHeader =
static const struct MatchCallStruct3 sProfBirchMatchCallHeader =
{
.type = 3,
- .v1 = 0,
+ .mapSec = 0,
.flag = FLAG_ENABLE_PROF_BIRCH_MATCH_CALL,
.desc = gProfBirchMatchCallDesc,
.name = gProfBirchMatchCallName
@@ -375,7 +376,7 @@ static const match_call_text_data_t sMomTextScripts[] = {
static const struct MatchCallStruct0 sMomMatchCallHeader =
{
.type = 0,
- .v1 = 0,
+ .mapSec = MAPSEC_LITTLEROOT_TOWN,
.flag = FLAG_ENABLE_MOM_MATCH_CALL,
.desc = gMomMatchCallDesc,
.name = gMomMatchCallName,
@@ -396,7 +397,7 @@ static const match_call_text_data_t sStevenTextScripts[] = {
static const struct MatchCallStruct0 sStevenMatchCallHeader =
{
.type = 0,
- .v1 = 0xD5,
+ .mapSec = MAPSEC_NONE,
.flag = FLAG_REGISTERED_STEVEN_POKENAV,
.desc = gStevenMatchCallDesc,
.name = gStevenMatchCallName,
@@ -473,16 +474,16 @@ static const match_call_text_data_t sWallyTextScripts[] = {
};
const struct MatchCallSubstruct2 sWallyAdditionalData[] = {
- { FLAG_HIDE_MAUVILLE_CITY_WALLY, 0x05 },
- { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xD5 },
- { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, 0x46 },
- { 0xFFFF, 0xD5 }
+ { FLAG_HIDE_MAUVILLE_CITY_WALLY, MAPSEC_VERDANTURF_TOWN },
+ { FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, MAPSEC_NONE },
+ { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, MAPSEC_VICTORY_ROAD },
+ { 0xFFFF, MAPSEC_NONE }
};
static const struct MatchCallStruct2 sWallyMatchCallHeader =
{
.type = 2,
- .v1 = 0,
+ .mapSec = 0,
.flag = FLAG_ENABLE_WALLY_MATCH_CALL,
.rematchTableIdx = REMATCH_WALLY_3,
.desc = gWallyMatchCallDesc,
@@ -505,7 +506,7 @@ static const match_call_text_data_t sScottTextScripts[] = {
static const struct MatchCallStruct0 sScottMatchCallHeader =
{
.type = 0,
- .v1 = 0xD5,
+ .mapSec = MAPSEC_NONE,
.flag = FLAG_ENABLE_SCOTT_MATCH_CALL,
.desc = gScottMatchCallDesc,
.name = gScottMatchCallName,
@@ -523,7 +524,7 @@ static const match_call_text_data_t sRoxanneTextScripts[] = {
static const struct MatchCallStruct5 sRoxanneMatchCallHeader =
{
.type = 5,
- .v1 = 10,
+ .mapSec = MAPSEC_RUSTBORO_CITY,
.flag = FLAG_ENABLE_ROXANNE_MATCH_CALL,
.rematchTableIdx = REMATCH_ROXANNE,
.desc = gRoxanneMatchCallDesc,
@@ -542,7 +543,7 @@ static const match_call_text_data_t sBrawlyTextScripts[] = {
static const struct MatchCallStruct5 sBrawlyMatchCallHeader =
{
.type = 5,
- .v1 = 2,
+ .mapSec = MAPSEC_DEWFORD_TOWN,
.flag = FLAG_ENABLE_BRAWLY_MATCH_CALL,
.rematchTableIdx = REMATCH_BRAWLY,
.desc = gBrawlyMatchCallDesc,
@@ -561,7 +562,7 @@ static const match_call_text_data_t sWattsonTextScripts[] = {
static const struct MatchCallStruct5 sWattsonMatchCallHeader =
{
.type = 5,
- .v1 = 9,
+ .mapSec = MAPSEC_MAUVILLE_CITY,
.flag = FLAG_ENABLE_WATTSON_MATCH_CALL,
.rematchTableIdx = REMATCH_WATTSON,
.desc = gWattsonMatchCallDesc,
@@ -580,7 +581,7 @@ static const match_call_text_data_t sFlanneryTextScripts[] = {
static const struct MatchCallStruct5 sFlanneryMatchCallHeader =
{
.type = 5,
- .v1 = 3,
+ .mapSec = MAPSEC_LAVARIDGE_TOWN,
.flag = FLAG_ENABLE_FLANNERY_MATCH_CALL,
.rematchTableIdx = REMATCH_FLANNERY,
.desc = gFlanneryMatchCallDesc,
@@ -599,7 +600,7 @@ static const match_call_text_data_t sWinonaTextScripts[] = {
static const struct MatchCallStruct5 sWinonaMatchCallHeader =
{
.type = 5,
- .v1 = 11,
+ .mapSec = MAPSEC_FORTREE_CITY,
.flag = FLAG_ENABLE_WINONA_MATCH_CALL,
.rematchTableIdx = REMATCH_WINONA,
.desc = gWinonaMatchCallDesc,
@@ -618,7 +619,7 @@ static const match_call_text_data_t sTateLizaTextScripts[] = {
static const struct MatchCallStruct5 sTateLizaMatchCallHeader =
{
.type = 5,
- .v1 = 13,
+ .mapSec = MAPSEC_MOSSDEEP_CITY,
.flag = FLAG_ENABLE_TATE_AND_LIZA_MATCH_CALL,
.rematchTableIdx = REMATCH_TATE_AND_LIZA,
.desc = gTateLizaMatchCallDesc,
@@ -637,7 +638,7 @@ static const match_call_text_data_t sJuanTextScripts[] = {
static const struct MatchCallStruct5 sJuanMatchCallHeader =
{
.type = 5,
- .v1 = 14,
+ .mapSec = MAPSEC_SOOTOPOLIS_CITY,
.flag = FLAG_ENABLE_JUAN_MATCH_CALL,
.rematchTableIdx = REMATCH_JUAN,
.desc = gJuanMatchCallDesc,
@@ -653,7 +654,7 @@ static const match_call_text_data_t sSidneyTextScripts[] = {
static const struct MatchCallStruct5 sSidneyMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_SIDNEY,
.rematchTableIdx = REMATCH_SIDNEY,
.desc = gEliteFourMatchCallDesc,
@@ -669,7 +670,7 @@ static const match_call_text_data_t sPhoebeTextScripts[] = {
static const struct MatchCallStruct5 sPhoebeMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_PHOEBE,
.rematchTableIdx = REMATCH_PHOEBE,
.desc = gEliteFourMatchCallDesc,
@@ -685,7 +686,7 @@ static const match_call_text_data_t sGlaciaTextScripts[] = {
static const struct MatchCallStruct5 sGlaciaMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_GLACIA,
.rematchTableIdx = REMATCH_GLACIA,
.desc = gEliteFourMatchCallDesc,
@@ -701,7 +702,7 @@ static const match_call_text_data_t sDrakeTextScripts[] = {
static const struct MatchCallStruct5 sDrakeMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_DRAKE,
.rematchTableIdx = REMATCH_DRAKE,
.desc = gEliteFourMatchCallDesc,
@@ -717,7 +718,7 @@ static const match_call_text_data_t sWallaceTextScripts[] = {
static const struct MatchCallStruct5 sWallaceMatchCallHeader =
{
.type = 5,
- .v1 = 15,
+ .mapSec = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_REMATCH_WALLACE,
.rematchTableIdx = REMATCH_WALLACE,
.desc = gChampionMatchCallDesc,
@@ -753,24 +754,24 @@ static bool32 (*const sMatchCallGetFlagFuncs[])(match_call_t) = {
MatchCallGetFlag_Type0,
MatchCallGetFlag_Type1,
MatchCallGetFlag_Type2,
- MatchCallGetFlag_Type3,
- MatchCallGetFlag_Type4
+ MatchCallGetFlag_Type4,
+ MatchCallGetFlag_Type3
};
-static u8 (*const gUnknown_08625310[])(match_call_t) = {
- sub_81D1714,
- sub_81D1718,
- sub_81D171C,
- sub_81D1750,
- sub_81D1754
+static u8 (*const sMatchCallGetMapSecFuncs[])(match_call_t) = {
+ MatchCallGetMapSec_Type0,
+ MatchCallGetMapSec_Type1,
+ MatchCallGetMapSec_Type2,
+ MatchCallGetMapSec_Type4,
+ MatchCallGetMapSec_Type3
};
static bool32 (*const sMatchCall_IsRematchableFunctions[])(match_call_t) = {
MatchCall_IsRematchable_Type0,
MatchCall_IsRematchable_Type1,
MatchCall_IsRematchable_Type2,
- MatchCall_IsRematchable_Type3,
- MatchCall_IsRematchable_Type4
+ MatchCall_IsRematchable_Type4,
+ MatchCall_IsRematchable_Type3
};
static bool32 (*const gUnknown_08625338[])(match_call_t) = {
@@ -785,24 +786,24 @@ static u32 (*const sMatchCall_GetRematchTableIdxFunctions[])(match_call_t) = {
MatchCall_GetRematchTableIdx_Type0,
MatchCall_GetRematchTableIdx_Type1,
MatchCall_GetRematchTableIdx_Type2,
- MatchCall_GetRematchTableIdx_Type3,
- MatchCall_GetRematchTableIdx_Type4
+ MatchCall_GetRematchTableIdx_Type4,
+ MatchCall_GetRematchTableIdx_Type3
};
static void (*const sMatchCall_GetMessageFunctions[])(match_call_t, u8 *) = {
MatchCall_GetMessage_Type0,
MatchCall_GetMessage_Type1,
MatchCall_GetMessage_Type2,
- MatchCall_GetMessage_Type3,
- MatchCall_GetMessage_Type4
+ MatchCall_GetMessage_Type4,
+ MatchCall_GetMessage_Type3
};
static void (*const sMatchCall_GetNameAndDescFunctions[])(match_call_t, const u8 **, const u8 **) = {
MatchCall_GetNameAndDesc_Type0,
MatchCall_GetNameAndDesc_Type1,
MatchCall_GetNameAndDesc_Type2,
- MatchCall_GetNameAndDesc_Type3,
- MatchCall_GetNameAndDesc_Type4
+ MatchCall_GetNameAndDesc_Type4,
+ MatchCall_GetNameAndDesc_Type3
};
static const struct UnkStruct_08625388 sMatchCallCheckPageOverrides[] = {
@@ -883,7 +884,7 @@ static bool32 MatchCallGetFlag_Type2(match_call_t matchCall)
return FlagGet(matchCall.type2->flag);
}
-static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
+static bool32 MatchCallGetFlag_Type4(match_call_t matchCall)
{
if (matchCall.type4->gender != gSaveBlock2Ptr->playerGender)
return FALSE;
@@ -892,12 +893,12 @@ static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
return FlagGet(matchCall.type4->flag);
}
-static bool32 MatchCallGetFlag_Type4(match_call_t matchCall)
+static bool32 MatchCallGetFlag_Type3(match_call_t matchCall)
{
return FlagGet(matchCall.type3->flag);
}
-u8 sub_81D16DC(u32 idx)
+u8 MatchCallMapSecGetByIndex(u32 idx)
{
match_call_t matchCall;
u32 i;
@@ -906,20 +907,20 @@ u8 sub_81D16DC(u32 idx)
return 0;
matchCall = sMatchCallHeaders[idx];
i = MatchCallGetFunctionIndex(matchCall);
- return gUnknown_08625310[i](matchCall);
+ return sMatchCallGetMapSecFuncs[i](matchCall);
}
-static u8 sub_81D1714(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type0(match_call_t matchCall)
{
- return matchCall.type0->v1;
+ return matchCall.type0->mapSec;
}
-static u8 sub_81D1718(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type1(match_call_t matchCall)
{
- return matchCall.type1->v1;
+ return matchCall.type1->mapSec;
}
-static u8 sub_81D171C(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type2(match_call_t matchCall)
{
s32 i;
@@ -928,17 +929,17 @@ static u8 sub_81D171C(match_call_t matchCall)
if (!FlagGet(matchCall.type2->v10[i].flag))
break;
}
- return matchCall.type2->v10[i].v2;
+ return matchCall.type2->v10[i].mapSec;
}
-static u8 sub_81D1750(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type4(match_call_t matchCall)
{
- return 0xd5;
+ return MAPSEC_NONE;
}
-static u8 sub_81D1754(match_call_t matchCall)
+static u8 MatchCallGetMapSec_Type3(match_call_t matchCall)
{
- return 0xd5;
+ return MAPSEC_NONE;
}
bool32 MatchCall_IsRematchable(u32 idx)
@@ -970,12 +971,12 @@ static bool32 MatchCall_IsRematchable_Type2(match_call_t matchCall)
return gSaveBlock1Ptr->trainerRematches[matchCall.type2->rematchTableIdx] ? TRUE : FALSE;
}
-static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
+static bool32 MatchCall_IsRematchable_Type4(match_call_t matchCall)
{
return FALSE;
}
-static bool32 MatchCall_IsRematchable_Type4(match_call_t matchCall)
+static bool32 MatchCall_IsRematchable_Type3(match_call_t matchCall)
{
return FALSE;
}
@@ -1051,12 +1052,12 @@ static u32 MatchCall_GetRematchTableIdx_Type2(match_call_t matchCall)
return matchCall.type2->rematchTableIdx;
}
-static u32 MatchCall_GetRematchTableIdx_Type3(match_call_t matchCall)
+static u32 MatchCall_GetRematchTableIdx_Type4(match_call_t matchCall)
{
return REMATCH_TABLE_ENTRIES;
}
-static u32 MatchCall_GetRematchTableIdx_Type4(match_call_t matchCall)
+static u32 MatchCall_GetRematchTableIdx_Type3(match_call_t matchCall)
{
return REMATCH_TABLE_ENTRIES;
}
@@ -1091,12 +1092,12 @@ static void MatchCall_GetMessage_Type2(match_call_t matchCall, u8 *dest)
sub_81D1920(matchCall.type2->textData, dest);
}
-static void MatchCall_GetMessage_Type3(match_call_t matchCall, u8 *dest)
+static void MatchCall_GetMessage_Type4(match_call_t matchCall, u8 *dest)
{
sub_81D1920(matchCall.type4->textData, dest);
}
-static void MatchCall_GetMessage_Type4(match_call_t matchCall, u8 *dest)
+static void MatchCall_GetMessage_Type3(match_call_t matchCall, u8 *dest)
{
sub_8197080(dest);
}
@@ -1190,13 +1191,13 @@ static void MatchCall_GetNameAndDesc_Type2(match_call_t matchCall, const u8 **de
*desc = matchCall.type2->desc;
}
-static void MatchCall_GetNameAndDesc_Type3(match_call_t matchCall, const u8 **desc, const u8 **name)
+static void MatchCall_GetNameAndDesc_Type4(match_call_t matchCall, const u8 **desc, const u8 **name)
{
*desc = matchCall.type4->desc;
*name = matchCall.type4->name;
}
-static void MatchCall_GetNameAndDesc_Type4(match_call_t matchCall, const u8 **desc, const u8 **name)
+static void MatchCall_GetNameAndDesc_Type3(match_call_t matchCall, const u8 **desc, const u8 **name)
{
*desc = matchCall.type3->desc;
*name = matchCall.type3->name;
@@ -1209,7 +1210,6 @@ static void MatchCall_GetNameAndDescByRematchIdx(u32 idx, const u8 **desc, const
*name = trainer->trainerName;
}
-#ifdef NONMATCHING
const u8 *sub_81D1B40(u32 idx, u32 offset)
{
u32 i;
@@ -1218,95 +1218,21 @@ const u8 *sub_81D1B40(u32 idx, u32 offset)
{
if (sMatchCallCheckPageOverrides[i].idx == idx)
{
- for (; i + 1 < ARRAY_COUNT(sMatchCallCheckPageOverrides) && sMatchCallCheckPageOverrides[i + 1].idx == idx; i++)
+ while (1)
{
+ if (i + 1 >= ARRAY_COUNT(sMatchCallCheckPageOverrides))
+ break;
+ if (sMatchCallCheckPageOverrides[i + 1].idx != idx)
+ break;
if (!FlagGet(sMatchCallCheckPageOverrides[i + 1].v4))
break;
+ i++;
}
return sMatchCallCheckPageOverrides[i].v8[offset];
}
}
return NULL;
}
-#else
-NAKED const u8 *sub_81D1B40(u32 idx, u32 offset)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r9\n"
- "\tmov r6, r8\n"
- "\tpush {r6,r7}\n"
- "\tadds r6, r0, 0\n"
- "\tmovs r5, 0\n"
- "\tldr r2, =sMatchCallCheckPageOverrides\n"
- "\tmovs r0, 0x8\n"
- "\tadds r0, r2\n"
- "\tmov r9, r0\n"
- "_081D1B54:\n"
- "\tlsls r0, r5, 1\n"
- "\tadds r0, r5\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r2\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, r6\n"
- "\tbne _081D1BBC\n"
- "\tadds r4, r5, 0x1\n"
- "\tlsls r1, 2\n"
- "\tmov r8, r1\n"
- "\tcmp r4, 0x3\n"
- "\tbhi _081D1BA8\n"
- "\tlsls r0, r4, 1\n"
- "\tadds r0, r4\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r2\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, r6\n"
- "\tbne _081D1BA8\n"
- "\tldr r7, =sMatchCallCheckPageOverrides\n"
- "_081D1B7C:\n"
- "\tlsls r0, r4, 1\n"
- "\tadds r0, r4\n"
- "\tlsls r0, 3\n"
- "\tadds r1, r7, 0x4\n"
- "\tadds r0, r1\n"
- "\tldrh r0, [r0]\n"
- "\tbl FlagGet\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _081D1BA8\n"
- "\tadds r5, r4, 0\n"
- "\tadds r4, r5, 0x1\n"
- "\tcmp r4, 0x3\n"
- "\tbhi _081D1BA8\n"
- "\tlsls r0, r4, 1\n"
- "\tadds r0, r4\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r7\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, r6\n"
- "\tbeq _081D1B7C\n"
- "_081D1BA8:\n"
- "\tlsls r0, r5, 1\n"
- "\tadds r0, r5\n"
- "\tlsls r0, 3\n"
- "\tadd r0, r8\n"
- "\tadd r0, r9\n"
- "\tldr r0, [r0]\n"
- "\tb _081D1BC4\n"
- "\t.pool\n"
- "_081D1BBC:\n"
- "\tadds r5, 0x1\n"
- "\tcmp r5, 0x3\n"
- "\tbls _081D1B54\n"
- "\tmovs r0, 0\n"
- "_081D1BC4:\n"
- "\tpop {r3,r4}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif
int sub_81D1BD0(u32 idx)
{
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c
index 795b4d599..bae3a8d7a 100644
--- a/src/pokenav_match_call_ui.c
+++ b/src/pokenav_match_call_ui.c
@@ -1164,4 +1164,4 @@ u32 sub_81C91AC(struct UnknownInnerStruct_81C81D4 *a0, const struct BgTemplate *
a0->downArrow = NULL;
return 1;
}
-} \ No newline at end of file
+}
diff --git a/src/pokenav_unk_10.c b/src/pokenav_unk_10.c
new file mode 100644
index 000000000..51dcd3687
--- /dev/null
+++ b/src/pokenav_unk_10.c
@@ -0,0 +1,1163 @@
+#include "global.h"
+#include "decompress.h"
+#include "dynamic_placeholder_text_util.h"
+#include "graphics.h"
+#include "international_string_util.h"
+#include "pokenav.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "trainer_pokemon_sprites.h"
+#include "window.h"
+#include "constants/songs.h"
+
+struct PokenavSub13
+{
+ u8 filler0[0x8];
+ struct PokenavSub18 *field_8;
+ u16 field_C;
+ u16 field_E;
+ u16 field_10;
+ u16 field_12;
+ u32 field_14[25];
+ u32 field_78[8];
+ u32 (*field_98)(struct PokenavSub13 *structPtr);
+};
+
+struct PokenavSub14
+{
+ u32 (*field_0)(void);
+ u32 loopedTaskId;
+ u16 field_8;
+ u16 field_A;
+ u16 field_C;
+ u16 field_E;
+ u16 field_10;
+ struct Sprite *field_14;
+ u32 filler;
+ u8 tilemapBuffers[2][BG_SCREEN_SIZE];
+};
+
+static u32 gUnknown_030012C0;
+static u32 gUnknown_030012C4;
+
+void sub_81D0E84(struct PokenavSub14 *structPtr);
+void sub_81D0FF0(struct PokenavSub14 *structPtr);
+void sub_81D10D0(struct PokenavSub14 *structPtr);
+void sub_81D1500(struct PokenavSub14 *structPtr);
+void sub_81D0EFC(struct PokenavSub14 *structPtr);
+void sub_81D1148(struct PokenavSub14 *structPtr);
+void sub_81D10A4(struct PokenavSub14 *structPtr);
+void sub_81D1178(struct PokenavSub14 *structPtr);
+void sub_81D11D8(struct PokenavSub14 *structPtr);
+void sub_81D11FC(struct PokenavSub14 *structPtr);
+void sub_81D0E60(struct PokenavSub14 *structPtr);
+void sub_81D1448(struct PokenavSub14 *structPtr);
+void sub_81D13FC(struct PokenavSub14 *structPtr);
+void sub_81D0FCC(struct PokenavSub14 *structPtr);
+void sub_81D12D8(struct PokenavSub14 *structPtr);
+bool32 sub_81D1524(struct PokenavSub14 *structPtr);
+bool32 sub_81D1234(struct PokenavSub14 *structPtr);
+void sub_81D0814(struct PokenavSub13 *structPtr);
+u32 sub_81D0548(struct PokenavSub13 *structPtr);
+u32 sub_81D04C4(struct PokenavSub13 *structPtr);
+u32 sub_81D05D4(struct PokenavSub13 *structPtr);
+bool32 sub_81D05DC(struct PokenavSub13 *structPtr);
+bool32 sub_81D0688(struct PokenavSub13 *structPtr);
+bool32 sub_81D0664(struct PokenavSub13 *structPtr);
+bool32 sub_81D061C(struct PokenavSub13 *structPtr);
+bool32 sub_81D0688(struct PokenavSub13 *structPtr);
+bool32 sub_81D0A58(void);
+u32 sub_81D06C4(void);
+u32 sub_81D06D4(void);
+u16 sub_81D1184(s32 unused0, s32 unused1);
+void sub_81D1258(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
+void sub_81D1284(struct Sprite *sprite);
+void sub_81D1350(void);
+void sub_81D13BC(u16 *dst, u32 id);
+void sub_81D1370(u32 arg0, u32 id);
+void sub_81D1538(struct Sprite *sprite);
+u32 sub_81D0A6C(s32 state);
+u32 sub_81D0C84(s32 state);
+u32 sub_81D0D2C(s32 state);
+u32 sub_81D0D8C(s32 state);
+u32 sub_81D0E00(s32 state);
+u32 sub_81D0C54(s32 state);
+
+struct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+} static const gUnknown_086237F8[] =
+{
+ {1, 1, 0, 0},
+ {3, 4, 1, 0},
+ {3, 4, 5, 0},
+ {3, 4, 9, 0},
+ {3, 4, 13, 0},
+ {3, 4, 17, 0},
+ {1, 1, 21, 0},
+ {1, 1, 22, 0},
+ {1, 1, 23, 0},
+ {1, 1, 24, 0},
+ {1, 1, 25, 1},
+ {1, 1, 26, 1},
+ {1, 1, 27, 1},
+ {1, 1, 28, 1},
+ {1, 1, 29, 1},
+ {1, 1, 30, 1},
+ {1, 1, 31, 1}
+};
+
+#include "data/text/ribbon_descriptions.h"
+#include "data/text/gift_ribbon_descriptions.h"
+
+static const u16 gUnknown_08623FF8[] = INCBIN_U16("graphics/pokenav/ribbons_icon1.gbapal");
+static const u16 gUnknown_08624018[] = INCBIN_U16("graphics/pokenav/ribbons_icon2.gbapal");
+static const u16 gUnknown_08624038[] = INCBIN_U16("graphics/pokenav/ribbons_icon3.gbapal");
+static const u16 gUnknown_08624058[] = INCBIN_U16("graphics/pokenav/ribbons_icon4.gbapal");
+static const u16 gUnknown_08624078[] = INCBIN_U16("graphics/pokenav/ribbons_icon5.gbapal");
+static const u16 gUnknown_08624098[] = INCBIN_U16("graphics/pokenav/8624098.gbapal");
+static const u32 gUnknown_086240B8[] = INCBIN_U32("graphics/pokenav/ribbons_icon.4bpp.lz");
+static const u32 gUnknown_08624280[] = INCBIN_U32("graphics/pokenav/ribbons_icon_big.4bpp.lz");
+
+static const struct BgTemplate gUnknown_08624B98[] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+static const LoopedTask gUnknown_08624BA0[] =
+{
+ NULL,
+ sub_81D0C84,
+ sub_81D0D2C,
+ sub_81D0D8C,
+ sub_81D0E00,
+ sub_81D0C54
+};
+
+// code
+bool32 sub_81D0450(void)
+{
+ struct PokenavSub13 *structPtr = AllocSubstruct(13, sizeof(struct PokenavSub13));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->field_8 = GetSubstructPtr(18);
+ if (structPtr->field_8 == NULL)
+ return FALSE;
+
+ sub_81D0814(structPtr);
+ structPtr->field_98 = sub_81D04C4;
+ gKeyRepeatContinueDelay = 3;
+ gKeyRepeatStartDelay = 10;
+ return TRUE;
+}
+
+u32 sub_81D04A0(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_98(structPtr);
+}
+
+void sub_81D04B8(void)
+{
+ FreePokenavSubstruct(13);
+}
+
+u32 sub_81D04C4(struct PokenavSub13 *structPtr)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP && structPtr->field_8->unk2 != 0)
+ {
+ structPtr->field_8->unk2--;
+ structPtr->field_C = 0;
+ sub_81D0814(structPtr);
+ return 1;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && structPtr->field_8->unk2 < structPtr->field_8->unk0 - 1)
+ {
+ structPtr->field_8->unk2++;
+ structPtr->field_C = 0;
+ sub_81D0814(structPtr);
+ return 1;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ structPtr->field_98 = sub_81D0548;
+ return 2;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ structPtr->field_98 = sub_81D05D4;
+ return 5;
+ }
+ return 0;
+}
+
+u32 sub_81D0548(struct PokenavSub13 *structPtr)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP && sub_81D05DC(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN && sub_81D061C(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT && sub_81D0664(structPtr))
+ return 3;
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && sub_81D0688(structPtr))
+ return 3;
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ structPtr->field_98 = sub_81D04C4;
+ return 4;
+ }
+ return 0;
+}
+
+u32 sub_81D05D4(struct PokenavSub13 *structPtr)
+{
+ return 0x186ae;
+}
+
+bool32 sub_81D05DC(struct PokenavSub13 *structPtr)
+{
+ if (structPtr->field_C < 25)
+ {
+ if (structPtr->field_C <= 8)
+ return FALSE;
+
+ structPtr->field_C -= 9;
+ return TRUE;
+ }
+ if (structPtr->field_10 != 0)
+ {
+ u32 var = structPtr->field_C - 27;
+ structPtr->field_C = var + structPtr->field_E;
+ if (structPtr->field_C >= structPtr->field_10)
+ structPtr->field_C = structPtr->field_10 - 1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81D061C(struct PokenavSub13 *structPtr)
+{
+ if (structPtr->field_C >= 25)
+ return FALSE;
+ if (structPtr->field_C < structPtr->field_E)
+ {
+ structPtr->field_C += 9;
+ if (structPtr->field_C >= structPtr->field_10)
+ structPtr->field_C = structPtr->field_10 - 1;
+ return TRUE;
+ }
+ if (structPtr->field_12 != 0)
+ {
+ int var = structPtr->field_C - structPtr->field_E;
+ if (var >= structPtr->field_12)
+ var = structPtr->field_12 - 1;
+
+ structPtr->field_C = var + 27;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81D0664(struct PokenavSub13 *structPtr)
+{
+ u16 var = structPtr->field_C % 9;
+ if (var != 0)
+ {
+ structPtr->field_C--;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool32 sub_81D0688(struct PokenavSub13 *structPtr)
+{
+ int r1 = structPtr->field_C % 9;
+
+ if (r1 >= 8)
+ return FALSE;
+
+ if (structPtr->field_C <= 26)
+ {
+ if (structPtr->field_C < structPtr->field_10 - 1)
+ {
+ structPtr->field_C++;
+ return TRUE;
+ }
+ }
+ else
+ {
+ if (r1 < structPtr->field_12 - 1)
+ {
+ structPtr->field_C++;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u32 sub_81D06C4(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_8->unk2;
+}
+
+u32 sub_81D06D4(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_8->unk0;
+}
+
+static void GetCurrMonInfo1(u8 *nick, u8 *level, u8 *gender)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ {
+ struct Pokemon *mon = &gPlayerParty[monInfo->monId];
+ GetMonData(mon, MON_DATA_NICKNAME, nick);
+ *level = GetLevelFromMonExp(mon);
+ *gender = GetMonGender(mon);
+ }
+ else
+ {
+ struct BoxPokemon *boxMon = GetBoxedMonPtr(monInfo->boxId, monInfo->monId);
+ *gender = GetBoxMonGender(boxMon);
+ *level = GetLevelFromBoxMonExp(boxMon);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, nick);
+ }
+ StringGetEnd10(nick);
+}
+
+static void GetCurrMonInfo2(u16 *species, u32 *personality, u32 *otId)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ {
+ struct Pokemon *mon = &gPlayerParty[monInfo->monId];
+ *species = GetMonData(mon, MON_DATA_SPECIES);
+ *personality = GetMonData(mon, MON_DATA_PERSONALITY);
+ *otId = GetMonData(mon, MON_DATA_OT_ID);
+ }
+ else
+ {
+ struct BoxPokemon *boxMon = GetBoxedMonPtr(monInfo->boxId, monInfo->monId);
+ *species = GetBoxMonData(boxMon, MON_DATA_SPECIES);
+ *personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
+ *otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
+ }
+}
+
+static u32 GetCurrMonRibbonCount(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ return GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBON_COUNT);
+ else
+ return GetBoxMonDataAt(monInfo->boxId, monInfo->monId, MON_DATA_RIBBON_COUNT);
+}
+
+void sub_81D0814(struct PokenavSub13 *structPtr)
+{
+ u32 ribbons;
+ s32 i, j;
+ struct PokenavSub18 *mons = structPtr->field_8;
+ struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+
+ if (monInfo->boxId == TOTAL_BOXES_COUNT)
+ ribbons = GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBONS);
+ else
+ ribbons = GetBoxMonDataAt(monInfo->boxId, monInfo->monId, MON_DATA_RIBBONS);
+
+ structPtr->field_10 = 0;
+ structPtr->field_12 = 0;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_086237F8); i++)
+ {
+ s32 r4 = ((1 << gUnknown_086237F8[i].unk0) - 1) & ribbons;
+ if (gUnknown_086237F8[i].unk3 == 0)
+ {
+ for (j = 0; j < r4; j++)
+ structPtr->field_14[structPtr->field_10++] = gUnknown_086237F8[i].unk2 + j;
+ }
+ else
+ {
+ for (j = 0; j < r4; j++)
+ structPtr->field_78[structPtr->field_12++] = gUnknown_086237F8[i].unk2 + j;
+ }
+ ribbons >>= gUnknown_086237F8[i].unk0;
+ }
+
+ if (structPtr->field_10 != 0)
+ {
+ structPtr->field_E = ((structPtr->field_10 - 1) / 9) * 9;
+ structPtr->field_C = 0;
+ }
+ else
+ {
+ structPtr->field_E = 0;
+ structPtr->field_C = 27;
+ }
+}
+
+u32 *sub_81D0914(u32 *arg0)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ *arg0 = structPtr->field_10;
+ return structPtr->field_14;
+}
+
+u32 *sub_81D092C(u32 *arg0)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ *arg0 = structPtr->field_12;
+ return structPtr->field_78;
+}
+
+u16 sub_81D0944(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ return structPtr->field_C;
+}
+
+u32 sub_81D0954(void)
+{
+ struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ int var = structPtr->field_C;
+ if (var <= 24)
+ return structPtr->field_14[var];
+ else
+ return structPtr->field_78[var - 27];
+}
+
+bool32 sub_81D0978(void)
+{
+ struct PokenavSub14 *structPtr = AllocSubstruct(14, sizeof(struct PokenavSub14));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->loopedTaskId = CreateLoopedTask(sub_81D0A6C, 1);
+ structPtr->field_0 = sub_81D0A58;
+ return TRUE;
+}
+
+void sub_81D09B0(int id)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ structPtr->loopedTaskId = CreateLoopedTask(gUnknown_08624BA0[id], 1);
+ structPtr->field_0 = sub_81D0A58;
+}
+
+u32 sub_81D09E0(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ return structPtr->field_0();
+}
+
+void sub_81D09F4(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ RemoveWindow(structPtr->field_A);
+ RemoveWindow(structPtr->field_8);
+ RemoveWindow(structPtr->field_C);
+ RemoveWindow(structPtr->field_E);
+ sub_81D1178(structPtr);
+ FreeSpriteTilesByTag(9);
+ FreeSpritePaletteByTag(0xF);
+ FreeSpritePaletteByTag(0x10);
+ FreeSpritePaletteByTag(0x11);
+ FreeSpritePaletteByTag(0x12);
+ FreeSpritePaletteByTag(0x13);
+ FreeSpriteOamMatrix(structPtr->field_14);
+ DestroySprite(structPtr->field_14);
+ FreePokenavSubstruct(14);
+}
+
+bool32 sub_81D0A58(void)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ return IsLoopedTaskActive(structPtr->loopedTaskId);
+}
+
+u32 sub_81D0A6C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ InitBgTemplates(gUnknown_08624B98, ARRAY_COUNT(gUnknown_08624B98));
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_08DDE030, 0, 0, 0);
+ SetBgTilemapBuffer(2, structPtr->tilemapBuffers[0]);
+ CopyToBgTilemapBuffer(2, gUnknown_08DDE12C, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08DDE010, 0x10, 0x20);
+ CopyBgTilemapBufferToVram(2);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_8199DF0(1, 0, 0, 1);
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_086240B8, 0, 1, 0);
+ SetBgTilemapBuffer(1, structPtr->tilemapBuffers[1]);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08623FF8, 0x20, 0xA0);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08624098, 0xA0, 0x20);
+ CopyBgTilemapBufferToVram(1);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D0E60(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 3:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D0FCC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 4:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ sub_81D10A4(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(2);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 6:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D1148(structPtr);
+ return LT_INC_AND_CONTINUE;
+ }
+ return LT_PAUSE;
+ case 7:
+ sub_81D12D8(structPtr);
+ sub_81C7BA4(10);
+ return LT_INC_AND_PAUSE;
+ case 8:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D13FC(structPtr);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ShowBg(1);
+ ShowBg(2);
+ HideBg(3);
+ sub_81C7AC0(1);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 9:
+ if (IsPaletteFadeActive())
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0C54(s32 state)
+{
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81C7AC0(0);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (IsPaletteFadeActive())
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0C84(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D11D8(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1234(structPtr))
+ {
+ sub_81D0FF0(structPtr);
+ return LT_INC_AND_CONTINUE;
+ }
+ return LT_PAUSE;
+ case 2:
+ sub_81D12D8(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 3:
+ sub_81D10D0(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 4:
+ sub_81D0E84(structPtr);
+ return LT_INC_AND_CONTINUE;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81D11FC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 6:
+ if (sub_81D1234(structPtr))
+ return LT_PAUSE;
+ return LT_FINISH;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0D2C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1448(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0EFC(structPtr);
+ sub_81C7BA4(11);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0D8C(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1500(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D1448(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0EFC(structPtr);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
+u32 sub_81D0E00(s32 state)
+{
+ struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ switch (state)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81D1500(structPtr);
+ return LT_INC_AND_PAUSE;
+ case 1:
+ if (!sub_81D1524(structPtr))
+ {
+ sub_81D0E84(structPtr);
+ sub_81C7BA4(10);
+ return LT_INC_AND_PAUSE;
+ }
+ return LT_PAUSE;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+ }
+ return LT_FINISH;
+}
+
+static const struct WindowTemplate gUnknown_08624BB8 =
+{
+ .bg = 2,
+ .tilemapLeft = 12,
+ .tilemapTop = 13,
+ .width = 16,
+ .height = 4,
+ .paletteNum = 1,
+ .baseBlock = 0x14,
+};
+
+void sub_81D0E60(struct PokenavSub14 *structPtr)
+{
+ structPtr->field_A = AddWindow(&gUnknown_08624BB8);
+ PutWindowTilemap(structPtr->field_A);
+ sub_81D0E84(structPtr);
+}
+
+void sub_81D0E84(struct PokenavSub14 *structPtr)
+{
+ u8 color[] = {4, 2, 3};
+
+ ConvertIntToDecimalStringN(gStringVar1, GetCurrMonRibbonCount(), STR_CONV_MODE_LEFT_ALIGN, 2);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_RibbonsF700);
+ FillWindowPixelBuffer(structPtr->field_A, PIXEL_FILL(4));
+ AddTextPrinterParameterized3(structPtr->field_A, 1, 0, 1, color, -1, gStringVar4);
+ CopyWindowToVram(structPtr->field_A, 2);
+}
+
+void sub_81D0EFC(struct PokenavSub14 *structPtr)
+{
+ s32 i;
+ u32 ribbonId = sub_81D0954();
+ u8 color[] = {4, 2, 3};
+
+ FillWindowPixelBuffer(structPtr->field_A, PIXEL_FILL(4));
+ if (ribbonId < 25)
+ {
+ for (i = 0; i < 2; i++)
+ AddTextPrinterParameterized3(structPtr->field_A, 1, 0, (i * 16) + 1, color, -1, gRibbonDescriptionPointers[ribbonId][i]);
+ }
+ else
+ {
+ ribbonId = gSaveBlock1Ptr->giftRibbons[ribbonId - 25];
+ if (ribbonId == 0)
+ return;
+
+ ribbonId--;
+ for (i = 0; i < 2; i++)
+ AddTextPrinterParameterized3(structPtr->field_A, 1, 0, (i * 16) + 1, color, -1, gGiftRibbonDescriptionPointers[ribbonId][i]);
+ }
+
+ CopyWindowToVram(structPtr->field_A, 2);
+}
+
+static const struct WindowTemplate gUnknown_08624BC4 =
+{
+ .bg = 2,
+ .tilemapLeft = 14,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x54,
+};
+
+void sub_81D0FCC(struct PokenavSub14 *structPtr)
+{
+ structPtr->field_8 = AddWindow(&gUnknown_08624BC4);
+ PutWindowTilemap(structPtr->field_8);
+ sub_81D0FF0(structPtr);
+}
+
+static const u8 sMaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+static const u8 sFemaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+static const u8 sGenderlessIconString[] = _("{UNK_SPACER}");
+
+void sub_81D0FF0(struct PokenavSub14 *structPtr)
+{
+ const u8 *genderTxt;
+ u8 *txtPtr;
+ u8 level, gender;
+ u16 windowId = structPtr->field_8;
+
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ GetCurrMonInfo1(gStringVar3, &level, &gender);
+ AddTextPrinterParameterized(windowId, 1, gStringVar3, 0, 1, TEXT_SPEED_FF, NULL);
+ switch (gender)
+ {
+ case MON_MALE:
+ genderTxt = sMaleIconString;
+ break;
+ case MON_FEMALE:
+ genderTxt = sFemaleIconString;
+ break;
+ default:
+ genderTxt = sGenderlessIconString;
+ break;
+ }
+
+ txtPtr = StringCopy(gStringVar1, genderTxt);
+ *(txtPtr++) = CHAR_SLASH;
+ *(txtPtr++) = CHAR_SPECIAL_F9;
+ *(txtPtr++) = 5;
+ ConvertIntToDecimalStringN(txtPtr, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ AddTextPrinterParameterized(windowId, 1, gStringVar1, 60, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(windowId, 2);
+}
+
+static const struct WindowTemplate gUnknown_08624BE8[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 0x6E,
+ },
+ {},
+};
+
+void sub_81D10A4(struct PokenavSub14 *structPtr)
+{
+ structPtr->field_C = AddWindow(gUnknown_08624BE8);
+ FillWindowPixelBuffer(structPtr->field_C, PIXEL_FILL(1));
+ PutWindowTilemap(structPtr->field_C);
+ sub_81D10D0(structPtr);
+}
+
+void sub_81D10D0(struct PokenavSub14 *structPtr)
+{
+ s32 x;
+ u8 *txtPtr;
+ u32 id = sub_81D06C4() + 1;
+ u32 count = sub_81D06D4();
+
+ txtPtr = ConvertIntToDecimalStringN(gStringVar1, id, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *(txtPtr++) = CHAR_SLASH;
+ ConvertIntToDecimalStringN(txtPtr, count, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ x = GetStringCenterAlignXOffset(1, gStringVar1, 56);
+ AddTextPrinterParameterized(structPtr->field_C, 1, gStringVar1, x, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(structPtr->field_C, 2);
+}
+
+void sub_81D1148(struct PokenavSub14 *structPtr)
+{
+ u16 species;
+ u32 personality, otId;
+
+ GetCurrMonInfo2(&species, &personality, &otId);
+ ResetAllPicSprites();
+ structPtr->field_10 = sub_81D1184(40, 104);
+ sub_81C7990(15, 0);
+}
+
+void sub_81D1178(struct PokenavSub14 *structPtr)
+{
+ FreeAndDestroyMonPicSprite(structPtr->field_10);
+}
+
+u16 sub_81D1184(s32 unused0, s32 unused1)
+{
+ u16 species, spriteId;
+ u32 personality, otId;
+
+ GetCurrMonInfo2(&species, &personality, &otId);
+ spriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 40, 104, 15, 0xFFFF);
+ gSprites[spriteId].oam.priority = 0;
+ return spriteId;
+}
+
+void sub_81D11D8(struct PokenavSub14 *structPtr)
+{
+ sub_81D1258(&gSprites[structPtr->field_10], 40, -32, 6);
+}
+
+void sub_81D11FC(struct PokenavSub14 *structPtr)
+{
+ FreeAndDestroyMonPicSprite(structPtr->field_10);
+ structPtr->field_10 = sub_81D1184(-32, 104);
+ sub_81D1258(&gSprites[structPtr->field_10], -32, 40, 6);
+}
+
+bool32 sub_81D1234(struct PokenavSub14 *structPtr)
+{
+ return (gSprites[structPtr->field_10].callback != SpriteCallbackDummy);
+}
+
+void sub_81D1258(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3)
+{
+ u32 var = arg2 - arg1;
+
+ sprite->pos1.x = arg1;
+ sprite->data[0] = arg1 << 4;
+ sprite->data[1] = (var << 4) / arg3;
+ sprite->data[2] = arg3;
+ sprite->data[3] = arg2;
+
+ sprite->callback = sub_81D1284;
+}
+
+void sub_81D1284(struct Sprite *sprite)
+{
+ if (sprite->data[2] != 0)
+ {
+ sprite->data[2]--;
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x <= -32)
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[3];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_81D12D8(struct PokenavSub14 *structPtr)
+{
+ u32 *ptr;
+
+ sub_81D1350();
+
+ ptr = sub_81D0914(&gUnknown_030012C0);
+ for (gUnknown_030012C4 = 0; gUnknown_030012C4 < gUnknown_030012C0; gUnknown_030012C4++)
+ sub_81D1370(gUnknown_030012C4, *(ptr++));
+
+ ptr = sub_81D092C(&gUnknown_030012C0);
+ for (gUnknown_030012C4 = 0; gUnknown_030012C4 < gUnknown_030012C0; gUnknown_030012C4++)
+ sub_81D1370(gUnknown_030012C4 + 27, *(ptr++));
+
+ CopyBgTilemapBufferToVram(1);
+}
+
+void sub_81D1350(void)
+{
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20);
+}
+
+void sub_81D1370(u32 arg0, u32 id)
+{
+ u16 bgData[4];
+ u32 destX = (arg0 % 9) * 2 + 11;
+ u32 destY = (arg0 / 9) * 2 + 4;
+
+ sub_81D13BC(bgData, id);
+ CopyToBgTilemapBufferRect(1, bgData, destX, destY, 2, 2);
+}
+
+struct
+{
+ u16 var0;
+ u16 var2;
+} static const gUnknown_08624BF8[] =
+{
+ {0, 0},
+ {1, 0},
+ {2, 0},
+ {3, 0},
+ {4, 0},
+ {1, 1},
+ {2, 1},
+ {3, 1},
+ {4, 1},
+ {1, 2},
+ {2, 2},
+ {3, 2},
+ {4, 2},
+ {1, 3},
+ {2, 3},
+ {3, 3},
+ {4, 3},
+ {1, 4},
+ {2, 4},
+ {3, 4},
+ {4, 4},
+ {5, 0},
+ {6, 0},
+ {7, 1},
+ {8, 2},
+ {9, 1},
+ {9, 3},
+ {9, 4},
+ {10, 3},
+ {10, 4},
+ {11, 0},
+ {11, 1},
+};
+
+void sub_81D13BC(u16 *dst, u32 id)
+{
+ u16 r3 = gUnknown_08624BF8[id].var2 + 2;
+ u16 r1 = (gUnknown_08624BF8[id].var0 * 2) + 1;
+
+ dst[0] = r1 | (r3 << 12);
+ dst[1] = r1 | (r3 << 12) |0x400;
+ dst[2] = (r1 + 1) | (r3 << 12);
+ dst[3] = (r1 + 1) | (r3 << 12) | 0x400;
+}
+
+static const struct CompressedSpriteSheet gUnknown_08624C78 =
+{
+ gUnknown_08624280, 0x1800, 9
+};
+
+static const struct SpritePalette gUnknown_08624C80[] =
+{
+ {gUnknown_08623FF8, 15},
+ {gUnknown_08624018, 16},
+ {gUnknown_08624038, 17},
+ {gUnknown_08624058, 18},
+ {gUnknown_08624078, 19},
+ {},
+};
+
+static const struct OamData sOamData_8624CB0 =
+{
+ .y = 0,
+ .affineMode = 1,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8624CB8[] =
+{
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8624CC8[] =
+{
+ AFFINEANIMCMD_FRAME(128, 128, 0, 0),
+ AFFINEANIMCMD_FRAME(32, 32, 0, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8624CE0[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-32, -32, 0, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_8624CF8[] =
+{
+ sSpriteAffineAnim_8624CB8,
+ sSpriteAffineAnim_8624CC8,
+ sSpriteAffineAnim_8624CE0
+};
+
+static const struct SpriteTemplate gUnknown_08624D04 =
+{
+ .tileTag = 9,
+ .paletteTag = 15,
+ .oam = &sOamData_8624CB0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = sSpriteAffineAnimTable_8624CF8,
+ .callback = SpriteCallbackDummy,
+};
+
+void sub_81D13FC(struct PokenavSub14 *structPtr)
+{
+ u8 spriteId;
+
+ LoadCompressedSpriteSheet(&gUnknown_08624C78);
+ Pokenav_AllocAndLoadPalettes(gUnknown_08624C80);
+
+ spriteId = CreateSprite(&gUnknown_08624D04, 0, 0, 0);
+ structPtr->field_14 = &gSprites[spriteId];
+ structPtr->field_14->invisible = TRUE;
+}
+
+void sub_81D1448(struct PokenavSub14 *structPtr)
+{
+ u32 ribbonId;
+ s32 r4 = sub_81D0944();
+ s32 r5 = (r4 % 9) * 16 + 96;
+ s32 r0 = (r4 / 9) * 16 + 40;
+
+ structPtr->field_14->pos1.x = r5;
+ structPtr->field_14->pos1.y = r0;
+
+ ribbonId = sub_81D0954();
+ structPtr->field_14->oam.tileNum = (gUnknown_08624BF8[ribbonId].var0 * 16) + GetSpriteTileStartByTag(9);
+ structPtr->field_14->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_08624BF8[ribbonId].var2 + 15);
+
+ StartSpriteAffineAnim(structPtr->field_14, 1);
+ structPtr->field_14->invisible = FALSE;
+ structPtr->field_14->data[0] = 0;
+ structPtr->field_14->callback = sub_81D1538;
+}
+
+void sub_81D1500(struct PokenavSub14 *structPtr)
+{
+ structPtr->field_14->data[0] = 1;
+ StartSpriteAffineAnim(structPtr->field_14, 2);
+ structPtr->field_14->callback = sub_81D1538;
+}
+
+bool32 sub_81D1524(struct PokenavSub14 *structPtr)
+{
+ return (structPtr->field_14->callback != SpriteCallbackDummy);
+}
+
+void sub_81D1538(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = sprite->data[0];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
diff --git a/src/pokenav_unk_2.c b/src/pokenav_unk_2.c
index a6713554f..ae15eabfb 100644
--- a/src/pokenav_unk_2.c
+++ b/src/pokenav_unk_2.c
@@ -7,6 +7,10 @@
#include "pokenav.h"
#include "graphics.h"
#include "sound.h"
+#include "gym_leader_rematch.h"
+#include "window.h"
+#include "strings.h"
+#include "scanline_effect.h"
#include "constants/songs.h"
// Match Call
@@ -29,15 +33,15 @@ struct Pokenav2Struct
struct Pokenav2Struct * sub_81C9958(void);
bool32 sub_81C99FC(void);
-u32 sub_81C9A10(int state);
-u32 sub_81C9C6C(int state);
-u32 sub_81C9CA8(int state);
-u32 sub_81C9D44(int state);
-u32 sub_81C9DD8(int state);
-u32 sub_81C9E58(int state);
-u32 sub_81C9EC8(int state);
-u32 sub_81C9EF8(int state);
-u32 sub_81C9F28(int state);
+u32 sub_81C9A10(s32 state);
+u32 sub_81C9C6C(s32 state);
+u32 sub_81C9CA8(s32 state);
+u32 sub_81C9D44(s32 state);
+u32 sub_81C9DD8(s32 state);
+u32 sub_81C9E58(s32 state);
+u32 sub_81C9EC8(s32 state);
+u32 sub_81C9EF8(s32 state);
+u32 sub_81C9F28(s32 state);
void sub_81C9FC4(void);
void sub_81C9FEC(void);
void sub_81CA02C(void);
@@ -70,6 +74,9 @@ void sub_81CA9C8(void);
void sub_81CA9D8(void);
void sub_81CAA3C(void);
+extern const u32 gPokenavOptions_Gfx[];
+extern const u16 gPokenavOptions_Pal[];
+
const u16 gUnknown_0861FC78[] = INCBIN_U16("graphics/pokenav/bg.gbapal");
const u32 gUnknown_0861FC98[] = INCBIN_U32("graphics/pokenav/bg.4bpp.lz");
const u32 gUnknown_0861FCAC[] = INCBIN_U32("graphics/pokenav/bg.bin.lz");
@@ -119,41 +126,200 @@ const LoopedTask gUnknown_086201A0[] = {
sub_81C9F28
};
-const struct CompressedSpriteSheet gUnknown_086201C4[] = {
- {gPokenavOptions_Gfx, 0x3400, 0x0003},
- {gUnknown_08620124, 0x0100, 0x0001}
+const struct CompressedSpriteSheet gUnknown_086201C4[] =
+{
+ {
+ .data = gPokenavOptions_Gfx,
+ .size = 0x3400,
+ .tag = 0x0003
+ },
+ {
+ .data = gUnknown_08620124,
+ .size = 0x0100,
+ .tag = 0x0001
+ }
};
-const struct SpritePalette gUnknown_086201D4[] = {
+const struct SpritePalette gUnknown_086201D4[] =
+{
{gPokenavOptions_Pal + 0x00, 4},
{gPokenavOptions_Pal + 0x10, 5},
{gPokenavOptions_Pal + 0x20, 6},
{gPokenavOptions_Pal + 0x30, 7},
{gPokenavOptions_Pal + 0x40, 8},
{gUnknown_08620104, 3},
- {NULL, 0}
+ {}
};
+const u16 gUnknown_0862020C[] = {0, 0};
+const u16 gUnknown_08620210[] = {0x20, 1};
+const u16 gUnknown_08620214[] = {0x40, 4};
+const u16 gUnknown_08620218[] = {0x60, 2};
+const u16 gUnknown_0862021C[] = {0x80, 3};
+const u16 gUnknown_08620220[] = {0xA0, 1};
+const u16 gUnknown_08620224[] = {0xC0, 1};
+const u16 gUnknown_08620228[] = {0xE0, 4};
+const u16 gUnknown_0862022C[] = {0x100, 1};
+const u16 gUnknown_08620230[] = {0x120, 2};
+const u16 gUnknown_08620234[] = {0x140, 0};
+const u16 gUnknown_08620238[] = {0x160, 0};
+const u16 gUnknown_0862023C[] = {0x180, 3};
+
struct UnkStruct_08620240
{
- u16 field_0;
- u16 field_2;
- const u16 *field_4[6];
+ u16 unk0;
+ u16 unk2;
+ const u16 *unk4[6];
};
-extern const struct UnkStruct_08620240 gUnknown_08620240[];
+const struct UnkStruct_08620240 gUnknown_08620240[5] =
+{
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C, NULL, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C, NULL}
+ },
+ {
+ 0x38,
+ 0x14,
+ {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C, NULL, NULL, NULL}
+ },
+ {
+ 0x28,
+ 0x10,
+ {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C}
+ },
+};
+
+const struct WindowTemplate gUnknown_086202CC =
+{
+ .bg = 1,
+ .tilemapLeft = 3,
+ .tilemapTop = 17,
+ .width = 0x18,
+ .height = 0x2,
+ .paletteNum = 1,
+ .baseBlock = 8
+};
+
+const u8 *const gUnknown_086202D4[] =
+{
+ gUnknown_085EBCC5,
+ gUnknown_085EBCE8,
+ gUnknown_085EBD01,
+ gUnknown_085EBD1C,
+ gUnknown_085EBD34,
+ gUnknown_085EBD83,
+ gUnknown_085EBDA2,
+ gUnknown_085EBDBF,
+ gUnknown_085EBDDB,
+ gUnknown_085EBDEE,
+ gUnknown_085EBE06,
+ gUnknown_085EBE19,
+ gUnknown_085EBE2D,
+ gUnknown_085EBE41
+};
+
+const u8 gUnknown_0862030C[] = {6, 8, 7};
-extern const struct SpriteTemplate gUnknown_0862034C;
+const u8 gUnknown_0862030F[] = {6, 8, 7, 0, 0};
+
+const struct OamData gUnknown_08620314 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const union AffineAnimCmd gUnknown_0862031C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0862032C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0x12),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08620344[] =
+{
+ gUnknown_0862031C,
+ gUnknown_0862032C
+};
+
+const struct SpriteTemplate gUnknown_0862034C =
+{
+ .tileTag = 3,
+ .paletteTag = 4,
+ .oam = &gUnknown_08620314,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08620344,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gUnknown_08620364 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_0862036C =
+{
+ .tileTag = 1,
+ .paletteTag = 3,
+ .oam = &gUnknown_08620364,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct ScanlineEffectParams gUnknown_08620384 =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1,
+ 0
+};
bool32 sub_81C98D4(void)
{
s32 i;
- for (i = 0; i < 78; i++)
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
{
if (sub_81CB0C8(i) == gMapHeader.regionMapSectionId
- && sub_81CAE08(i)
- && gSaveBlock1Ptr->trainerRematches[i])
+ && sub_81CAE08(i)
+ && gSaveBlock1Ptr->trainerRematches[i])
return TRUE;
}
@@ -230,7 +396,7 @@ bool32 sub_81C99FC(void)
return IsLoopedTaskActive(unk->loopedTaskId);
}
-u32 sub_81C9A10(int state)
+u32 sub_81C9A10(s32 state)
{
struct Pokenav2Struct * unk = GetSubstructPtr(2);
@@ -337,7 +503,7 @@ u32 sub_81C9A10(int state)
return 4;
}
-u32 sub_81C9C6C(int state)
+u32 sub_81C9C6C(s32 state)
{
switch (state)
{
@@ -357,7 +523,7 @@ u32 sub_81C9C6C(int state)
return 4;
}
-u32 sub_81C9CA8(int state)
+u32 sub_81C9CA8(s32 state)
{
switch (state)
{
@@ -396,7 +562,7 @@ u32 sub_81C9CA8(int state)
return 4;
}
-u32 sub_81C9D44(int state)
+u32 sub_81C9D44(s32 state)
{
switch (state)
{
@@ -434,7 +600,7 @@ u32 sub_81C9D44(int state)
return 4;
}
-u32 sub_81C9DD8(int state)
+u32 sub_81C9DD8(s32 state)
{
switch (state)
{
@@ -467,7 +633,7 @@ u32 sub_81C9DD8(int state)
return 4;
}
-u32 sub_81C9E58(int state)
+u32 sub_81C9E58(s32 state)
{
switch (state)
{
@@ -498,7 +664,7 @@ u32 sub_81C9E58(int state)
return 4;
}
-u32 sub_81C9EC8(int state)
+u32 sub_81C9EC8(s32 state)
{
switch (state)
{
@@ -514,7 +680,7 @@ u32 sub_81C9EC8(int state)
return 4;
}
-u32 sub_81C9EF8(int state)
+u32 sub_81C9EF8(s32 state)
{
switch (state)
{
@@ -530,7 +696,7 @@ u32 sub_81C9EF8(int state)
return 4;
}
-u32 sub_81C9F28(int state)
+u32 sub_81C9F28(s32 state)
{
switch (state)
{
@@ -629,7 +795,7 @@ void sub_81CA094(void)
void sub_81CA0C8(void)
{
s32 r0 = sub_81C9894();
- sub_81CA0EC(gUnknown_08620240[r0].field_4, gUnknown_08620240[r0].field_0, gUnknown_08620240[r0].field_2);
+ sub_81CA0EC(gUnknown_08620240[r0].unk4, gUnknown_08620240[r0].unk0, gUnknown_08620240[r0].unk2);
}
void sub_81CA0EC(const u16 *const *a0, s32 a1, s32 a2)
@@ -752,6 +918,7 @@ bool32 sub_81CA324(void)
return FALSE;
}
+#ifdef NONMATCHING
void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3)
{
s32 i;
@@ -766,3 +933,51 @@ void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3)
sprites[i]->callback = sub_81CA474;
}
}
+#else
+NAKED
+void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tadds r4, r0, 0\n"
+ "\tadds r5, r1, 0\n"
+ "\tmov r9, r2\n"
+ "\tadds r6, r3, 0\n"
+ "\tldr r0, =sub_81CA474\n"
+ "\tmov r8, r0\n"
+ "\tsubs r0, r2, r5\n"
+ "\tlsls r0, 4\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl __divsi3\n"
+ "\tadds r3, r0, 0\n"
+ "\tmovs r1, 0x3\n"
+ "\tlsls r2, r5, 4\n"
+ "_081CA380:\n"
+ "\tldr r0, [r4]\n"
+ "\tstrh r5, [r0, 0x20]\n"
+ "\tldr r0, [r4]\n"
+ "\tstrh r6, [r0, 0x2E]\n"
+ "\tldr r0, [r4]\n"
+ "\tstrh r3, [r0, 0x30]\n"
+ "\tldr r0, [r4]\n"
+ "\tstrh r2, [r0, 0x32]\n"
+ "\tldr r0, [r4]\n"
+ "\tmov r7, r9\n"
+ "\tstrh r7, [r0, 0x3C]\n"
+ "\tldm r4!, {r0}\n"
+ "\tmov r7, r8\n"
+ "\tstr r7, [r0, 0x1C]\n"
+ "\tsubs r1, 0x1\n"
+ "\tcmp r1, 0\n"
+ "\tbge _081CA380\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif //NONMATCHING
diff --git a/src/pokenav_unk_3.c b/src/pokenav_unk_3.c
index dfef062df..9b62bea78 100755
--- a/src/pokenav_unk_3.c
+++ b/src/pokenav_unk_3.c
@@ -34,12 +34,13 @@ static u32 sub_81CABFC(struct Pokenav3Struct *);
static u32 sub_81CAC04(struct Pokenav3Struct *);
static u32 sub_81CACB8(struct Pokenav3Struct *);
static u32 sub_81CACF8(struct Pokenav3Struct *);
-static u32 sub_81CAD20(int);
+static u32 sub_81CAD20(s32);
static bool32 sub_81CB1D0(void);
-extern const u8 gUnknown_08622508[];
-extern const u8 gUnknown_0862250A[];
-extern const u8 *const gUnknown_08622028[][4];
+#include "data/text/match_call_messages.h"
+
+const u8 gUnknown_08622508[] = {0, 2};
+const u8 gUnknown_0862250A[] = {0, 1, 2};
bool32 sub_81CAAE8(void)
{
@@ -190,7 +191,7 @@ static u32 sub_81CACF8(struct Pokenav3Struct *state)
return 0;
}
-static u32 sub_81CAD20(int taskState)
+static u32 sub_81CAD20(s32 taskState)
{
int i, j;
struct Pokenav3Struct *state = GetSubstructPtr(5);
@@ -207,7 +208,7 @@ static u32 sub_81CAD20(int taskState)
{
state->unk1C[state->unkA].unk2 = j;
state->unk1C[state->unkA].unk0 = 1;
- state->unk1C[state->unkA].unk1 = sub_81D16DC(j);
+ state->unk1C[state->unkA].unk1 = MatchCallMapSecGetByIndex(j);
state->unkA++;
}
@@ -282,7 +283,7 @@ int unref_sub_81CAE6C(int arg0)
arg0 += state->unkC;
if (arg0 >= state->unkA)
return REMATCH_TABLE_ENTRIES;
-
+
return state->unk1C[arg0].unk2;
}
@@ -321,7 +322,7 @@ int sub_81CAF04(int index)
index = GetTrainerIdxByRematchIdx(state->unk1C[index].unk2);
return gTrainers[index].trainerPic;
}
-
+
var0 = state->unk1C[index].unk2;
index = MatchCall_GetRematchTableIdx(var0);
if (index != REMATCH_TABLE_ENTRIES)
@@ -364,7 +365,7 @@ const u8 *sub_81CAFD8(int index, int textType)
var0 = state->unk1C[index].unk2;
}
- return gUnknown_08622028[var0][textType];
+ return gMatchCallMessages[var0][textType];
}
u16 sub_81CB01C(void)
diff --git a/src/pokenav_unk_4.c b/src/pokenav_unk_4.c
index 6fa76daf2..93dab4491 100755
--- a/src/pokenav_unk_4.c
+++ b/src/pokenav_unk_4.c
@@ -50,7 +50,7 @@ struct Pokenav4Struct
};
static bool32 sub_81CB310(void);
-static u32 sub_81CB324(int);
+static u32 sub_81CB324(s32);
static void sub_81CBBB8(void);
static void sub_81CBC1C(void);
static void sub_81CC2B4(void);
@@ -93,27 +93,191 @@ static void sub_81CC330(struct Pokenav4Struct *);
static struct Sprite *sub_81CC370(void);
static void sub_81CC440(struct Sprite *sprite);
static void sub_81CC4A4(struct Sprite *sprite);
+void sub_81CC34C(struct Sprite *sprite);
+u32 sub_81CB510(s32);
+u32 sub_81CB588(s32);
+u32 sub_81CB600(s32);
+u32 sub_81CB678(s32);
+u32 sub_81CB6F0(s32);
+u32 sub_81CB734(s32);
+u32 sub_81CB75C(s32);
+u32 sub_81CB7A0(s32);
+u32 sub_81CB824(s32);
+u32 sub_81CB888(s32);
+u32 sub_81CB93C(s32);
+u32 sub_81CBAD4(s32);
+u32 sub_81CB9C8(s32);
+u32 sub_81CBA68(s32);
+u32 sub_81CBB74(s32);
-extern const LoopedTask gUnknown_08622798[];
-extern const struct BgTemplate gUnknown_0862278C[3];
-extern const u16 gUnknown_08622510[];
-extern const u32 gUnknown_08622530[];
-extern const u32 gUnknown_08622760[];
-extern const u16 gUnknown_08622700[];
-extern const u16 gUnknown_08622720[];
-extern const u8 gUnknown_086225D4[];
-extern const u16 gUnknown_086226E0[];
-extern const struct BgTemplate gUnknown_08622794;
-extern const struct WindowTemplate gUnknown_086227D8;
-extern const struct WindowTemplate gUnknown_086227E0;
-extern const u8 *const gUnknown_086227E8[];
extern const struct WindowTemplate gUnknown_08622808;
-extern const u8 gUnknown_086227F4[];
-extern const struct CompressedSpriteSheet gUnknown_08622810[1];
-extern const struct SpritePalette gUnknown_08622818[];
extern const struct SpriteTemplate gUnknown_08622830;
extern const struct SpriteTemplate gUnknown_08622850;
+const u16 gUnknown_08622510[] = INCBIN_U16("graphics/pokenav/ui_matchcall.gbapal");
+const u32 gUnknown_08622530[] = INCBIN_U32("graphics/pokenav/ui_matchcall.4bpp.lz");
+const u32 gUnknown_086225D4[] = INCBIN_U32("graphics/pokenav/ui_matchcall.bin.lz");
+const u16 gUnknown_08622698[] = INCBIN_U16("graphics/pokenav/arrow2.gbapal");
+const u32 gUnknown_086226B8[] = INCBIN_U32("graphics/pokenav/arrow2.4bpp.lz");
+const u16 gUnknown_086226E0[] = INCBIN_U16("graphics/pokenav/86226E0.gbapal");
+const u16 gUnknown_08622700[] = INCBIN_U16("graphics/pokenav/8622700.gbapal");
+const u16 gUnknown_08622720[] = INCBIN_U16("graphics/pokenav/pokeball_matchcall.gbapal");
+const u32 gUnknown_08622760[] = INCBIN_U32("graphics/pokenav/pokeball_matchcall.4bpp.lz");
+
+const struct BgTemplate gUnknown_0862278C[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const LoopedTask gUnknown_08622798[] =
+{
+ NULL,
+ sub_81CB510,
+ sub_81CB588,
+ sub_81CB600,
+ sub_81CB678,
+ sub_81CB6F0,
+ sub_81CB734,
+ sub_81CB75C,
+ sub_81CB7A0,
+ sub_81CB824,
+ sub_81CB888,
+ sub_81CB93C,
+ sub_81CBAD4,
+ sub_81CB9C8,
+ sub_81CBA68,
+ sub_81CBB74
+};
+
+const struct WindowTemplate gUnknown_086227D8 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 5,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 16
+};
+
+const struct WindowTemplate gUnknown_086227E0 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 9,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 2,
+ .baseBlock = 38
+};
+
+const u8 *const gUnknown_086227E8[] =
+{
+ gUnknown_085EC017,
+ gUnknown_085EC01C,
+ gUnknown_085EC022
+};
+
+const u8 gUnknown_086227F4[] = _("·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·\p");
+
+const struct WindowTemplate gUnknown_08622808 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 12,
+ .width = 0x1C,
+ .height = 0x04,
+ .paletteNum = 1,
+ .baseBlock = 10
+};
+
+const struct CompressedSpriteSheet gUnknown_08622810[1] =
+{
+ {gUnknown_086226B8, 0x40, 7}
+};
+
+const struct SpritePalette gUnknown_08622818[] =
+{
+ {gUnknown_08622698, 12},
+ {}
+};
+
+const struct OamData gUnknown_08622828 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622830 =
+{
+ .tileTag = 7,
+ .paletteTag = 12,
+ .oam = &gUnknown_08622828,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CC34C,
+};
+
+const struct OamData gUnknown_08622848 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622850 =
+{
+ .tileTag = 8,
+ .paletteTag = 13,
+ .oam = &gUnknown_08622848,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
bool32 sub_81CB260(void)
{
struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
@@ -156,7 +320,7 @@ static bool32 sub_81CB310(void)
return IsLoopedTaskActive(state->unk4);
}
-static u32 sub_81CB324(int taskState)
+static u32 sub_81CB324(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -229,7 +393,7 @@ static u32 sub_81CB324(int taskState)
}
}
-u32 sub_81CB510(int taskState)
+u32 sub_81CB510(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -266,7 +430,7 @@ u32 sub_81CB510(int taskState)
return 4;
}
-u32 sub_81CB588(int taskState)
+u32 sub_81CB588(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -303,7 +467,7 @@ u32 sub_81CB588(int taskState)
return 4;
}
-u32 sub_81CB600(int taskState)
+u32 sub_81CB600(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -340,7 +504,7 @@ u32 sub_81CB600(int taskState)
return 4;
}
-u32 sub_81CB678(int taskState)
+u32 sub_81CB678(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -377,7 +541,7 @@ u32 sub_81CB678(int taskState)
return 4;
}
-u32 sub_81CB6F0(int taskState)
+u32 sub_81CB6F0(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -396,7 +560,7 @@ u32 sub_81CB6F0(int taskState)
return 4;
}
-u32 sub_81CB734(int taskState)
+u32 sub_81CB734(s32 taskState)
{
struct Pokenav4Struct *state;
u16 var0;
@@ -408,7 +572,7 @@ u32 sub_81CB734(int taskState)
return 4;
}
-u32 sub_81CB75C(int taskState)
+u32 sub_81CB75C(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -427,7 +591,7 @@ u32 sub_81CB75C(int taskState)
return 4;
}
-u32 sub_81CB7A0(int taskState)
+u32 sub_81CB7A0(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -459,7 +623,7 @@ u32 sub_81CB7A0(int taskState)
return 4;
}
-u32 sub_81CB824(int taskState)
+u32 sub_81CB824(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -485,7 +649,7 @@ u32 sub_81CB824(int taskState)
return 4;
}
-u32 sub_81CB888(int taskState)
+u32 sub_81CB888(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
u32 result = 0;
@@ -549,7 +713,7 @@ u32 sub_81CB888(int taskState)
return result;
}
-u32 sub_81CB93C(int taskState)
+u32 sub_81CB93C(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -578,7 +742,7 @@ u32 sub_81CB93C(int taskState)
return 4;
}
-u32 sub_81CB9C8(int taskState)
+u32 sub_81CB9C8(s32 taskState)
{
int index;
int var0;
@@ -617,7 +781,7 @@ u32 sub_81CB9C8(int taskState)
return 4;
}
-u32 sub_81CBA68(int taskState)
+u32 sub_81CBA68(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -643,7 +807,7 @@ u32 sub_81CBA68(int taskState)
return 4;
}
-u32 sub_81CBAD4(int taskState)
+u32 sub_81CBAD4(s32 taskState)
{
int index;
int var0;
@@ -682,7 +846,7 @@ u32 sub_81CBAD4(int taskState)
return 4;
}
-u32 sub_81CBB74(int taskState)
+u32 sub_81CBB74(s32 taskState)
{
switch (taskState)
{
@@ -718,7 +882,7 @@ static void sub_81CBBB8(void)
template.unkE = 7;
template.unk10 = sub_81CB050;
template.unk14 = sub_81CBCEC;
- sub_81C81D4(&gUnknown_08622794, &template, 2);
+ sub_81C81D4(&gUnknown_0862278C[2], &template, 2);
CreateTask(sub_81CBC64, 7);
}
diff --git a/src/pokenav_unk_5.c b/src/pokenav_unk_5.c
index eccc200d5..ccab58078 100755
--- a/src/pokenav_unk_5.c
+++ b/src/pokenav_unk_5.c
@@ -32,18 +32,18 @@ struct Pokenav5Struct_2
u8 cityZoomPics[22][0xC8];
};
-struct CityZoomPic
+struct CityMapEntry
{
u16 mapSecId;
- u16 unk2;
- const u32 *data;
+ u16 index;
+ const u32 *tilemap;
};
static u32 sub_81CC568(struct Pokenav5Struct *);
static u32 sub_81CC5B4(struct Pokenav5Struct *);
static u32 sub_81CC5DC(struct Pokenav5Struct *);
-static u32 sub_81CC6F4(int);
-static u32 sub_81CCD34(int);
+static u32 sub_81CC6F4(s32);
+static u32 sub_81CCD34(s32);
static bool32 sub_81CC6BC(void);
static void sub_81CC9EC(void);
static void sub_81CC9C0(void);
@@ -61,17 +61,110 @@ static void sub_81CCDE8(struct Pokenav5Struct_2 *, int, int);
static void sub_81CCFA4(int);
static void sub_81CCC9C(u8 taskId);
static void sub_81CCF78(void);
+void sub_81CCEF4(struct Sprite *sprite);
+u32 sub_81CC848(s32);
+u32 sub_81CC878(s32);
+u32 sub_81CC8D8(s32);
+u32 sub_81CC95C(s32);
-extern const LoopedTask gUnknown_086230E4[];
-extern const struct BgTemplate gUnknown_086230D8[2];
-extern const struct CompressedSpriteSheet gUnknown_086230F8[1];
-extern const struct SpritePalette gUnknown_08623100[];
-extern const struct WindowTemplate gUnknown_08623110;
-extern const u32 gUnknown_08622888[];
-extern const u16 gUnknown_08622868[];
extern const u16 gHoennMapZoomIcons_Pal[];
-extern const struct CityZoomPic gUnknown_08623118[22];
extern const struct SpriteTemplate gUnknown_086231D0;
+extern const u32 gHoennMapZoomIcons_Gfx[];
+
+const u16 gUnknown_08622868[] = INCBIN_U16("graphics/pokenav/8622868.gbapal");
+const u32 gUnknown_08622888[] = INCBIN_U32("graphics/pokenav/zoom_tiles.4bpp.lz");
+
+#include "data/region_map/city_map_tilemaps.h"
+
+
+const struct BgTemplate gUnknown_086230D8[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x00,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+const LoopedTask gUnknown_086230E4[] =
+{
+ NULL,
+ sub_81CC848,
+ sub_81CC878,
+ sub_81CC8D8,
+ sub_81CC95C
+};
+
+const struct CompressedSpriteSheet gUnknown_086230F8[1] =
+{
+ {gHoennMapZoomIcons_Gfx, 0x800, 6}
+};
+
+const struct SpritePalette gUnknown_08623100[] =
+{
+ {gHoennMapZoomIcons_Pal, 11},
+ {}
+};
+
+const struct WindowTemplate gUnknown_08623110 =
+{
+ .bg = 1,
+ .tilemapLeft = 17,
+ .tilemapTop = 4,
+ .width = 12,
+ .height = 13,
+ .paletteNum = 1,
+ .baseBlock = 0x4C
+};
+
+#include "data/region_map/city_map_entries.h"
+
+const struct OamData gUnknown_086231C8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_086231D0 =
+{
+ .tileTag = 6,
+ .paletteTag = 11,
+ .oam = &gUnknown_086231C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CCEF4,
+};
u32 sub_81CC4D4(void)
{
@@ -202,7 +295,7 @@ static bool8 sub_81CC6D0(void)
return gSaveBlock2Ptr->regionMapZoom == 1;
}
-static u32 sub_81CC6F4(int taskState)
+static u32 sub_81CC6F4(s32 taskState)
{
int var0;
struct RegionMap *regionMap;
@@ -215,7 +308,7 @@ static u32 sub_81CC6F4(int taskState)
HideBg(2);
HideBg(3);
SetBgMode(1);
- InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8));
+ InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8) - 1);
regionMap = GetSubstructPtr(16);
sub_8122CF8(regionMap, &gUnknown_086230D8[1], sub_81CC6D0());
sub_81CC9C0();
@@ -278,7 +371,7 @@ static u32 sub_81CC6F4(int taskState)
}
}
-u32 sub_81CC848(int taskState)
+u32 sub_81CC848(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
@@ -295,7 +388,7 @@ u32 sub_81CC848(int taskState)
return 4;
}
-u32 sub_81CC878(int taskState)
+u32 sub_81CC878(s32 taskState)
{
switch (taskState)
{
@@ -321,7 +414,7 @@ u32 sub_81CC878(int taskState)
return 4;
}
-u32 sub_81CC8D8(int taskState)
+u32 sub_81CC8D8(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
@@ -354,7 +447,7 @@ u32 sub_81CC8D8(int taskState)
return 4;
}
-u32 sub_81CC95C(int taskState)
+u32 sub_81CC95C(s32 taskState)
{
switch (taskState)
{
@@ -518,12 +611,12 @@ static bool32 sub_81CCD24(void)
return FuncIsActiveLoopedTask(sub_81CCD34);
}
-static u32 sub_81CCD34(int taskState)
+static u32 sub_81CCD34(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- if (taskState < (int)ARRAY_COUNT(gUnknown_08623118))
+ if (taskState < (int)ARRAY_COUNT(gPokenavCityMaps))
{
- LZ77UnCompWram(gUnknown_08623118[taskState].data, state->cityZoomPics[taskState]);
+ LZ77UnCompWram(gPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
return 1;
}
@@ -533,10 +626,10 @@ static u32 sub_81CCD34(int taskState)
static void sub_81CCD70(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
{
int i;
- for (i = 0; i < (int)ARRAY_COUNT(gUnknown_08623118) && (gUnknown_08623118[i].mapSecId != mapSecId || gUnknown_08623118[i].unk2 != pos); i++)
+ for (i = 0; i < (int)ARRAY_COUNT(gPokenavCityMaps) && (gPokenavCityMaps[i].mapSecId != mapSecId || gPokenavCityMaps[i].index != pos); i++)
;
- if (i == ARRAY_COUNT(gUnknown_08623118))
+ if (i == ARRAY_COUNT(gPokenavCityMaps))
return;
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
diff --git a/src/pokenav_unk_6.c b/src/pokenav_unk_6.c
new file mode 100644
index 000000000..638884d3f
--- /dev/null
+++ b/src/pokenav_unk_6.c
@@ -0,0 +1,625 @@
+#include "global.h"
+#include "data.h"
+#include "decompress.h"
+#include "main.h"
+#include "menu_specialized.h"
+#include "mon_markings.h"
+#include "pokenav.h"
+#include "pokemon.h"
+#include "pokemon_storage_system.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct PokenavSub11
+{
+ u32 monPal[3][0x20];
+ u8 fill[0x180];
+ u32 monPicGfx[3][0x800];
+ u8 unk6300;
+ s16 unk6302;
+ u32 (*unk6304)(struct PokenavSub11 *);
+ u8 fill2[0x6320 - 0x6308];
+ u8 unk6320[3][24];
+ u8 unk6368[3][64];
+ struct UnknownStruct_81D1ED4 unk6428;
+ u8 unk6780[3];
+ u8 unk6783[3];
+ s8 unk6786;
+ s8 unk6787;
+ s8 unk6788;
+ s8 unk6789;
+ u8 unk678A;
+};
+
+void sub_81CD970(void);
+void sub_81CD9F8(void);
+u32 sub_81CD08C(struct PokenavSub11 *structPtr);
+u32 sub_81CD19C(struct PokenavSub11 *structPtr);
+u32 sub_81CD110(struct PokenavSub11 *structPtr);
+u8 sub_81CD1E4(struct PokenavSub11 *structPtr);
+u8 sub_81CD258(u8 arg0);
+void sub_81CD824(s16 arg0, u8 arg1);
+void sub_81CDA1C(s16 arg0, u8 arg1);
+void sub_81CDB98(s16 arg0, u8 arg1);
+
+// code
+bool32 sub_81CCFD8(void)
+{
+ struct PokenavSub11 *structPtr = AllocSubstruct(11, sizeof(struct PokenavSub11));
+
+ if (structPtr == NULL)
+ return FALSE;
+
+ sub_81D1ED4(&structPtr->unk6428);
+ sub_81CD970();
+ gKeyRepeatStartDelay = 20;
+ structPtr->unk6304 = sub_81CD08C;
+ return TRUE;
+}
+
+bool32 sub_81CD024(void)
+{
+ struct PokenavSub11 *structPtr = AllocSubstruct(11, sizeof(struct PokenavSub11));
+
+ if (structPtr == NULL)
+ return FALSE;
+
+ sub_81D1ED4(&structPtr->unk6428);
+ sub_81CD9F8();
+ gKeyRepeatStartDelay = 20;
+ structPtr->unk6304 = sub_81CD08C;
+ return TRUE;
+}
+
+u32 sub_81CD070(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+
+ return structPtr->unk6304(structPtr);
+}
+
+u32 sub_81CD08C(struct PokenavSub11 *structPtr)
+{
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ u32 ret = sub_81CD1E4(structPtr);
+
+ if (ret == 0)
+ {
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ structPtr->unk6304 = sub_81CD19C;
+ ret = 2;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (structPtr->unk6300 == 0)
+ {
+ if (unkPtr->unk2 == unkPtr->unk0 - 1)
+ {
+ PlaySE(SE_SELECT);
+ structPtr->unk6304 = sub_81CD19C;
+ ret = 2;
+ }
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ ret = 5;
+ structPtr->unk6304 = sub_81CD110;
+ }
+ }
+ }
+
+ return ret;
+}
+
+u32 sub_81CD110(struct PokenavSub11 *structPtr)
+{
+ struct PokenavSub18 *unkPtr;
+ u8 markings;
+ u32 ret = 0, boxId, monId;
+
+ if (!sub_811FBA4())
+ {
+ structPtr->unk6783[structPtr->unk6786] = sub_81CEF14();
+ unkPtr = GetSubstructPtr(18);
+ boxId = unkPtr->unk4[unkPtr->unk2].boxId;
+ monId = unkPtr->unk4[unkPtr->unk2].monId;
+ markings = structPtr->unk6783[structPtr->unk6786];
+
+ if (boxId == TOTAL_BOXES_COUNT)
+ SetMonData(&gPlayerParty[monId], MON_DATA_MARKINGS, &markings);
+ else
+ SetBoxMonDataAt(boxId, monId, MON_DATA_MARKINGS, &markings);
+
+ structPtr->unk6304 = sub_81CD08C;
+ ret = 6;
+ }
+
+ return ret;
+}
+
+u32 sub_81CD19C(struct PokenavSub11 *structPtr)
+{
+ if (structPtr->unk6300 == 0)
+ return 0x186A2;
+ else
+ return 0x186AA;
+}
+
+void sub_81CD1C0(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ if (structPtr->unk6300 == 0)
+ FreePokenavSubstruct(18);
+
+ FreePokenavSubstruct(11);
+}
+
+u8 sub_81CD1E4(struct PokenavSub11 *structPtr)
+{
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ u8 ret = 0;
+
+ if (gMain.heldKeys & DPAD_UP)
+ {
+ if (structPtr->unk6300 == 0 || unkPtr->unk2 != 0)
+ {
+ PlaySE(SE_SELECT);
+ ret = sub_81CD258(1);
+ }
+ }
+ else if (gMain.heldKeys & DPAD_DOWN)
+ {
+ if (structPtr->unk6300 == 0 || unkPtr->unk2 < unkPtr->unk0 - 1)
+ {
+ PlaySE(SE_SELECT);
+ ret = sub_81CD258(0);
+ }
+ }
+
+ return ret;
+}
+
+u8 sub_81CD258(u8 arg0)
+{
+ u16 r7;
+ bool8 r6, r0;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ r7 = (arg0) ? structPtr->unk6788 : structPtr->unk6787;
+ sub_81D1F84(&structPtr->unk6428, structPtr->unk6428.unk14[structPtr->unk6786], structPtr->unk6428.unk14[r7]);
+ r6 = (unkPtr->unk2 != ((sub_81CDD5C() != 0) ? unkPtr->unk0 : unkPtr->unk0 - 1));
+ if (arg0)
+ {
+ structPtr->unk6788 = structPtr->unk6787;
+ structPtr->unk6787 = structPtr->unk6786;
+ structPtr->unk6786 = r7;
+ structPtr->unk6789 = structPtr->unk6788;
+
+ unkPtr->unk2 = (unkPtr->unk2 == 0) ? unkPtr->unk0 - 1 : unkPtr->unk2 - 1;
+ structPtr->unk6302 = (unkPtr->unk2 != 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1;
+ }
+ else
+ {
+ structPtr->unk6787 = structPtr->unk6788;
+ structPtr->unk6788 = structPtr->unk6786;
+ structPtr->unk6786 = r7;
+ structPtr->unk6789 = structPtr->unk6787;
+
+ unkPtr->unk2 = (unkPtr->unk2 < unkPtr->unk0 - 1) ? unkPtr->unk2 + 1 : 0;
+ structPtr->unk6302 = (unkPtr->unk2 < unkPtr->unk0 - 1) ? unkPtr->unk2 + 1 : 0;
+ }
+
+ r0 = (unkPtr->unk2 != ((sub_81CDD5C() != 0) ? unkPtr->unk0 : unkPtr->unk0 - 1));
+
+ if (!r6)
+ return 3;
+ else if (!r0)
+ return 4;
+ else
+ return 1;
+}
+
+bool32 sub_81CD3C4(void)
+{
+ s32 var;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ switch (structPtr->unk678A)
+ {
+ case 0:
+ sub_81CD824(unkPtr->unk2, 0);
+ break;
+ case 1:
+ sub_81CDA1C(unkPtr->unk2, 0);
+ break;
+ case 2:
+ sub_81CDB98(unkPtr->unk2, 0);
+ break;
+ case 3:
+ if (unkPtr->unk0 == 1)
+ {
+ structPtr->unk6786 = 0;
+ structPtr->unk6787 = 0;
+ structPtr->unk6788 = 0;
+ structPtr->unk678A = 0;
+ return TRUE;
+ }
+ else
+ {
+ structPtr->unk6786 = 0;
+ structPtr->unk6787 = 1;
+ structPtr->unk6788 = 2;
+ }
+ break;
+ // These were probably ternaries just like cases 7-9, but couldn't match it any other way.
+ case 4:
+ var = unkPtr->unk2 + 1;
+ if (var >= unkPtr->unk0)
+ var = 0;
+ sub_81CD824(var, 1);
+ break;
+ case 5:
+ var = unkPtr->unk2 + 1;
+ if (var >= unkPtr->unk0)
+ var = 0;
+ sub_81CDA1C(var, 1);
+ break;
+ case 6:
+ var = unkPtr->unk2 + 1;
+ if (var >= unkPtr->unk0)
+ var = 0;
+ sub_81CDB98(var, 1);
+ break;
+ case 7:
+ sub_81CD824((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
+ break;
+ case 8:
+ sub_81CDA1C((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
+ break;
+ case 9:
+ sub_81CDB98((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
+ structPtr->unk678A = 0;
+ return TRUE;
+ }
+
+ structPtr->unk678A++;
+ return FALSE;
+}
+
+bool32 sub_81CD548(u8 arg0)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+
+ switch (arg0)
+ {
+ case 0:
+ sub_81CD824(structPtr->unk6302, structPtr->unk6789);
+ break;
+ case 1:
+ sub_81CDA1C(structPtr->unk6302, structPtr->unk6789);
+ break;
+ case 2:
+ sub_81CDB98(structPtr->unk6302, structPtr->unk6789);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u8 *sub_81CD5CC(u8 *dst, const u8 *src, s16 n)
+{
+ while (*src != EOS)
+ *dst++ = *src++, n--;
+
+ while (n-- > 0)
+ *dst++ = CHAR_SPACE;
+
+ *dst = EOS;
+ return dst;
+}
+
+u8 *sub_81CD624(u8 *str, u16 id, bool8 arg3)
+{
+ u16 boxId, monId, gender, species, level, lvlDigits;
+ struct BoxPokemon *boxMon;
+ u8 *txtPtr, *str_;
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ boxId = unkPtr->unk4[id].boxId;
+ monId = unkPtr->unk4[id].monId;
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = 4;
+ *(str++) = 8;
+ *(str++) = 0;
+ *(str++) = 9;
+
+ if (GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL))
+ return StringCopyPadded(str, gText_EggNickname, CHAR_SPACE, 12);
+
+ GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, str);
+ StringGetEnd10(str);
+ species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
+ if (boxId == TOTAL_BOXES_COUNT)
+ {
+ level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ gender = GetMonGender(&gPlayerParty[monId]);
+ }
+ else
+ {
+ boxMon = GetBoxedMonPtr(boxId, monId);
+ gender = GetBoxMonGender(boxMon);
+ level = GetLevelFromBoxMonExp(boxMon);
+ }
+
+ if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(str, gSpeciesNames[species]))
+ gender = MON_GENDERLESS;
+
+ str_ = str; // For some reason, a variable is needed to match.
+ while (*str_ != EOS)
+ *(str_++);
+
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = 0x12;
+ *(str_++) = 0x3C;
+ switch (gender)
+ {
+ default:
+ *(str_++) = 0x77;
+ break;
+ case MON_MALE:
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = EXT_CTRL_CODE_COLOR;
+ *(str_++) = 4;
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = 3;
+ *(str_++) = 5;
+ *(str_++) = CHAR_MALE;
+ break;
+ case MON_FEMALE:
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = EXT_CTRL_CODE_COLOR;
+ *(str_++) = 6;
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = 3;
+ *(str_++) = 7;
+ *(str_++) = CHAR_FEMALE;
+ break;
+ }
+
+ *(str_++) = EXT_CTRL_CODE_BEGIN;
+ *(str_++) = 4;
+ *(str_++) = 8;
+ *(str_++) = 0;
+ *(str_++) = 9;
+ *(str_++) = CHAR_SLASH;
+ *(str_++) = CHAR_SPECIAL_F9;
+ *(str_++) = 5;
+ txtPtr = str_;
+ str_ = ConvertIntToDecimalStringN(str_, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ lvlDigits = str_ - txtPtr;
+ *(str_++) = CHAR_SPACE;
+ if (!arg3)
+ {
+ lvlDigits = 3 - lvlDigits;
+ while (lvlDigits-- != 0)
+ *(str_++) = CHAR_SPACE;
+ }
+
+ *str_ = EOS;
+ return str_;
+}
+
+void sub_81CD824(s16 arg0, u8 arg1)
+{
+ u16 boxId, i;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ if (arg0 != (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ {
+ sub_81CD624(structPtr->unk6368[arg1], arg0, FALSE);
+ boxId = unkPtr->unk4[arg0].boxId;
+ structPtr->unk6320[arg1][0] = EXT_CTRL_CODE_BEGIN;
+ structPtr->unk6320[arg1][1] = 4;
+ structPtr->unk6320[arg1][2] = 8;
+ structPtr->unk6320[arg1][3] = 0;
+ structPtr->unk6320[arg1][4] = 9;
+ if (boxId == TOTAL_BOXES_COUNT)
+ sub_81CD5CC(&structPtr->unk6320[arg1][5], gText_InParty, 8);
+ else
+ sub_81CD5CC(&structPtr->unk6320[arg1][5], GetBoxNamePtr(boxId), 8);
+ }
+ else
+ {
+ for (i = 0; i < 12; i++)
+ structPtr->unk6368[arg1][i] = CHAR_SPACE;
+ structPtr->unk6368[arg1][i] = EOS;
+
+ for (i = 0; i < 8; i++)
+ structPtr->unk6320[arg1][i] = CHAR_SPACE;
+ structPtr->unk6320[arg1][i] = EOS;
+ }
+}
+
+void sub_81CD970(void)
+{
+ u16 i, count;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = AllocSubstruct(18, sizeof(struct PokenavSub18));
+
+ structPtr->unk6300 = 0;
+ for (i = 0, count = 0; i < CalculatePlayerPartyCount(); i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ unkPtr->unk4[count].boxId = TOTAL_BOXES_COUNT;
+ unkPtr->unk4[count].monId = i;
+ unkPtr->unk4[count].unk6 = 0;
+ count++;
+ }
+ }
+
+ unkPtr->unk4[count].boxId = 0;
+ unkPtr->unk4[count].monId = 0;
+ unkPtr->unk4[count].unk6 = 0;
+ unkPtr->unk2 = 0;
+ unkPtr->unk0 = count + 1;
+ structPtr->unk678A = 0;
+}
+
+void sub_81CD9F8(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ structPtr->unk6300 = 1;
+ structPtr->unk678A = 0;
+}
+
+void sub_81CDA1C(s16 arg0, u8 arg1)
+{
+ u16 boxId, monId, i;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ if (arg0 != (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ {
+ boxId = unkPtr->unk4[arg0].boxId;
+ monId = unkPtr->unk4[arg0].monId;
+ structPtr->unk6428.unk0[arg1][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
+ structPtr->unk6428.unk0[arg1][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
+ structPtr->unk6428.unk0[arg1][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
+ structPtr->unk6428.unk0[arg1][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
+ structPtr->unk6428.unk0[arg1][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
+ structPtr->unk6780[arg1] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 255)
+ ? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
+ : 9;
+ structPtr->unk6783[arg1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_MARKINGS, NULL);
+ sub_81D2754(structPtr->unk6428.unk0[arg1], structPtr->unk6428.unk14[arg1]);
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ structPtr->unk6428.unk0[arg1][i] = 0;
+ structPtr->unk6428.unk14[arg1][i].unk0 = 155;
+ structPtr->unk6428.unk14[arg1][i].unk2 = 91;
+ }
+ }
+}
+
+void sub_81CDB98(s16 arg0, u8 arg1)
+{
+ u16 boxId, monId, species;
+ u32 personality, tid;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+
+ if (arg0 == (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ return;
+
+ boxId = unkPtr->unk4[arg0].boxId;
+ monId = unkPtr->unk4[arg0].monId;
+ species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL);
+ tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL);
+ personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], structPtr->monPicGfx[arg1], species, personality, TRUE);
+ LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), structPtr->monPal[arg1]);
+}
+
+u16 sub_81CDC50(void)
+{
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ return unkPtr->unk0;
+}
+
+u16 sub_81CDC60(void)
+{
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ return unkPtr->unk2;
+}
+
+struct UnknownStruct_81D1ED4 *sub_81CDC70(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return &structPtr->unk6428;
+}
+
+u8 sub_81CDC84(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6786;
+}
+
+u8 sub_81CDC9C(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6302;
+}
+
+void *sub_81CDCB4(u8 id)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->monPicGfx[id];
+}
+
+void *sub_81CDCD4(u8 id)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->monPal[id];
+}
+
+u8 sub_81CDCEC(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6789;
+}
+
+u8 *sub_81CDD04(u8 id)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6368[id];
+}
+
+u8 *sub_81CDD24(u8 id)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6320[id];
+}
+
+u16 sub_81CDD48(void)
+{
+ struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ return unkPtr->unk4[unkPtr->unk2].unk6;
+}
+
+bool32 sub_81CDD5C(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ if (structPtr->unk6300 == 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 sub_81CDD7C(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ if (structPtr->unk6300 == 1)
+ return structPtr->unk6783[structPtr->unk6786];
+ else
+ return 0;
+}
+
+u8 sub_81CDDB0(void)
+{
+ struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ return structPtr->unk6780[structPtr->unk6786];
+}
diff --git a/src/pokenav_unk_7.c b/src/pokenav_unk_7.c
new file mode 100644
index 000000000..90b677fa7
--- /dev/null
+++ b/src/pokenav_unk_7.c
@@ -0,0 +1,884 @@
+#include "global.h"
+#include "bg.h"
+#include "window.h"
+#include "pokenav.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "menu.h"
+#include "menu_specialized.h"
+#include "mon_markings.h"
+#include "palette.h"
+#include "pokenav.h"
+#include "scanline_effect.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+
+u32 sub_81CE37C(s32);
+u32 sub_81CE2D0(s32);
+u32 sub_81CE4D8(s32);
+u32 sub_81CE5E4(s32);
+u32 sub_81CE6BC(s32);
+u32 sub_81CE700(s32);
+
+BSS_DATA u8 gUnknown_030012BC;
+
+const u16 gUnknown_086231E8[] = INCBIN_U16("graphics/pokenav/86231E8.gbapal");
+const u16 gUnknown_08623208[] = INCBIN_U16("graphics/pokenav/8623208.gbapal");
+const u32 gUnknown_08623228[] = INCBIN_U32("graphics/pokenav/8623228.4bpp.lz");
+const u32 gUnknown_0862323C[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
+const u16 gUnknown_08623338[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
+
+const struct BgTemplate gUnknown_08623358[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1D,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x1E,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const struct WindowTemplate gUnknown_08623364 =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 2
+};
+
+const struct WindowTemplate gUnknown_0862336C =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x36
+};
+
+const struct WindowTemplate gUnknown_08623374 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 0x1C,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const struct WindowTemplate gUnknown_0862337C =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 0x1C,
+ .width = 3,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const LoopedTask gUnknown_08623384[] =
+{
+ NULL,
+ sub_81CE37C,
+ sub_81CE2D0,
+ sub_81CE4D8,
+ sub_81CE5E4,
+ sub_81CE6BC,
+ sub_81CE700
+};
+
+struct Pokenav7Struct
+{
+ u32 loopedTaskId;
+ u8 tilemapBuffers[3][BG_SCREEN_SIZE];
+ u8 filler[2];
+ u8 unk1806[10];
+ u32 (*unk1810)(void);
+ s16 unk1814;
+ u8 unk1816;
+ u16 unk1818;
+ u16 unk181A;
+ void *unk181C;
+ u8 unk1820;
+ u8 unk1821;
+ u8 unk1822;
+ u8 unk1823;
+ struct PokemonMarkMenu monMarks;
+ struct Sprite *unk28dc;
+ struct Sprite *unk28e0[10];
+ u8 unk2908;
+ u8 filler2[0x38ac - 0x2909];
+};
+
+extern s8 sub_81CDC84(void); // This function's declaration here is different than its definition in pokenav_unk_6. u8/s8
+
+u32 sub_81CDE94(s32 state);
+u32 sub_81CDE80(void);
+void sub_81CED30(u8 var);
+void sub_81CE9E4(void);
+void sub_81CE934(void);
+bool32 sub_81CE754(u8 a0, u16 a1, bool8 a2);
+void sub_81CEE44(void);
+void sub_81CEE90(void);
+void sub_81CEEC8(void);
+void sub_81CEE68(void);
+void sub_81CEE74(bool8 showBg);
+
+// code
+bool32 sub_81CDDD4(void)
+{
+ struct Pokenav7Struct *structPtr = AllocSubstruct(0xC, sizeof(struct Pokenav7Struct));
+
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->unk1816 = 0xFF;
+ structPtr->loopedTaskId = CreateLoopedTask(sub_81CDE94, 1);
+ structPtr->unk1810 = sub_81CDE80;
+ structPtr->unk2908 = 0;
+ return TRUE;
+}
+
+void sub_81CDE2C(int id)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ structPtr->loopedTaskId = CreateLoopedTask(gUnknown_08623384[id], 1);
+ structPtr->unk1810 = sub_81CDE80;
+}
+
+u32 sub_81CDE64(void)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ return structPtr->unk1810();
+}
+
+u32 sub_81CDE80(void)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ return IsLoopedTaskActive(structPtr->loopedTaskId);
+}
+
+u32 sub_81CDE94(s32 state)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ switch (state)
+ {
+ case 0:
+ if (sub_81CD3C4() != TRUE)
+ return 2;
+ return 0;
+ case 1:
+ InitBgTemplates(gUnknown_08623358, ARRAY_COUNT(gUnknown_08623358));
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ decompress_and_copy_tile_data_to_vram(3, gPokenavCondition_Gfx, 0, 0, 0);
+ return 0;
+ case 2:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_08623228, 0, 0, 0);
+ return 0;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ LZ77UnCompVram(gPokenavCondition_Tilemap, structPtr->tilemapBuffers[0]);
+ SetBgTilemapBuffer(3, structPtr->tilemapBuffers[0]);
+ if (sub_81CDD5C() == TRUE)
+ CopyToBgTilemapBufferRect(3, gPokenavOptions_Tilemap, 0, 5, 9, 4);
+
+ CopyBgTilemapBufferToVram(3);
+ CopyPaletteIntoBufferUnfaded(gPokenavCondition_Pal, 0x10, 0x20);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08623208, 0xF0, 0x20);
+ structPtr->unk1814 = -80;
+ return 0;
+ case 4:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ LZ77UnCompVram(gUnknown_0862323C, structPtr->tilemapBuffers[2]);
+ SetBgTilemapBuffer(2, structPtr->tilemapBuffers[2]);
+ CopyBgTilemapBufferToVram(2);
+ CopyPaletteIntoBufferUnfaded(gUnknown_086231E8, 0x30, 0x20);
+ sub_81D21DC(2);
+ return 0;
+ case 5:
+ sub_8199DF0(1, 0, 0, 1);
+ sub_8199DF0(1, 17, 1, 1);
+ CpuFill32(0, structPtr->tilemapBuffers[1], BG_SCREEN_SIZE);
+ SetBgTilemapBuffer(1, structPtr->tilemapBuffers[1]);
+ return 0;
+ case 6:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ structPtr->unk1820 = AddWindow(&gUnknown_08623364);
+ if (sub_81CDD5C() == TRUE)
+ {
+ structPtr->unk1821 = AddWindow(&gUnknown_0862336C);
+ structPtr->unk1822 = AddWindow(&gUnknown_08623374);
+ structPtr->unk1823 = AddWindow(&gUnknown_0862337C);
+ }
+ DeactivateAllTextPrinters();
+ return 0;
+ case 7:
+ sub_81CED30(0);
+ return 0;
+ case 8:
+ sub_81CE9E4();
+ return 0;
+ case 9:
+ if (sub_81CDD5C() == TRUE)
+ sub_81CE934();
+ return 0;
+ case 10:
+ sub_81CE754(0, sub_81CDC84(), TRUE);
+ return 0;
+ case 11:
+ sub_81CE754(1, sub_81CDC84(), TRUE);
+ return 0;
+ case 12:
+ sub_81CE754(2, sub_81CDC84(), TRUE);
+ return 0;
+ case 13:
+ if (sub_81CE754(3, sub_81CDC84(), TRUE) != TRUE)
+ return 2;
+ PutWindowTilemap(structPtr->unk1820);
+ if (sub_81CDD5C() == TRUE)
+ {
+ PutWindowTilemap(structPtr->unk1821);
+ PutWindowTilemap(structPtr->unk1822);
+ PutWindowTilemap(structPtr->unk1823);
+ }
+ return 0;
+ case 14:
+ ShowBg(1);
+ HideBg(2);
+ ShowBg(3);
+ if (sub_81CDD5C() == TRUE)
+ sub_81C7BA4(4);
+ return 0;
+ case 15:
+ sub_81C7AC0(1);
+ if (!sub_81CDD5C())
+ {
+ LoadLeftHeaderGfxForIndex(6);
+ sub_81C7FA0(1, TRUE, 0);
+ sub_81C7FA0(6, TRUE, 0);
+ }
+ return 0;
+ case 16:
+ if (IsPaletteFadeActive())
+ return 2;
+ if (!sub_81CDD5C() && sub_81C8010())
+ return 2;
+ SetVBlankCallback_(sub_81CEE44);
+ return 0;
+ case 17:
+ sub_81CEE90();
+ sub_81D20AC(sub_81CDC70());
+ return 0;
+ case 18:
+ if (sub_81D20BC(sub_81CDC70()))
+ return 2;
+ return 0;
+ case 19:
+ sub_81CEE74(TRUE);
+ return 0;
+ case 20:
+ if (!sub_81D3178(sub_81CDC70(), &structPtr->unk1814))
+ {
+ sub_81D3464(structPtr->unk28e0);
+ if (sub_81CDD5C() == TRUE || sub_81CDC60() != sub_81CDC50())
+ sub_81D3480(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
+
+ return 4;
+ }
+ return 2;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE2D0(s32 state)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ switch (state)
+ {
+ case 0:
+ sub_81CEEC8();
+ sub_81D3520(structPtr->unk28e0);
+ return 1;
+ case 1:
+ if (sub_81D31A4(sub_81CDC70(), &structPtr->unk1814))
+ return 2;
+ sub_81CEE74(FALSE);
+ return 1;
+ case 2:
+ sub_81C7AC0(0);
+ if (!sub_81CDD5C())
+ sub_81C78A0();
+ return 0;
+ case 3:
+ if (IsPaletteFadeActive() || MainMenuLoopedTaskIsBusy())
+ return 2;
+ sub_81D354C(structPtr->unk28e0);
+ HideBg(1);
+ HideBg(2);
+ HideBg(3);
+ return 1;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE37C(s32 state)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct UnknownStruct_81D1ED4 *unkPtr = sub_81CDC70();
+
+ switch (state)
+ {
+ case 0:
+ sub_81CD548(0);
+ return 1;
+ case 1:
+ sub_81CD548(1);
+ return 1;
+ case 2:
+ sub_81CD548(2);
+ sub_81D3520(structPtr->unk28e0);
+ return 1;
+ case 3:
+ sub_81D2074(unkPtr);
+ return 1;
+ case 4:
+ if (!sub_81D3150(&structPtr->unk1814))
+ {
+ sub_81CED30(sub_81CDC84());
+ return 1;
+ }
+ return 2;
+ case 5:
+ sub_81CE754(0, sub_81CDC84(), FALSE);
+ return 1;
+ case 6:
+ sub_81CE754(1, sub_81CDC84(), FALSE);
+ return 1;
+ case 7:
+ sub_81CE754(2, sub_81CDC84(), FALSE);
+ return 1;
+ case 8:
+ if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
+ return 1;
+ return 2;
+ case 9:
+ unkPtr = sub_81CDC70();
+ if (!sub_81D3178(unkPtr, &structPtr->unk1814))
+ {
+ sub_81D3464(structPtr->unk28e0);
+ if (sub_81CDD5C() != TRUE && sub_81CDC60() == sub_81CDC50())
+ return 1;
+
+ sub_81D3480(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
+ return 1;
+ }
+ return 2;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE4D8(s32 state)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ switch (state)
+ {
+ case 0:
+ sub_81CD548(0);
+ return 1;
+ case 1:
+ sub_81CD548(1);
+ return 1;
+ case 2:
+ sub_81CD548(2);
+ return 1;
+ case 3:
+ sub_81CED30(sub_81CDC84());
+ return 1;
+ case 4:
+ sub_81CE754(0, sub_81CDC84(), FALSE);
+ return 1;
+ case 5:
+ sub_81CE754(1, sub_81CDC84(), FALSE);
+ return 1;
+ case 6:
+ sub_81CE754(2, sub_81CDC84(), FALSE);
+ return 1;
+ case 7:
+ if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
+ return 1;
+ return 2;
+ case 8:
+ if (!sub_81D3178(sub_81CDC70(), &structPtr->unk1814))
+ {
+ sub_81D3464(structPtr->unk28e0);
+ sub_81D3480(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
+ return 1;
+ }
+ return 2;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE5E4(s32 state)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ switch (state)
+ {
+ case 0:
+ sub_81CD548(0);
+ return 1;
+ case 1:
+ sub_81CD548(1);
+ return 1;
+ case 2:
+ sub_81CD548(2);
+ sub_81D3520(structPtr->unk28e0);
+ return 1;
+ case 3:
+ if (!sub_81D31A4(sub_81CDC70(), &structPtr->unk1814))
+ return 1;
+ return 2;
+ case 4:
+ sub_81CE754(0, sub_81CDC84(), FALSE);
+ return 1;
+ case 5:
+ sub_81CE754(1, sub_81CDC84(), FALSE);
+ return 1;
+ case 6:
+ sub_81CE754(2, sub_81CDC84(), FALSE);
+ return 1;
+ case 7:
+ if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
+ return 1;
+ return 2;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE6BC(s32 state)
+{
+ switch (state)
+ {
+ case 0:
+ sub_811FAA4(sub_81CDD7C(), 0xb0, 0x20);
+ return 1;
+ case 1:
+ sub_81C7BA4(5);
+ return 1;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy_() == TRUE)
+ return 2;
+ return 1;
+ }
+
+ return 4;
+}
+
+u32 sub_81CE700(s32 state)
+{
+ switch (state)
+ {
+ case 0:
+ sub_811FAF8();
+ return 1;
+ case 1:
+ sub_81C7BA4(4);
+ return 1;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy_() == TRUE)
+ return 2;
+ return 1;
+ }
+
+ return 4;
+}
+
+u8 *sub_81CE738(u8 *dst, u16 num)
+{
+ u8 *txtPtr = ConvertIntToDecimalStringN(dst, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ txtPtr = StringCopy(txtPtr, gText_Number2);
+
+ return txtPtr;
+}
+
+bool32 sub_81CE754(u8 a0, u16 a1, bool8 a2)
+{
+ u8 text[32];
+ const u8 *str;
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ switch (a0)
+ {
+ case 0:
+ FillWindowPixelBuffer(structPtr->unk1820, 0);
+ if (sub_81CDD5C() == TRUE)
+ FillWindowPixelBuffer(structPtr->unk1821, 0);
+ break;
+ case 1:
+ if (sub_81CDC60() != sub_81CDC50() - 1 || sub_81CDD5C() == TRUE)
+ {
+ str = sub_81CDD04(a1);
+ AddTextPrinterParameterized(structPtr->unk1820, 1, str, 0, 1, 0, NULL);
+ }
+ break;
+ case 2:
+ if (sub_81CDD5C() == TRUE)
+ {
+ str = sub_81CDD24(a1);
+ AddTextPrinterParameterized(structPtr->unk1820, 1, str, 0, 17, 0, NULL);
+ text[0] = EXT_CTRL_CODE_BEGIN;
+ text[1] = 4;
+ text[2] = 8;
+ text[3] = 0;
+ text[4] = 9;
+ StringCopy(text + 5, gText_Number2);
+ AddTextPrinterParameterized(structPtr->unk1821, 1, text, 4, 1, 0, NULL);
+ ConvertIntToDecimalStringN(text + 5, sub_81CDD48(), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ AddTextPrinterParameterized(structPtr->unk1821, 1, text, 28, 1, 0, NULL);
+ }
+ break;
+ case 3:
+ switch (structPtr->unk2908)
+ {
+ case 0:
+ if (a2)
+ CopyWindowToVram(structPtr->unk1820, 3);
+ else
+ CopyWindowToVram(structPtr->unk1820, 2);
+
+ if (sub_81CDD5C() == TRUE)
+ {
+ structPtr->unk2908++;
+ return FALSE;
+ }
+ else
+ {
+ structPtr->unk2908 = 0;
+ return TRUE;
+ }
+ case 1:
+ if (a2)
+ CopyWindowToVram(structPtr->unk1821, 3);
+ else
+ CopyWindowToVram(structPtr->unk1821, 2);
+
+ structPtr->unk2908 = 0;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_81CE934(void)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ CopyWindowToVram(structPtr->unk1822, 3);
+ CopyWindowToVram(structPtr->unk1823, 3);
+}
+
+void sub_81CE964(struct Sprite *sprite)
+{
+ if (sprite->data[0] == sub_81CDC60())
+ StartSpriteAnim(sprite, 0);
+ else
+ StartSpriteAnim(sprite, 1);
+}
+
+void sub_81CE990(struct Sprite *sprite)
+{
+ if (sub_81CDC60() == sub_81CDC50() - 1)
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x65);
+ else
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x66);
+}
+
+void sub_81CE9C8(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, sub_81CDD7C());
+}
+
+void sub_81CE9E4(void)
+{
+ struct SpriteSheet sprSheets[4];
+ struct SpriteTemplate sprTemplate;
+ struct SpritePalette sprPals[3];
+ struct SpriteSheet sprSheet;
+ struct Sprite *sprite;
+ u16 i, spriteId;
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ sub_81D321C(sprSheets, &sprTemplate, sprPals);
+ if (sub_81CDD5C() == TRUE)
+ {
+ structPtr->monMarks.baseTileTag = 0x6A;
+ structPtr->monMarks.basePaletteTag = 0x6A;
+ sub_811F90C(&structPtr->monMarks);
+ sub_811FA90();
+ sprite = sub_811FF94(0x69, 0x69, gUnknown_08623338);
+ sprite->oam.priority = 3;
+ sprite->pos1.x = 192;
+ sprite->pos1.y = 32;
+ sprite->callback = sub_81CE9C8;
+ structPtr->unk28dc = sprite;
+ sub_81C7990(IndexOfSpritePaletteTag(0x69), 0);
+ }
+ else
+ {
+ LoadSpriteSheets(sprSheets);
+ Pokenav_AllocAndLoadPalettes(sprPals);
+ for (i = 0; i < sub_81CDC50() - 1; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, 226, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ structPtr->unk1806[i] = spriteId;
+ gSprites[spriteId].data[0] = i;
+ gSprites[spriteId].callback = sub_81CE964;
+ }
+ else
+ {
+ structPtr->unk1806[i] = 0xFF;
+ }
+ }
+
+ sprTemplate.tileTag = 0x67;
+ sprTemplate.callback = SpriteCallbackDummy;
+ for (; i < 6; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, 230, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ structPtr->unk1806[i] = spriteId;
+ gSprites[spriteId].oam.size = 0;
+ }
+ else
+ {
+ structPtr->unk1806[i] = 0xFF;
+ }
+ }
+
+ sprTemplate.tileTag = 0x66;
+ sprTemplate.callback = sub_81CE990;
+ spriteId = CreateSprite(&sprTemplate, 222, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ structPtr->unk1806[i] = spriteId;
+ gSprites[spriteId].oam.shape = 1;
+ gSprites[spriteId].oam.size = 2;
+ }
+ else
+ {
+ structPtr->unk1806[i] = 0xFF;
+ }
+ }
+
+ sub_81D32B0(&sprSheet, &sprPals[0]);
+ LoadSpriteSheet(&sprSheet);
+ sprPals[1].data = NULL;
+ Pokenav_AllocAndLoadPalettes(sprPals);
+}
+
+void sub_81CEBF4(struct Pokenav7Struct *structPtr)
+{
+ u8 i;
+
+ if (sub_81CDD5C() == TRUE)
+ {
+ DestroySprite(structPtr->unk28dc);
+ FreeSpriteTilesByTag(0x6A);
+ FreeSpriteTilesByTag(0x69);
+ FreeSpritePaletteByTag(0x6A);
+ FreeSpritePaletteByTag(0x69);
+ }
+ else
+ {
+ for (i = 0; i < 7; i++)
+ DestroySprite(&gSprites[structPtr->unk1806[i]]);
+
+ FreeSpriteTilesByTag(0x65);
+ FreeSpriteTilesByTag(0x66);
+ FreeSpriteTilesByTag(0x67);
+ FreeSpritePaletteByTag(0x65);
+ FreeSpritePaletteByTag(0x66);
+ }
+
+ if (structPtr->unk1816 != 0xFF)
+ {
+ DestroySprite(&gSprites[structPtr->unk1816]);
+ FreeSpriteTilesByTag(0x64);
+ FreeSpritePaletteByTag(0x64);
+ }
+}
+
+void sub_81CECA0(void)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ RemoveWindow(structPtr->unk1820);
+ if (sub_81CDD5C() == TRUE)
+ {
+ RemoveWindow(structPtr->unk1821);
+ RemoveWindow(structPtr->unk1822);
+ RemoveWindow(structPtr->unk1823);
+ }
+ else
+ {
+ sub_81C7FDC();
+ }
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
+ sub_81CEBF4(structPtr);
+ sub_81CEE68();
+ FreePokenavSubstruct(0xC);
+}
+
+void sub_81CED10(struct Sprite *sprite)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ sprite->pos1.x = structPtr->unk1814 + 38;
+}
+
+void sub_81CED30(u8 var)
+{
+ struct SpriteTemplate sprTemplate;
+ struct SpriteSheet sprSheet;
+ struct SpritePalette sprPal;
+ u8 spriteId;
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ if (structPtr->unk1816 == 0xFF)
+ {
+ sub_81D31D0(&sprSheet, &sprTemplate, &sprPal);
+ sprSheet.data = sub_81CDCB4(var);
+ sprPal.data = sub_81CDCD4(var);
+ structPtr->unk1818 = LoadSpritePalette(&sprPal);
+ structPtr->unk181A = LoadSpriteSheet(&sprSheet);
+ spriteId = CreateSprite(&sprTemplate, 38, 104, 0);
+ structPtr->unk1816 = spriteId;
+ if (spriteId == MAX_SPRITES)
+ {
+ FreeSpriteTilesByTag(0x64);
+ FreeSpritePaletteByTag(0x64);
+ structPtr->unk1816 = 0xFF;
+ }
+ else
+ {
+ structPtr->unk1816 = spriteId;
+ gSprites[structPtr->unk1816].callback = sub_81CED10;
+ structPtr->unk181C = (void*)(VRAM) + 0x10000 + (structPtr->unk181A * 32);
+ structPtr->unk1818 = (structPtr->unk1818 * 16) + 0x100;
+ }
+ }
+ else
+ {
+ DmaCopy16Defvars(3, sub_81CDCB4(var), structPtr->unk181C, 0x800);
+ LoadPalette(sub_81CDCD4(var), structPtr->unk1818, 0x20);
+ }
+}
+
+void sub_81CEE44(void)
+{
+ struct UnknownStruct_81D1ED4 *unk = sub_81CDC70();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_81D2108(unk);
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void sub_81CEE68(void)
+{
+ SetPokenavVBlankCallback();
+}
+
+void sub_81CEE74(bool8 showBg)
+{
+ if (showBg)
+ ShowBg(2);
+ else
+ HideBg(2);
+}
+
+void sub_81CEE90(void)
+{
+ struct UnknownStruct_81D1ED4 *unk = sub_81CDC70();
+ u8 id = sub_81CDC84();
+
+ gUnknown_030012BC = id;
+ sub_81D1F84(unk, unk->unk14[3], unk->unk14[id]);
+ sub_81D2074(unk);
+}
+
+void sub_81CEEC8(void)
+{
+ struct UnknownStruct_81D1ED4 *unk = sub_81CDC70();
+
+ if (sub_81CDD5C() || sub_81CDC60() != sub_81CDC50() - 1)
+ sub_81D1F84(unk, unk->unk14[sub_81CDC84()], unk->unk14[3]);
+}
+
+u8 sub_81CEF14(void)
+{
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+
+ if (sub_81CDD5C() == 1)
+ return structPtr->monMarks.markings;
+ else
+ return 0;
+}
diff --git a/src/pokenav_unk_8.c b/src/pokenav_unk_8.c
new file mode 100644
index 000000000..bcafc14d0
--- /dev/null
+++ b/src/pokenav_unk_8.c
@@ -0,0 +1,189 @@
+#include "global.h"
+#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CF134(void);
+u32 sub_81CF1C4(void);
+u32 sub_81CF1D8(void);
+u32 sub_81CF278(void);
+u32 sub_81CF578(s32);
+u32 sub_81CF5F0(s32);
+u32 sub_81CF668(s32);
+u32 sub_81CF6E0(s32);
+u32 sub_81CF758(s32);
+u32 sub_81CF798(s32);
+
+const u32 gUnknown_086233A0[] = {0x16, 0x17, 0x18, 0x21, 0x2F};
+
+u32 (*const gUnknown_086233B4[])(void) =
+{
+ sub_81CF134,
+ sub_81CF1C4,
+ sub_81CF1D8,
+ sub_81CF278
+};
+
+const u16 gUnknown_086233C4[] = INCBIN_U16("graphics/pokenav/condition_search2.gbapal");
+const u32 gUnknown_086233E4[] = INCBIN_U32("graphics/pokenav/condition_search2.4bpp.lz");
+const u32 gUnknown_086234AC[] = INCBIN_U32("graphics/pokenav/condition_search2.bin.lz");
+const u16 gUnknown_08623570[] = INCBIN_U16("graphics/pokenav/8623570.gbapal");
+
+const struct BgTemplate gUnknown_08623590 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_08623594 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_08623598[] =
+{
+ NULL,
+ sub_81CF578,
+ sub_81CF5F0,
+ sub_81CF668,
+ sub_81CF6E0,
+ sub_81CF758,
+ sub_81CF798
+};
+
+const struct WindowTemplate gUnknown_086235B4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+const u8 gUnknown_086235BC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235C8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235D4[] = _("{UNK_SPACER}");
+
+struct PokenavSub7
+{
+ u32 (*unk0)(struct PokenavSub7 *);
+ u32 loopedTaskId;
+ u8 fill1[12];
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ struct PokenavSub18 *unkPtr;
+};
+
+u32 sub_81CF010(struct PokenavSub7 *structPtr);
+u32 sub_81CF030(struct PokenavSub7 *structPtr);
+u32 sub_81CF0B8(struct PokenavSub7 *structPtr);
+u32 sub_81CF0B0(struct PokenavSub7 *structPtr);
+u32 sub_81CF11C(s32 state);
+
+bool32 sub_81CEF3C(void)
+{
+ struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->unkPtr = AllocSubstruct(18, sizeof(struct PokenavSub18));
+ if (structPtr->unkPtr == NULL)
+ return FALSE;
+
+ structPtr->unk0 = sub_81CF010;
+ structPtr->loopedTaskId = CreateLoopedTask(sub_81CF11C, 1);
+ structPtr->unk18 = 0;
+ structPtr->unk14 = gUnknown_086233A0[sub_81C76AC()];
+ return TRUE;
+}
+
+bool32 sub_81CEF98(void)
+{
+ struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
+ if (structPtr == NULL)
+ return FALSE;
+
+ structPtr->unkPtr = GetSubstructPtr(18);
+ structPtr->unk0 = sub_81CF030;
+ structPtr->unk18 = 1;
+ structPtr->unk14 = gUnknown_086233A0[sub_81C76AC()];
+ return TRUE;
+}
+
+u32 sub_81CEFDC(void)
+{
+ struct PokenavSub7 *structPtr = GetSubstructPtr(7);
+ return structPtr->unk0(structPtr);
+}
+
+void sub_81CEFF0(void)
+{
+ struct PokenavSub7 *structPtr = GetSubstructPtr(7);
+ if (structPtr->unk1C == 0)
+ FreePokenavSubstruct(18);
+ FreePokenavSubstruct(7);
+}
+
+bool32 sub_81CF010(struct PokenavSub7 *structPtr)
+{
+ if (!IsLoopedTaskActive(structPtr->loopedTaskId))
+ structPtr->unk0 = sub_81CF030;
+ return FALSE;
+}
+
+u32 sub_81CF030(struct PokenavSub7 *structPtr)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return 1;
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return 2;
+ else if (gMain.newKeys & DPAD_LEFT)
+ return 3;
+ else if (gMain.newKeys & DPAD_RIGHT)
+ return 4;
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ structPtr->unk1C = 0;
+ structPtr->unk0 = sub_81CF0B0;
+ return 5;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ structPtr->unkPtr->unk2 = GetSelectedMatchCall();
+ structPtr->unk1C = 1;
+ structPtr->unk0 = sub_81CF0B8;
+ return 6;
+ }
+ else
+ return 0;
+}
+
+u32 sub_81CF0B0(struct PokenavSub7 *structPtr)
+{
+ return 0x186A3;
+}
+
+u32 sub_81CF0B8(struct PokenavSub7 *structPtr)
+{
+ return 0x186A9;
+}
+
+u32 sub_81CF0C0(void)
+{
+ struct PokenavSub7 *structPtr = GetSubstructPtr(7);
+ return structPtr->unk18;
+}
diff --git a/src/pokenav_unk_9.c b/src/pokenav_unk_9.c
new file mode 100644
index 000000000..2927d7211
--- /dev/null
+++ b/src/pokenav_unk_9.c
@@ -0,0 +1,74 @@
+#include "global.h"
+#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CFB8C(void);
+u32 sub_81CFC2C(void);
+u32 sub_81CFC40(void);
+u32 sub_81CFFFC(s32);
+u32 sub_81D0074(s32);
+u32 sub_81D00EC(s32);
+u32 sub_81D0164(s32);
+u32 sub_81D01DC(s32);
+u32 sub_81D021C(s32);
+
+u32 (*const gUnknown_086235D8[])(void) =
+{
+ sub_81CFB8C,
+ sub_81CFC2C,
+ sub_81CFC40
+};
+
+const u16 gUnknown_086235E4[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
+const u32 gUnknown_08623604[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
+const u32 gUnknown_086236CC[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
+const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
+
+const struct BgTemplate gUnknown_086237B0 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_086237B4 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_086237B8[] =
+{
+ NULL,
+ sub_81CFFFC,
+ sub_81D0074,
+ sub_81D00EC,
+ sub_81D0164,
+ sub_81D01DC,
+ sub_81D021C
+};
+
+const struct WindowTemplate gUnknown_086237D4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+const u8 gUnknown_086237DC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237E8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237F4[] = _("{UNK_SPACER}");
diff --git a/src/random.c b/src/random.c
index f0b2d9e5f..b570a7bc3 100644
--- a/src/random.c
+++ b/src/random.c
@@ -8,8 +8,8 @@ EWRAM_DATA static u8 sUnknown = 0;
EWRAM_DATA static u32 sRandCount = 0;
// IWRAM common
-IWRAM_DATA u32 gRngValue;
-IWRAM_DATA u32 gRng2Value;
+u32 gRngValue;
+u32 gRng2Value;
u16 Random(void)
{
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 85b52e478..6cb145c80 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -82,21 +82,21 @@ union PlayerRecords
// Static RAM declarations
-static IWRAM_DATA bool8 gUnknown_03001130;
-static IWRAM_DATA struct SecretBase *sSecretBasesSave;
-static IWRAM_DATA TVShow *sTvShowsSave;
-static IWRAM_DATA PokeNews *sPokeNewsSave;
-static IWRAM_DATA OldMan *sOldManSave;
-static IWRAM_DATA struct EasyChatPair *sEasyChatPairsSave;
-static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148;
-static IWRAM_DATA void *sBattleTowerSave;
-static IWRAM_DATA LilycoveLady *sLilycoveLadySave;
-static IWRAM_DATA void *sApprenticesSave;
-static IWRAM_DATA void *sBattleTowerSave_Duplicate;
-static IWRAM_DATA u32 sRecordStructSize;
-static IWRAM_DATA u8 gUnknown_03001160;
-static IWRAM_DATA u32 filler_03001164;
-static IWRAM_DATA struct PlayerHallRecords *gUnknown_03001168[3];
+static bool8 gUnknown_03001130;
+static struct SecretBase *sSecretBasesSave;
+static TVShow *sTvShowsSave;
+static PokeNews *sPokeNewsSave;
+static OldMan *sOldManSave;
+static struct EasyChatPair *sEasyChatPairsSave;
+static struct RecordMixingDayCareMail *gUnknown_03001148;
+static void *sBattleTowerSave;
+static LilycoveLady *sLilycoveLadySave;
+static void *sApprenticesSave;
+static void *sBattleTowerSave_Duplicate;
+static u32 sRecordStructSize;
+static u8 gUnknown_03001160;
+static u32 filler_03001164;
+static struct PlayerHallRecords *gUnknown_03001168[3];
static EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02039F9C = {0};
static EWRAM_DATA union PlayerRecords *sReceivedRecords = NULL;
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index ac97dfcd6..9e03d57f6 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -100,8 +100,8 @@ EWRAM_DATA static u8 sApprenticeId = 0;
EWRAM_DATA static u16 sEasyChatSpeech[6] = {0};
EWRAM_DATA static u8 sBattleOutcome = 0;
-IWRAM_DATA static u8 sRecordMixFriendLanguage;
-IWRAM_DATA static u8 sApprenticeLanguage;
+static u8 sRecordMixFriendLanguage;
+static u8 sApprenticeLanguage;
// this file's functions
static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2);
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index d675c49d1..1fe9f2279 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -142,7 +142,7 @@ static const union AnimCmd sSpriteAnim_85104CC[] =
static const union AnimCmd sSpriteAnim_85104D4[] =
{
- ANIMCMD_FRAME(0, 158, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 30, .vFlip = TRUE),
ANIMCMD_JUMP(0),
};
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index 95d63a323..beba742f5 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -14,7 +14,7 @@ void sub_81700F8(void)
imeBackup = REG_IME;
REG_IME = 0;
- RegisterRamReset(0x00000001);
+ RegisterRamReset(RESET_EWRAM);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK);
REG_IME = imeBackup;
gMain.inBattle = FALSE;
diff --git a/src/rom_8034C54.c b/src/rom_8034C54.c
index a3707017e..42817fc2b 100644
--- a/src/rom_8034C54.c
+++ b/src/rom_8034C54.c
@@ -43,9 +43,9 @@ static bool32 SharesPalWithAnyActive(u32 id);
static void sub_8035648(void);
// iwram
-static IWRAM_DATA s32 gUnknown_03000DD4;
-static IWRAM_DATA s32 gUnknown_03000DD8;
-static IWRAM_DATA s32 gUnknown_03000DDC;
+static s32 gUnknown_03000DD4;
+static s32 gUnknown_03000DD8;
+static s32 gUnknown_03000DDC;
// ewram
static EWRAM_DATA struct UnkStruct1 *gUnknown_02022E10 = {0};
diff --git a/src/roulette.c b/src/roulette.c
index 25c079cda..662522aae 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -3994,8 +3994,8 @@ static void sub_8144514(struct Sprite *sprite)
if (gUnknown_0203AB88->var94 > 40.f)
return;
- gUnknown_0203AB88->var98 = -(4.0f / (float)gUnknown_0203AB88->var86);
- gUnknown_0203AB88->var90 = -(gUnknown_0203AB88->var8C / (float)gUnknown_0203AB88->var86);
+ gUnknown_0203AB88->var98 = -(4.0f / (float)(gUnknown_0203AB88->var86));
+ gUnknown_0203AB88->var90 = -(gUnknown_0203AB88->var8C / (float)(gUnknown_0203AB88->var86));
sprite->animNum = 2;
sprite->animBeginning = TRUE;
sprite->animEnded = FALSE;
@@ -4010,8 +4010,8 @@ static void sub_81445D8(struct Sprite *sprite)
return;
m4aSongNumStartOrChange(SE_TAMAKORO_E);
- gUnknown_0203AB88->var98 = -(20.0f / (float)gUnknown_0203AB88->var84);
- gUnknown_0203AB88->var90 = ((1.0f - gUnknown_0203AB88->var8C) / (float)gUnknown_0203AB88->var84);
+ gUnknown_0203AB88->var98 = -(20.0f / (float)(gUnknown_0203AB88->var84));
+ gUnknown_0203AB88->var90 = ((1.0f - gUnknown_0203AB88->var8C) / (float)(gUnknown_0203AB88->var84));
sprite->animNum = 1;
sprite->animBeginning = TRUE;
sprite->animEnded = FALSE;
diff --git a/src/roulette_util.c b/src/roulette_util.c
index 9531302d9..f1f04a73a 100755
--- a/src/roulette_util.c
+++ b/src/roulette_util.c
@@ -408,7 +408,8 @@ void UpdatePulseBlend(struct PulseBlend *pulseBlend)
}
}
break;
- case 2: // Flip back and forth
+ case (MODERN ? -2 : 2): // Flip back and forth
+ // This code is never reached in vanilla
if (pulseBlendPalette->fadeDirection)
pulseBlendPalette->blendCoeff = 0;
else
diff --git a/src/rtc.c b/src/rtc.c
index 37a06fe7e..b135a675a 100644
--- a/src/rtc.c
+++ b/src/rtc.c
@@ -4,10 +4,10 @@
#include "text.h"
// iwram bss
-IWRAM_DATA static u16 sErrorStatus;
-IWRAM_DATA static struct SiiRtcInfo sRtc;
-IWRAM_DATA static u8 sProbeResult;
-IWRAM_DATA static u16 sSavedIme;
+static u16 sErrorStatus;
+static struct SiiRtcInfo sRtc;
+static u8 sProbeResult;
+static u16 sSavedIme;
// iwram common
struct Time gLocalTime;
diff --git a/src/save.c b/src/save.c
index 45a75b5dc..cdfd2ae1d 100644
--- a/src/save.c
+++ b/src/save.c
@@ -626,7 +626,10 @@ static u16 CalculateChecksum(void *data, u16 size)
u32 checksum = 0;
for (i = 0; i < (size / 4); i++)
- checksum += *((u32 *)data)++;
+ {
+ checksum += *((u32 *)data);
+ data += sizeof(u32);
+ }
return ((checksum >> 16) + checksum);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 8d597b887..57cd3edbe 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -62,7 +62,7 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-IWRAM_DATA u8 gUnknown_03000F30;
+static u8 gUnknown_03000F30;
extern const SpecialFunc gSpecials[];
extern const u8 *gStdScripts[];
diff --git a/src/script.c b/src/script.c
index 27476dba3..34484561c 100644
--- a/src/script.c
+++ b/src/script.c
@@ -10,12 +10,12 @@
extern const u8* gUnknown_020375C0;
// ewram bss
-IWRAM_DATA static u8 sScriptContext1Status;
-IWRAM_DATA static u32 sUnusedVariable1;
-IWRAM_DATA static struct ScriptContext sScriptContext1;
-IWRAM_DATA static u32 sUnusedVariable2;
-IWRAM_DATA static struct ScriptContext sScriptContext2;
-IWRAM_DATA static bool8 sScriptContext2Enabled;
+static u8 sScriptContext1Status;
+static u32 sUnusedVariable1;
+static struct ScriptContext sScriptContext1;
+static u32 sUnusedVariable2;
+static struct ScriptContext sScriptContext2;
+static bool8 sScriptContext2Enabled;
extern ScrCmdFunc gScriptCmdTable[];
extern ScrCmdFunc gScriptCmdTableEnd[];
diff --git a/src/script_menu.c b/src/script_menu.c
index 082253e35..b17d3df38 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1017,8 +1017,8 @@ const u8 *const gUnknown_0858BBEC[] =
EWRAM_DATA u8 gUnknown_02039F90 = 0;
-IWRAM_DATA u8 gUnknown_03001124[7];
-IWRAM_DATA u32 filler_0300112c;
+static u8 gUnknown_03001124[7];
+static u32 filler_0300112c;
static void Task_HandleMultichoiceInput(u8);
static void Task_HandleYesNoInput(u8);
diff --git a/src/secret_base.c b/src/secret_base.c
index ac35a090a..12cb8cd61 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -71,7 +71,7 @@ static EWRAM_DATA struct SecretBaseRegistryMenu *sRegistryMenu = NULL;
static void Task_ShowSecretBaseRegistryMenu(u8 taskId);
static void BuildRegistryMenuItems(u8 taskId);
-static void RegistryMenu_OnCursorMove(int unused, bool8 flag, struct ListMenu *menu);
+static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *menu);
static void FinalizeRegistryMenu(u8 taskId);
static void AddRegistryMenuScrollArrows(u8 taskId);
static void HandleRegistryMenuInput(u8 taskId);
@@ -932,7 +932,7 @@ static void BuildRegistryMenuItems(u8 taskId)
gMultiuseListMenuTemplate.maxShowed = data[3];
}
-static void RegistryMenu_OnCursorMove(int unused, bool8 flag, struct ListMenu *menu)
+static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *menu)
{
if (flag != TRUE)
PlaySE(SE_SELECT);
diff --git a/src/shop.c b/src/shop.c
index 1c6d7cf2e..bf15568fb 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -87,8 +87,8 @@ static void Task_ReturnToItemListAfterItemPurchase(u8 taskId);
static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId);
static void Task_HandleShopMenuBuy(u8 taskId);
static void Task_HandleShopMenuSell(u8 taskId);
-static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct ListMenu *list);
-static void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y);
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list);
+static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y);
static const struct YesNoFuncTable sShopPurchaseYesNoFuncs =
{
@@ -521,7 +521,7 @@ static void BuyMenuSetListEntry(struct ListMenuItem *menuItem, u16 item, u8 *nam
menuItem->id = item;
}
-static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct ListMenu *list)
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list)
{
const u8 *description;
if (onInit != TRUE)
@@ -550,7 +550,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, s
BuyMenuPrint(2, description, 3, 1, 0, 0);
}
-static void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y)
+static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
{
u8 x;
@@ -1230,4 +1230,4 @@ void CreateDecorationShop2Menu(const u16 *itemsForSale)
CreateShopMenu(MART_TYPE_DECOR2);
SetShopItemsForSale(itemsForSale);
SetShopMenuCallback(EnableBothScriptContexts);
-} \ No newline at end of file
+}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index b853daa39..003ac3327 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -350,7 +350,7 @@ static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL;
static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
// IWRAM bss
-static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26];
+static struct SpriteFrameImage *gUnknown_03001188[26];
// Const rom data.
extern const struct UnkStruct1 *const gUnknown_083ED048[];
diff --git a/src/sound.c b/src/sound.c
index 16f024858..dba4354df 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -19,11 +19,11 @@ EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
// iwram bss
-IWRAM_DATA static u16 sCurrentMapMusic;
-IWRAM_DATA static u16 sNextMapMusic;
-IWRAM_DATA static u8 sMapMusicState;
-IWRAM_DATA static u8 sMapMusicFadeInSpeed;
-IWRAM_DATA static u16 sFanfareCounter;
+static u16 sCurrentMapMusic;
+static u16 sNextMapMusic;
+static u8 sMapMusicState;
+static u8 sMapMusicFadeInSpeed;
+static u16 sFanfareCounter;
// iwram common
bool8 gDisableMusic;
diff --git a/src/sprite.c b/src/sprite.c
index d2ea7889c..e25eac62e 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -285,10 +285,10 @@ static const struct OamDimensions sOamDimensions[3][4] =
};
// iwram bss
-IWRAM_DATA static u16 sSpriteTileRangeTags[MAX_SPRITES];
-IWRAM_DATA static u16 sSpriteTileRanges[MAX_SPRITES * 2];
-IWRAM_DATA static struct AffineAnimState sAffineAnimStates[OAM_MATRIX_COUNT];
-IWRAM_DATA static u16 sSpritePaletteTags[16];
+static u16 sSpriteTileRangeTags[MAX_SPRITES];
+static u16 sSpriteTileRanges[MAX_SPRITES * 2];
+static struct AffineAnimState sAffineAnimStates[OAM_MATRIX_COUNT];
+static u16 sSpritePaletteTags[16];
// iwram common
u32 gOamMatrixAllocBitmap;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 886daa45a..5524d407b 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -51,7 +51,7 @@ void sub_81346DC(struct Sprite *sprite);
void sub_813473C(struct Sprite *sprite);
void StarterPokemonSpriteCallback(struct Sprite *sprite);
-static IWRAM_DATA u16 sStarterChooseWindowId;
+static u16 sStarterChooseWindowId;
// .rodata
const u16 gBirchBagGrassPal[][16] =
diff --git a/src/strings.c b/src/strings.c
index 793256edb..8463cfacb 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -424,45 +424,45 @@ const u8 gText_PkmnGotOverInfatuation[] = _("{STR_VAR_1} got over its\ninfatuati
const u8 gText_ThrowAwayItem[] = _("Throw away this\n{STR_VAR_1}?");
const u8 gText_ItemThrownAway[] = _("The {STR_VAR_1}\nwas thrown away.{PAUSE_UNTIL_PRESS}");
const u8 gUnknown_085E9E2E[] = _("Teach which POKéMON?");
-const u8 gUnknown_085E9E43[] = _("Choose a POKéMON.");
-const u8 gUnknown_085E9E55[] = _("Move to where?");
-const u8 gUnknown_085E9E64[] = _("Teach which POKéMON?");
-const u8 gUnknown_085E9E79[] = _("Use on which POKéMON?");
-const u8 gUnknown_085E9E8F[] = _("Give to which POKéMON?");
-const u8 gUnknown_085E9EA6[] = _("Do what with this {PKMN}?");
-const u8 gUnknown_085E9EBC[] = _("There's nothing to CUT.");
-const u8 gUnknown_085E9ED4[] = _("You can't SURF here.");
-const u8 gUnknown_085E9EE9[] = _("You're already SURFING.");
-const u8 gUnknown_085E9F01[] = _("Can't use that here.");
-const u8 gUnknown_085E9F16[] = _("Restore which move?");
-const u8 gUnknown_085E9F2A[] = _("Boost PP of which move?");
-const u8 gUnknown_085E9F42[] = _("Do what with an item?");
-const u8 gUnknown_085E9F58[] = _("No POKéMON for battle!");
-const u8 gUnknown_085E9F6F[] = _("Choose a POKéMON.");
-const u8 gUnknown_085E9F81[] = _("Not enough HP…");
-const u8 gUnknown_085E9F90[] = _("{STR_VAR_1} POKéMON are needed.");
-const u8 gUnknown_085E9FA7[] = _("POKéMON can't be the same.");
-const u8 gUnknown_085E9FC2[] = _("No identical hold items.");
-const u8 gUnknown_085E9FDB[] = _("The current is much too fast!");
-const u8 gUnknown_085E9FF9[] = _("Do what with the MAIL?");
-const u8 gUnknown_085EA010[] = _("Choose POKéMON or CANCEL.");
-const u8 gUnknown_085EA02A[] = _("Choose POKéMON and confirm.");
-const u8 gUnknown_085EA046[] = _("Let's enjoy cycling!");
-const u8 gUnknown_085EA05B[] = _("This is in use already.");
-const u8 gUnknown_085EA073[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.");
-const u8 gUnknown_085EA091[] = _("No use.");
-const u8 gUnknown_085EA099[] = _("ABLE");
-const u8 gUnknown_085EA09E[] = _("FIRST");
-const u8 gUnknown_085EA0A4[] = _("SECOND");
-const u8 gUnknown_085EA0AB[] = _("THIRD");
-const u8 gUnknown_085EA0B1[] = _("ABLE");
-const u8 gUnknown_085EA0B6[] = _("NOT ABLE");
-const u8 gUnknown_085EA0BF[] = _("ABLE!");
-const u8 gUnknown_085EA0C5[] = _("NOT ABLE!");
-const u8 gUnknown_085EA0CF[] = _("LEARNED");
-const u8 gUnknown_085EA0D7[] = _("HAVE");
-const u8 gUnknown_085EA0DC[] = _("DON'T HAVE");
-const u8 gUnknown_085EA0E7[] = _("FOURTH");
+const u8 gText_ChoosePokemon[] = _("Choose a POKéMON.");
+const u8 gText_MoveToWhere[] = _("Move to where?");
+const u8 gText_TeachWhichPokemon[] = _("Teach which POKéMON?");
+const u8 gText_UseOnWhichPokemon[] = _("Use on which POKéMON?");
+const u8 gText_GiveToWhichPokemon[] = _("Give to which POKéMON?");
+const u8 gText_DoWhatWithPokemon[] = _("Do what with this {PKMN}?");
+const u8 gText_NothingToCut[] = _("There's nothing to CUT.");
+const u8 gText_CantSurfHere[] = _("You can't SURF here.");
+const u8 gText_AlreadySurfing[] = _("You're already SURFING.");
+const u8 gText_CantUseHere[] = _("Can't use that here.");
+const u8 gText_RestoreWhichMove[] = _("Restore which move?");
+const u8 gText_BoostPp[] = _("Boost PP of which move?");
+const u8 gText_DoWhatWithItem[] = _("Do what with an item?");
+const u8 gText_NoPokemonForBattle[] = _("No POKéMON for battle!");
+const u8 gText_ChoosePokemon2[] = _("Choose a POKéMON.");
+const u8 gText_NotEnoughHp[] = _("Not enough HP…");
+const u8 gText_PokemonAreNeeded[] = _("{STR_VAR_1} POKéMON are needed.");
+const u8 gText_PokemonCantBeSame[] = _("POKéMON can't be the same.");
+const u8 gText_NoIdenticalHoldItems[] = _("No identical hold items.");
+const u8 gText_CurrentIsTooFast[] = _("The current is much too fast!");
+const u8 gText_DoWhatWithMail[] = _("Do what with the MAIL?");
+const u8 gText_ChoosePokemonCancel[] = _("Choose POKéMON or CANCEL.");
+const u8 gText_ChoosePokemonConfirm[] = _("Choose POKéMON and confirm.");
+const u8 gText_EnjoyCycling[] = _("Let's enjoy cycling!");
+const u8 gText_InUseAlready_PM[] = _("This is in use already.");
+const u8 gText_AlreadyHoldingOne[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}.");
+const u8 gText_NoUse[] = _("No use.");
+const u8 gText_Able[] = _("ABLE");
+const u8 gText_First_PM[] = _("FIRST");
+const u8 gText_Second_PM[] = _("SECOND");
+const u8 gText_Third_PM[] = _("THIRD");
+const u8 gText_Able2[] = _("ABLE");
+const u8 gText_NotAble[] = _("NOT ABLE");
+const u8 gText_Able3[] = _("ABLE!");
+const u8 gText_NotAble2[] = _("NOT ABLE!");
+const u8 gText_Learned[] = _("LEARNED");
+const u8 gText_Have[] = _("HAVE");
+const u8 gText_DontHave[] = _("DON'T HAVE");
+const u8 gText_Fourth[] = _("FOURTH");
const u8 gText_PkmnCantParticipate[] = _("That POKéMON can't participate.{PAUSE_UNTIL_PRESS}");
const u8 gText_CancelParticipation[] = _("Cancel participation?");
const u8 gText_CancelBattle[] = _("Cancel the battle?");
diff --git a/src/text.c b/src/text.c
index 43834eab4..7e4fa7104 100644
--- a/src/text.c
+++ b/src/text.c
@@ -197,7 +197,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi
gTempTextPrinter.textSpeed = 0;
for (j = 0; j < 0x400; ++j)
{
- if ((u32)RenderFont(&gTempTextPrinter) == 1)
+ if (RenderFont(&gTempTextPrinter) == 1)
break;
}
@@ -462,6 +462,108 @@ u8 GetLastTextColor(u8 colorType)
}
}
+#ifdef NONMATCHING
+
+#define GLYPH_COPY(fromY_, toY_, fromX_, toX_, unk) \
+{ \
+ u32 i, j, *ptr, toY, fromX, toX, r5, toOrr, bits; \
+ u8 *dst; \
+ \
+ j = fromX_; \
+ i = fromY_; \
+ ptr = unk; \
+ toX = toX_; \
+ toY = toY_; \
+ fromX = fromX_; \
+ \
+ for (; i < toY; i++) \
+ { \
+ r5 = *(ptr++); \
+ for (j = fromX; j < toX; j++) \
+ { \
+ toOrr = r5 & 0xF; \
+ if (toOrr) \
+ { \
+ dst = windowTiles + ((j / 8) * 32) + ((j & 7) / 2) + ((i / 8) * widthOffset) + ((i & 7) * 4); \
+ bits = ((j & 1) << 2); \
+ *dst = ((toOrr << bits) | (*dst & (0xF0 >> bits))); \
+ } \
+ r5 >>= 4; \
+ } \
+ } \
+}
+
+void CopyGlyphToWindow(struct TextPrinter *textPrinter)
+{
+ struct Window *win;
+ struct WindowTemplate *winTempl;
+ struct Struct_03002F90 *unkStruct;
+ u32 currX, widthOffset, currY;
+ s32 r4, r0;
+ u8 *windowTiles;
+
+ win = &gWindows[textPrinter->printerTemplate.windowId];
+ winTempl = &win->window;
+
+ r4 = (winTempl->width * 8) - textPrinter->printerTemplate.currentX;
+ if (r4 > gUnknown_03002F90.unk80)
+ r4 = gUnknown_03002F90.unk80;
+
+ r0 = (winTempl->height * 8) - textPrinter->printerTemplate.currentY;
+ if (r0 > gUnknown_03002F90.unk81)
+ r0 = gUnknown_03002F90.unk81;
+
+ currX = textPrinter->printerTemplate.currentX;
+ currY = textPrinter->printerTemplate.currentY;
+ unkStruct = &gUnknown_03002F90;
+ windowTiles = win->tileData;
+ widthOffset = winTempl->width * 32;
+
+ if (r4 <= 8)
+ {
+ if (r0 <= 8)
+ {
+ GLYPH_COPY(currY, currY + r0, currX, currX + r4, unkStruct->unk0);
+ }
+ else
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + 8, currX, currX + r4, unkStruct->unk0);
+
+ temp = currY + 8;
+ GLYPH_COPY(temp, (temp - 8) + r0, currX, currX + r4, unkStruct->unk40);
+ }
+ }
+ else
+ {
+ if (r0 <= 8)
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + r0, currX, currX + 8, unkStruct->unk0);
+
+ temp = currX + 8;
+ GLYPH_COPY(currY, currY + r0, temp, (temp - 8) + r4, unkStruct->unk20);
+ }
+ else
+ {
+ u32 temp;
+ GLYPH_COPY(currY, currY + 8, currX, currX + 8, unkStruct->unk0);
+
+ temp = currX + 8;
+ GLYPH_COPY(currY, currY + 8, temp, temp - 8 + r4, unkStruct->unk20);
+
+ temp = currY + 8;
+ GLYPH_COPY(temp, temp - 8 + r0, currX, currX + 8, unkStruct->unk40);
+ {
+ u32 tempX, tempY;
+ tempX = currX + 8;
+ tempY = currY + 8;
+ GLYPH_COPY(tempY, tempY - 8 + r0, tempX, tempX - 8 + r4, unkStruct->unk60);
+ }
+ }
+ }
+}
+#else
NAKED
void CopyGlyphToWindow(struct TextPrinter *x)
{
@@ -1164,6 +1266,7 @@ _080052AA:\n\
bx r0\n\
.pool");
}
+#endif // NONMATCHING
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
{
diff --git a/src/trade.c b/src/trade.c
index d97325174..94accc43c 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -158,6 +158,9 @@ static EWRAM_DATA struct {
/*0xFE*/ u8 unk_FE;
} *gUnknown_020322A0 = {NULL};
+#if !defined(NONMATCHING) && MODERN
+#define static
+#endif
static bool32 sub_8077260(void);
static void sub_80773D0(void);
static void sub_807811C(void);
@@ -2779,7 +2782,7 @@ static void sub_8079398(void)
}
}
-static void DisplayMessageAndContinueTask(void)
+static void Wait2SecondsAndCreateYesNoMenu(void)
{
gUnknown_0203229C->unk_A8++;
@@ -2918,7 +2921,7 @@ static void sub_80795AC(void)
sub_80781C8();
break;
case 14:
- DisplayMessageAndContinueTask();
+ Wait2SecondsAndCreateYesNoMenu();
break;
case 15:
sub_8079034();
@@ -5840,7 +5843,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
SetMonData(pokemon, MON_DATA_NICKNAME, inGameTrade->name);
SetMonData(pokemon, MON_DATA_OT_NAME, inGameTrade->otName);
SetMonData(pokemon, MON_DATA_OT_GENDER, &inGameTrade->otGender);
- SetMonData(pokemon, MON_DATA_ALT_ABILITY, &inGameTrade->secondAbility);
+ SetMonData(pokemon, MON_DATA_ABILITY_NUM, &inGameTrade->secondAbility);
SetMonData(pokemon, MON_DATA_BEAUTY, &inGameTrade->stats[1]);
SetMonData(pokemon, MON_DATA_CUTE, &inGameTrade->stats[2]);
SetMonData(pokemon, MON_DATA_COOL, &inGameTrade->stats[0]);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 52a060ae9..9c4816c42 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -106,7 +106,7 @@ static void sub_80C438C(u8);
static void sub_80C4FF0(void);
static void sub_80C4550(u16*);
static void sub_80C45C0(u16*);
-static void sub_80C4630(void);
+static void TrainerCard_PrintStarsAndBadgesOnCard(void);
static void PrintTimeOnCard(void);
static void sub_80C4918(void);
static bool8 sub_80C4940(void);
@@ -117,7 +117,7 @@ static bool8 HasAllFrontierSymbols(void);
static u8 GetRubyTrainerStars(struct TrainerCard*);
static u16 GetCaughtMonsCount(void);
static void SetPlayerCardData(struct TrainerCard*, u8);
-static void sub_80C3020(struct TrainerCard*);
+static void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard*);
static u8 VersionToCardType(u8);
static void SetDataFromTrainerCard(void);
static void HandleGpuRegs(void);
@@ -141,7 +141,7 @@ static void PrintBerryCrushStringOnCard(void);
static void PrintPokeblockStringOnCard(void);
static void PrintUnionStringOnCard(void);
static void PrintContestStringOnCard(void);
-static void sub_80C4140(void);
+static void TrainerCard_PrintPokemonIconsOnCard(void);
static void PrintBattleFacilityStringOnCard(void);
static void sub_80C42A4(void);
static void PrintAllVariableNumsOnCardPage2(void);
@@ -179,17 +179,17 @@ static const u16 gEmeraldTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_c
static const u16 gFireRedTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_card/three_stars_fr.gbapal");
static const u16 gEmeraldTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars.gbapal");
static const u16 gFireRedTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars_fr.gbapal");
-static const u16 gUnknown_0856F4AC[] = INCBIN_U16("graphics/trainer_card/female_bg.gbapal");
-static const u16 gUnknown_0856F4CC[] = INCBIN_U16("graphics/trainer_card/female_bg_fr.gbapal");
-static const u16 gUnknown_0856F4EC[] = INCBIN_U16("graphics/trainer_card/badges.gbapal");
-static const u16 gUnknown_0856F50C[] = INCBIN_U16("graphics/trainer_card/badges_fr.gbapal");
+static const u16 sEmeraldTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg.gbapal");
+static const u16 sFireRedTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg_fr.gbapal");
+static const u16 sEmeraldTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges.gbapal");
+static const u16 sFireRedTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges_fr.gbapal");
static const u16 gUnknown_0856F52C[] = INCBIN_U16("graphics/trainer_card/gold.gbapal");
static const u16 gUnknown_0856F54C[] = INCBIN_U16("graphics/trainer_card/stickers_fr1.gbapal");
static const u16 gUnknown_0856F56C[] = INCBIN_U16("graphics/trainer_card/stickers_fr2.gbapal");
static const u16 gUnknown_0856F58C[] = INCBIN_U16("graphics/trainer_card/stickers_fr3.gbapal");
static const u16 gUnknown_0856F5AC[] = INCBIN_U16("graphics/trainer_card/stickers_fr4.gbapal");
-static const u32 gUnknown_0856F5CC[] = INCBIN_U32("graphics/trainer_card/badges.4bpp.lz");
-static const u32 gUnknown_0856F814[] = INCBIN_U32("graphics/trainer_card/badges_fr.4bpp.lz");
+static const u32 sEmeraldTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/badges.4bpp.lz");
+static const u32 sFireRedTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/badges_fr.4bpp.lz");
static const struct BgTemplate gUnknown_0856FAB4[4] =
{
@@ -376,7 +376,7 @@ static void sub_80C2760(u8 taskId)
sData->var_0++;
break;
case 6:
- sub_80C4630();
+ TrainerCard_PrintStarsAndBadgesOnCard();
sData->var_0++;
break;
case 7:
@@ -528,9 +528,9 @@ static bool8 LoadCardGfx(void)
break;
case 3:
if (sData->cardType != CARD_TYPE_FRLG)
- LZ77UnCompWram(gUnknown_0856F5CC, sData->var_13A8);
+ LZ77UnCompWram(sEmeraldTrainerCardBadges_Tile, sData->var_13A8);
else
- LZ77UnCompWram(gUnknown_0856F814, sData->var_13A8);
+ LZ77UnCompWram(sFireRedTrainerCardBadges_Tile, sData->var_13A8);
break;
case 4:
if (sData->cardType != CARD_TYPE_FRLG)
@@ -722,7 +722,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
}
}
-static void sub_80C3020(struct TrainerCard *trainerCard)
+static void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard)
{
memset(trainerCard, 0, sizeof(struct TrainerCard));
trainerCard->version = GAME_VERSION;
@@ -733,9 +733,9 @@ static void sub_80C3020(struct TrainerCard *trainerCard)
trainerCard->stars++;
if (trainerCard->gender == FEMALE)
- trainerCard->var_4F = gUnknown_08329D54[(trainerCard->trainerId % 8) + 8];
+ trainerCard->var_4F = gLinkPlayerFacilityClasses[(trainerCard->trainerId % 8) + 8];
else
- trainerCard->var_4F = gUnknown_08329D54[trainerCard->trainerId % 8];
+ trainerCard->var_4F = gLinkPlayerFacilityClasses[trainerCard->trainerId % 8];
}
void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard)
@@ -749,9 +749,9 @@ void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard)
trainerCard->stars++;
if (trainerCard->gender == FEMALE)
- trainerCard->var_4F = gUnknown_08329D54[(trainerCard->trainerId % 8) + 8];
+ trainerCard->var_4F = gLinkPlayerFacilityClasses[(trainerCard->trainerId % 8) + 8];
else
- trainerCard->var_4F = gUnknown_08329D54[trainerCard->trainerId % 8];
+ trainerCard->var_4F = gLinkPlayerFacilityClasses[trainerCard->trainerId % 8];
}
void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion)
@@ -938,7 +938,7 @@ static bool8 PrintStringsOnCardPage2(void)
PrintContestStringOnCard();
break;
case 6:
- sub_80C4140();
+ TrainerCard_PrintPokemonIconsOnCard();
PrintBattleFacilityStringOnCard();
break;
case 7:
@@ -1300,7 +1300,7 @@ static void PrintBattleFacilityStringOnCard(void)
}
}
-static void sub_80C4140(void)
+static void TrainerCard_PrintPokemonIconsOnCard(void)
{
u8 i;
u8 buffer[] = {0x05, 0x06, 0x07, 0x08, 0x09, 0x0a};
@@ -1312,7 +1312,7 @@ static void sub_80C4140(void)
{
if (sData->trainerCard.monSpecies[i])
{
- u8 monSpecies = sub_80D30A0(sData->trainerCard.monSpecies[i]);
+ u8 monSpecies = GetMonIconPaletteIndexFromSpecies(sData->trainerCard.monSpecies[i]);
WriteSequenceToBgTilemapBuffer(3, 16 * i + 224, buffer2[i] + 3, 15, 4, 4, buffer[monSpecies], 1);
}
}
@@ -1392,16 +1392,16 @@ static u8 SetCardBgsAndPals(void)
if (sData->cardType != CARD_TYPE_FRLG)
{
LoadPalette(gEmeraldTrainerCardStarPals[sData->trainerCard.stars], 0, 96);
- LoadPalette(gUnknown_0856F4EC, 48, 32);
+ LoadPalette(sEmeraldTrainerCardBadges_Pal, 48, 32);
if (sData->trainerCard.gender)
- LoadPalette(gUnknown_0856F4AC, 16, 32);
+ LoadPalette(sEmeraldTrainerCardFemaleBackground_Pal, 16, 32);
}
else
{
LoadPalette(gFireRedTrainerCardStarPals[sData->trainerCard.stars], 0, 96);
- LoadPalette(gUnknown_0856F50C, 48, 32);
+ LoadPalette(sFireRedTrainerCardBadges_Pal, 48, 32);
if (sData->trainerCard.gender)
- LoadPalette(gUnknown_0856F4CC, 16, 32);
+ LoadPalette(sFireRedTrainerCardFemaleBackground_Pal, 16, 32);
}
LoadPalette(gUnknown_0856F52C, 64, 32);
break;
@@ -1458,7 +1458,7 @@ static void sub_80C45C0(u16* ptr)
static const u8 gUnknown_0856FB78[] = {7, 7};
-static void sub_80C4630(void)
+static void TrainerCard_PrintStarsAndBadgesOnCard(void)
{
s16 i, x;
u16 tileNum = 192;
@@ -1684,7 +1684,7 @@ static bool8 sub_80C4C1C(struct Task* task)
sub_80C438C(2);
sub_80C4550(sData->var_EF8);
sub_80C45C0(sData->var_598);
- sub_80C4630();
+ TrainerCard_PrintStarsAndBadgesOnCard();
}
sub_80C438C(1);
sData->var_8 ^= 1;
@@ -1764,7 +1764,7 @@ void ShowPlayerTrainerCard(void (*callback)(void))
sData->isLink = FALSE;
sData->language = GAME_LANGUAGE;
- sub_80C3020(&sData->trainerCard);
+ TrainerCard_GenerateCardForLinkPlayer(&sData->trainerCard);
SetMainCallback2(CB2_InitTrainerCard);
}
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 650a748cb..77c8fcb53 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -915,7 +915,7 @@ void SetHillTrainerFlag(void)
}
}
-const u8 *sub_81D62AC(void)
+const u8 *GetTrainerHillTrainerScript(void)
{
return EventScript_2C83F0;
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index 6824e8747..047783a85 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -104,7 +104,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8
if (paletteTag == 0xFFFF)
{
sCreatingSpriteTemplate.paletteTag = 0xFFFF;
- LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20);
}
else
{
@@ -130,7 +130,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8
static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer)
{
if (!isTrainer)
- LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20);
else
LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20);
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 9925aa6bc..22b256a99 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -235,7 +235,7 @@ static u8 CheckTrainer(u8 eventObjectId)
u8 approachDistance;
if (InTrainerHill() == TRUE)
- scriptPtr = sub_81D62AC();
+ scriptPtr = GetTrainerHillTrainerScript();
else
scriptPtr = GetEventObjectScriptPointerByEventObjectId(eventObjectId);
diff --git a/src/tv.c b/src/tv.c
index 01b43f100..b4c8463fd 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -56,9 +56,9 @@ struct {
u16 move;
} sTV_SecretBaseVisitMonsTemp[10];
-IWRAM_DATA u8 sTVShowMixingNumPlayers;
-IWRAM_DATA u8 sTVShowNewsMixingNumPlayers;
-IWRAM_DATA s8 sTVShowMixingCurSlot;
+static u8 sTVShowMixingNumPlayers;
+static u8 sTVShowNewsMixingNumPlayers;
+static s8 sTVShowMixingCurSlot;
EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
@@ -69,10 +69,9 @@ EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
// Static ROM declarations
-
-extern const u8 *const sTVBravoTrainerTextGroup[];
-extern const u8 *const sTVBravoTrainerBattleTowerTextGroup[];
-
+#if !defined(NONMATCHING) && MODERN
+#define static
+#endif
void ClearPokemonNews(void);
u8 GetTVChannelByShowType(u8 kind);
u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void);
@@ -3434,7 +3433,7 @@ bool8 TV_IsScriptShowKindAlreadyInQueue(void)
return FALSE;
}
-bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void)
+bool8 TV_PutNameRaterShowOnTheAirIfNicknameChanged(void)
{
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
if (!StringCompare(gStringVar3, gStringVar1))
diff --git a/src/union_room.c b/src/union_room.c
index 6e7c0965d..01288c8cc 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1,53 +1,54 @@
#include "global.h"
-#include "window.h"
+#include "alloc.h"
+#include "battle.h"
+#include "berry_crush.h"
#include "bg.h"
-#include "random.h"
-#include "string_util.h"
-#include "task.h"
+#include "cable_club.h"
+#include "data.h"
+#include "decompress.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
#include "event_data.h"
+#include "event_obj_lock.h"
+#include "field_control_avatar.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_weather.h"
+#include "international_string_util.h"
+#include "librfu.h"
#include "link.h"
#include "link_rfu.h"
-#include "librfu.h"
-#include "alloc.h"
-#include "menu.h"
#include "list_menu.h"
+#include "load_save.h"
+#include "menu.h"
#include "menu_helpers.h"
-#include "script.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "constants/game_stat.h"
-#include "constants/maps.h"
-#include "constants/species.h"
-#include "constants/rgb.h"
-#include "constants/battle_frontier.h"
-#include "trade.h"
-#include "trainer_card.h"
+#include "mevent.h"
+#include "mystery_gift.h"
#include "overworld.h"
-#include "battle.h"
-#include "load_save.h"
-#include "cable_club.h"
-#include "field_control_avatar.h"
-#include "party_menu.h"
-#include "field_weather.h"
#include "palette.h"
-#include "decompress.h"
-#include "start_menu.h"
-#include "data.h"
-#include "field_screen_effect.h"
+#include "party_menu.h"
+#include "pokemon_jump.h"
+#include "random.h"
+#include "script.h"
#include "script_pokemon_util_80F87D8.h"
-#include "international_string_util.h"
-#include "field_player_avatar.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "string_util.h"
#include "strings.h"
-#include "mevent.h"
-#include "dynamic_placeholder_text_util.h"
+#include "task.h"
+#include "trade.h"
+#include "trainer_card.h"
#include "union_room.h"
-#include "easy_chat.h"
-#include "event_obj_lock.h"
#include "union_room_chat.h"
-#include "berry_crush.h"
-#include "mystery_gift.h"
#include "union_room_player_avatar.h"
-#include "pokemon_jump.h"
+#include "window.h"
+#include "constants/battle_frontier.h"
+#include "constants/game_stat.h"
+#include "constants/maps.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
EWRAM_DATA u8 gUnknown_02022C20[12] = {};
EWRAM_DATA u8 gUnknown_02022C2C = 0;
@@ -60,9 +61,9 @@ EWRAM_DATA u8 gUnknown_02022C3E = 0;
EWRAM_DATA struct TradeUnkStruct gUnknown_02022C40 = {};
// IWRAM vars
-IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
-IWRAM_DATA struct UnkStruct_Group *gUnknown_03000DA4;
-IWRAM_DATA struct UnkStruct_URoom *gUnknown_03000DA8;
+static struct UnkStruct_Leader *gUnknown_03000DA0;
+static struct UnkStruct_Group *gUnknown_03000DA4;
+static struct UnkStruct_URoom *gUnknown_03000DA8;
// this file's functions
void sub_80173E0(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5);
@@ -98,7 +99,6 @@ bool32 sub_8017678(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1)
u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId);
void sub_801807C(struct TradeUnkStruct *arg0);
void sub_801AC54(void);
-void sub_802493C(u8 monId, MainCallback callback);
void sub_80149D8(void);
void MG_DrawTextBorder(u8 windowId);
s8 mevent_message_print_and_prompt_yes_no(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index 9d9f9dcf3..79d12291d 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -40,8 +40,7 @@ struct UnkStruct_2022C6C
s16 a0;
};
-IWRAM_DATA struct UnkStruct_3000DAC * gUnknown_03000DAC;
-IWRAM_DATA bool32 gUnknown_03000DB0;
+static struct UnkStruct_3000DAC * gUnknown_03000DAC;
EWRAM_DATA struct UnkStruct_2022C6C * gUnknown_02022C6C = NULL;
diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c
index 4c302c5eb..0b7324366 100644
--- a/src/union_room_player_avatar.c
+++ b/src/union_room_player_avatar.c
@@ -1,13 +1,14 @@
#include "global.h"
-#include "constants/flags.h"
-#include "constants/event_object_movement_constants.h"
#include "event_data.h"
#include "event_object_movement.h"
-#include "script.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "union_room.h"
+#include "script.h"
#include "task.h"
+#include "union_room.h"
+#include "constants/event_objects.h"
+#include "constants/event_object_movement_constants.h"
+#include "constants/flags.h"
EWRAM_DATA struct UnkStruct_8019BA8 * gUnknown_02022C64 = NULL;
EWRAM_DATA u32 gUnknown_02022C68 = 0;
@@ -390,7 +391,7 @@ void sub_8019E70(u8 * sp8, s32 r9)
for (r7 = 0; r7 < 5; r7++)
{
s32 r5 = 5 * r9 + r7;
- sp8[r5] = sprite_new(0x41, r5 - 0x38, gUnknown_082F0740[r9][0] + gUnknown_082F0760[r7][0], gUnknown_082F0740[r9][1] + gUnknown_082F0760[r7][1], 3, 1);
+ sp8[r5] = sprite_new(EVENT_OBJ_GFX_MAN_4, r5 - 0x38, gUnknown_082F0740[r9][0] + gUnknown_082F0760[r7][0], gUnknown_082F0740[r9][1] + gUnknown_082F0760[r7][1], 3, 1);
sub_8097C44(r5 - 0x38, TRUE);
}
}
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index f28b651cc..655f38def 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -85,6 +85,10 @@ struct UsePokeblockStruct
/*0x7FD0*/ struct UsePokeblockSubStruct info;
};
+#define TAG_TILE_CONDITION_UP_DOWN 0
+#define TAG_PAL_CONDITION_UP_DOWN 0
+#define TAG_PAL_POKEBLOCK_CONDITION 1
+
extern void sub_81D21DC(u8);
// this file's functions
@@ -130,26 +134,12 @@ static u8 sub_8168048(void);
void sub_8168180(struct Sprite *sprite);
void sub_81681B4(struct Sprite *sprite);
void sub_8168168(struct Sprite *sprite);
+void sub_8168374(struct Sprite *sprite);
-extern const struct BgTemplate gUnknown_085DFCCC[4];
-extern const struct WindowTemplate gUnknown_085DFCDC[];
-extern const struct WindowTemplate sUsePokeblockYesNoWinTemplate[];
-extern const u8* sContestStatNames[];
-extern const u32 gUnknown_085DFCB0[];
-extern const u8 gUnknown_085DFCC4[];
-extern const struct SpriteSheet gSpriteSheet_ConditionUpDown;
-extern const struct SpritePalette gSpritePalette_ConditionUpDown;
-extern const struct SpriteTemplate gSpriteTemplate_085DFD5C;
-extern const s16 gUnknown_085DFD28[][2];
-extern const u32 gUnknown_085DFB60[];
-extern const u32 gUnknown_085DFA80[];
-extern const u32 gUnknown_085DFA60[];
-extern const u32 gUnknown_085DFC0C[];
extern const u16 gUnknown_086231E8[];
extern const u16 gUnknown_08623208[];
-extern const u8 gUnknown_085DFCC9[];
-extern const struct SpritePalette gUnknown_085DFDB8;
-extern const struct SpriteTemplate gUnknown_085DFDA0;
+extern const struct SpritePalette gSpritePalette_085DFDB8;
+extern const struct SpriteTemplate gSpriteTemplate_085DFDA0;
// ram variables
EWRAM_DATA struct UsePokeblockSubStruct *gUnknown_0203BC90 = NULL;
@@ -165,6 +155,245 @@ EWRAM_DATA struct UsePokeblockStruct *gUnknown_0203BCAC = NULL;
// const rom data
// todo: make it static once the file is decompiled
+const u32 gUnknown_085DFA60[] = INCBIN_U32("graphics/interface/85DFA60.bin");
+const u32 gUnknown_085DFA80[] = INCBIN_U32("graphics/interface/85DFA80.4bpp");
+const u32 gUnknown_085DFB60[] = INCBIN_U32("graphics/interface/85DFB60.bin");
+const u32 gUnknown_085DFC0C[] = INCBIN_U32("graphics/interface/85DFC0C.bin");
+
+const u32 gUnknown_085DFCB0[] =
+{
+ MON_DATA_COOL,
+ MON_DATA_TOUGH,
+ MON_DATA_SMART,
+ MON_DATA_CUTE,
+ MON_DATA_BEAUTY
+};
+
+const u8 gUnknown_085DFCC4[] =
+{
+ 0, // Spicy/Cool
+ 4, // Dry/Beauty
+ 3, // Sweet/Cute
+ 2, // Bitter/Smart
+ 1 // Sour/Tough
+};
+
+const u8 gUnknown_085DFCC9[] =
+{
+ 0,
+ 8,
+ 1
+};
+
+const struct BgTemplate gUnknown_085DFCCC[4] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x1E,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1D,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x100
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x17,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ }
+};
+
+const struct WindowTemplate gUnknown_085DFCDC[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 0xD,
+ .tilemapTop = 1,
+ .width = 0xD,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 1
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0xE,
+ .width = 0xB,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x35
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 0x11,
+ .width = 0x1C,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x4B
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate sUsePokeblockYesNoWinTemplate =
+{
+ .bg = 0,
+ .tilemapLeft = 0x18,
+ .tilemapTop = 0xB,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x83
+};
+
+const u8 *const sContestStatNames[] =
+{
+ gText_Coolness,
+ gText_Toughness,
+ gText_Smartness,
+ gText_Cuteness,
+ gText_Beauty3
+};
+
+const struct SpriteSheet gSpriteSheet_ConditionUpDown =
+{
+ gUsePokeblockUpDown_Gfx, 0x200, TAG_TILE_CONDITION_UP_DOWN
+};
+
+const struct SpritePalette gSpritePalette_ConditionUpDown =
+{
+ gUsePokeblockUpDown_Pal, TAG_PAL_CONDITION_UP_DOWN
+};
+
+const s16 gUnknown_085DFD28[][2] =
+{
+ {0x9C, 0x24},
+ {0x75, 0x3B},
+ {0x75, 0x76},
+ {0xC5, 0x76},
+ {0xC5, 0x3B}
+};
+
+const struct OamData gOamData_085DFD3C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const union AnimCmd gSpriteAnim_085DFD44[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD4C[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_085DFD54[] =
+{
+ gSpriteAnim_085DFD44,
+ gSpriteAnim_085DFD4C
+};
+
+const struct SpriteTemplate gSpriteTemplate_085DFD5C =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gOamData_085DFD3C,
+ .anims = gSpriteAnimTable_085DFD54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gOamData_085DFD74 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const union AnimCmd gSpriteAnim_085DFD7C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD84[] =
+{
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_085DFD8C[] =
+{
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_085DFD94[] =
+{
+ gSpriteAnim_085DFD7C,
+ gSpriteAnim_085DFD84,
+ gSpriteAnim_085DFD8C
+};
+
+const struct SpriteTemplate gSpriteTemplate_085DFDA0 =
+{
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &gOamData_085DFD74,
+ .anims = gSpriteAnimTable_085DFD94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8168374,
+};
+
+const struct SpritePalette gSpritePalette_085DFDB8 =
+{
+ gUsePokeblockCondition_Pal, TAG_PAL_POKEBLOCK_CONDITION
+};
+
// code
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void))
{
@@ -618,7 +847,7 @@ void sub_8166D44(void)
AddTextPrinterParameterized(2, 1, gStringVar4, 0, 1, 0, NULL);
PutWindowTilemap(2);
CopyWindowToVram(2, 3);
- CreateYesNoMenu(sUsePokeblockYesNoWinTemplate, 151, 14, 0);
+ CreateYesNoMenu(&sUsePokeblockYesNoWinTemplate, 151, 14, 0);
}
s8 sub_8166DE4(void)
@@ -1373,7 +1602,7 @@ static void sub_8168248(void)
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePalette;
- spritePalette = gUnknown_085DFDB8;
+ spritePalette = gSpritePalette_085DFDB8;
spriteSheet.data = gUsePokeblockCondition_Gfx;
spriteSheet.size = 0x800;
spriteSheet.tag = 1;
@@ -1388,7 +1617,7 @@ static void sub_8168294(void)
int yStart = 17;
int var = 8;
struct Sprite **sprites = gUnknown_0203BCAC->field_7B44;
- const struct SpriteTemplate *template = &gUnknown_085DFDA0;
+ const struct SpriteTemplate *template = &gSpriteTemplate_085DFDA0;
for (i = 0, xDiff = 64, xStart = -96; i < 2; i++)
{
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index e42bf8a23..84275526e 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -42,6 +42,16 @@ EWRAM_DATA static u32 sFeebasRngValue = 0;
#include "data/wild_encounters.h"
+//Special Feebas-related data.
+const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
+
+const u16 gRoute119WaterTileData[] =
+{
+ 0, 0x2D, 0,
+ 0x2E, 0x5B, 0x83,
+ 0x5C, 0x8B, 0x12A,
+};
+
// code
void DisableWildEncounters(bool8 disabled)
{