diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-10-31 23:38:46 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-10-31 23:38:46 -0700 |
commit | 87c0040c1adca9b41a779a89a1aaedc63849f0df (patch) | |
tree | 8bb2aeb5778f0f1c8333fb0eb9aa6d6ffa8791cf /src | |
parent | fc786f80fd10732d23759e7c647f15406a5162d0 (diff) |
Decompile FillBattleTowerTrainerParty()
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_tower.c | 696 |
1 files changed, 255 insertions, 441 deletions
diff --git a/src/battle_tower.c b/src/battle_tower.c index d1c62d21e..5a335ddfa 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -816,91 +816,96 @@ void sub_8134AB4() sub_81349FC(200); } -// void sub_8134AC0(struct BattleTowerRecord *record) -// { -// u16 var1[5]; -// u16 var2[5]; -// s32 i, j, k; -// s16 l = 0; - -// for (i = 0; i < 5; i++) -// { -// k = 0; -// for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].var_C[i] != record->var_C[j]; j++); -// if (j == 4) -// { -// for (k = 0; k < 7 && gSaveBlock2.battleTower.records[i].var_8 == record->var_8; k++) -// { -// if (record->var_8 == 0xFF) -// { -// k = 7; -// break; -// } -// } -// } +#ifdef NONMATCHING +void sub_8134AC0(struct BattleTowerRecord *record) +{ + u16 var1[6]; + u16 var2[6]; + s32 i, j, k; + s16 l = 0; -// if (k == 7) -// { -// break; -// } -// } + for (i = 0; i < 5; i++) + { + k = 0; + for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].trainerId[j] == record->trainerId[j]; j++); + if (j == 4) + { + for (; k < 7 && gSaveBlock2.battleTower.records[i].name[4] == record->name[4]; k++) + { + if (record->name[4] == 0xFF) + { + k = 7; + break; + } + } + } -// if (i < 5) -// { -// gSaveBlock2.battleTower.records[i] = *record; -// return; -// } + if (k == 7) + { + break; + } + } -// i = 0; -// while (i < 5) -// { -// if (gSaveBlock2.battleTower.records[i].var_2 == 0) -// { -// if (i > 4) -// { -// break; -// } + if (i < 5) + { + gSaveBlock2.battleTower.records[i] = *record; + return; + } -// gSaveBlock2.battleTower.records[i] = *record; -// return; -// } + i = 0; + while (i < 5) + { + if (gSaveBlock2.battleTower.records[i].var_2 == 0) + { + if (i > 4) + { + break; + } -// i++; -// } + gSaveBlock2.battleTower.records[i] = *record; + return; + } -// var1[0] = gSaveBlock2.battleTower.records[0].var_2; -// var2[0] = 0; -// l++; + i++; + } -// for (i = 1; i < 5; i++) -// { -// for (j = 0; gSaveBlock2.battleTower.records[i].var_2 <= var1[0] && j < l; j++) -// { -// if (gSaveBlock2.battleTower.records[i].var_2 < var1[0]) -// { -// j = 0; -// l = 1; -// var1[0] = gSaveBlock2.battleTower.records[i].var_2; -// var2[0] = i; -// break; -// } -// } + var1[0] = gSaveBlock2.battleTower.records[0].var_2; + var2[0] = 0; + l++; -// if (j == l) -// { -// var1[l] = gSaveBlock2.battleTower.records[i].var_2; -// var2[l] = i; -// l++; -// } -// } + for (i = 1; i < 5; i++) + { + j = 0; + if (j < l) + { + for (; gSaveBlock2.battleTower.records[i].var_2 <= var1[j]; j++) + { + if (gSaveBlock2.battleTower.records[i].var_2 < var1[j]) + { + j = 0; + l = 1; + var1[0] = gSaveBlock2.battleTower.records[i].var_2; + var2[0] = i; + break; + } + } + } -// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; -// } + if (j == l) + { + var1[l] = gSaveBlock2.battleTower.records[i].var_2; + var2[l] = i; + l++; + } + } + gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; +} +#else __attribute__((naked)) void sub_8134AC0(struct BattleTowerRecord *record) { - asm(".syntax unified\n\ + asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ mov r6, r9\n\ @@ -1047,7 +1052,7 @@ _08134BC6:\n\ adds r0, r5, 0x1\n\ mov r12, r0\n\ cmp r3, r7\n\ - bge _08134C0A\n\ + bge _08134C0A @ j < l\n\ movs r1, 0xA4\n\ adds r0, r5, 0\n\ muls r0, r1\n\ @@ -1130,8 +1135,9 @@ _08134C5E:\n\ bx r0\n\ .align 2, 0\n\ _08134C70: .4byte gSaveBlock2\n\ -.syntax divided\n"); + .syntax divided\n"); } +#endif // NONMATCHING u8 get_trainer_class_pic_index(void) { @@ -1194,373 +1200,181 @@ void get_trainer_name(u8* dest) dest[i] = 0xFF; } -__attribute__((naked)) -void sub_8134DD4(void) +void FillBattleTowerTrainerParty(void) { - asm(".syntax 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, 0x28\n\ - movs r0, 0\n\ - str r0, [sp, 0x18]\n\ - movs r1, 0x3C\n\ - str r1, [sp, 0x1C]\n\ - add r4, sp, 0xC\n\ - movs r0, 0xFF\n\ - strb r0, [r4]\n\ - bl ZeroEnemyPartyMons\n\ - ldr r1, _08134E04 @ =gSaveBlock2\n\ - ldr r2, _08134E08 @ =0x00000564\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x13\n\ - bhi _08134E0C\n\ - movs r3, 0x6\n\ - str r3, [sp, 0x14]\n\ - b _08134ED8\n\ - .align 2, 0\n\ -_08134E04: .4byte gSaveBlock2\n\ -_08134E08: .4byte 0x00000564\n\ -_08134E0C:\n\ - cmp r0, 0x1D\n\ - bhi _08134E1A\n\ - movs r0, 0x9\n\ - str r0, [sp, 0x14]\n\ - movs r1, 0x1E\n\ - str r1, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E1A:\n\ - cmp r0, 0x27\n\ - bhi _08134E28\n\ - movs r2, 0xC\n\ - str r2, [sp, 0x14]\n\ - movs r3, 0x3C\n\ - str r3, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E28:\n\ - cmp r0, 0x31\n\ - bhi _08134E36\n\ - movs r0, 0xF\n\ - str r0, [sp, 0x14]\n\ - movs r1, 0x5A\n\ - str r1, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E36:\n\ - cmp r0, 0x3B\n\ - bhi _08134E44\n\ - movs r2, 0x12\n\ - str r2, [sp, 0x14]\n\ - movs r3, 0x78\n\ - str r3, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E44:\n\ - cmp r0, 0x45\n\ - bhi _08134E52\n\ - movs r0, 0x15\n\ - str r0, [sp, 0x14]\n\ - movs r1, 0x96\n\ - str r1, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E52:\n\ - cmp r0, 0x4F\n\ - bhi _08134E60\n\ - movs r2, 0x1F\n\ - str r2, [sp, 0x14]\n\ - movs r3, 0xB4\n\ - str r3, [sp, 0x18]\n\ - b _08134ED8\n\ -_08134E60:\n\ - cmp r0, 0x63\n\ - bhi _08134E72\n\ - movs r0, 0x1F\n\ - str r0, [sp, 0x14]\n\ - movs r1, 0xC8\n\ - str r1, [sp, 0x18]\n\ - movs r2, 0x64\n\ - str r2, [sp, 0x1C]\n\ - b _08134ED8\n\ -_08134E72:\n\ - cmp r0, 0xC8\n\ - bne _08134E9C\n\ - movs r6, 0\n\ -_08134E78:\n\ - movs r0, 0x64\n\ - muls r0, r6\n\ - ldr r1, _08134E94 @ =gEnemyParty\n\ - adds r0, r1\n\ - movs r1, 0x2C\n\ - muls r1, r6\n\ - ldr r2, _08134E98 @ =gSaveBlock2 + 0x4CC\n\ - adds r1, r2\n\ - bl sub_803ADE8\n\ - adds r6, 0x1\n\ - cmp r6, 0x2\n\ - ble _08134E78\n\ - b _08135082\n\ - .align 2, 0\n\ -_08134E94: .4byte gEnemyParty\n\ -_08134E98: .4byte gSaveBlock2 + 0x4CC\n\ -_08134E9C:\n\ - movs r6, 0\n\ - adds r4, r1, 0\n\ - ldr r3, _08134ECC @ =0xffffc158\n\ - adds r5, r4, r3\n\ -_08134EA4:\n\ - movs r0, 0x64\n\ - muls r0, r6\n\ - ldr r1, _08134ED0 @ =gEnemyParty\n\ - adds r0, r1\n\ - ldr r2, _08134ED4 @ =0x00000564\n\ - adds r1, r4, r2\n\ - ldrb r2, [r1]\n\ - movs r1, 0xA4\n\ - muls r1, r2\n\ - adds r1, r5\n\ - movs r2, 0x2C\n\ - muls r2, r6\n\ - adds r1, r2\n\ - bl sub_803ADE8\n\ - adds r6, 0x1\n\ - cmp r6, 0x2\n\ - ble _08134EA4\n\ - b _08135082\n\ - .align 2, 0\n\ -_08134ECC: .4byte 0xffffc158\n\ -_08134ED0: .4byte gEnemyParty\n\ -_08134ED4: .4byte 0x00000564\n\ -_08134ED8:\n\ - ldr r2, _08134EF4 @ =gSaveBlock2\n\ - ldr r3, _08134EF8 @ =0x00000554\n\ - adds r0, r2, r3\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - adds r1, r2, 0\n\ - cmp r0, 0\n\ - beq _08134F00\n\ - ldr r0, _08134EFC @ =gBattleTowerLevel100Mons\n\ - mov r10, r0\n\ - movs r2, 0x64\n\ - str r2, [sp, 0x10]\n\ - b _08134F08\n\ - .align 2, 0\n\ -_08134EF4: .4byte gSaveBlock2\n\ -_08134EF8: .4byte 0x00000554\n\ -_08134EFC: .4byte gBattleTowerLevel100Mons\n\ -_08134F00:\n\ - ldr r3, _08134F54 @ =gBattleTowerLevel50Mons\n\ - mov r10, r3\n\ - movs r0, 0x32\n\ - str r0, [sp, 0x10]\n\ -_08134F08:\n\ - ldr r2, _08134F58 @ =gBattleTowerTrainers\n\ - ldr r3, _08134F5C @ =0x00000564\n\ - adds r0, r1, r3\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - ldrb r0, [r0, 0x9]\n\ - str r0, [sp, 0x20]\n\ - movs r6, 0\n\ -_08134F1E:\n\ - bl Random\n\ - movs r1, 0xFF\n\ - ands r1, r0\n\ - ldr r2, [sp, 0x1C]\n\ - adds r0, r1, 0\n\ - muls r0, r2\n\ - asrs r0, 8\n\ - ldr r3, [sp, 0x18]\n\ - adds r7, r0, r3\n\ - ldr r0, [sp, 0x20]\n\ - cmp r0, 0\n\ - beq _08134F48\n\ - lsls r0, r7, 4\n\ - add r0, r10\n\ - ldrb r0, [r0, 0x3]\n\ - ldr r1, [sp, 0x20]\n\ - ands r0, r1\n\ - cmp r0, r1\n\ - beq _08134F48\n\ - b _0813507C\n\ -_08134F48:\n\ - movs r5, 0\n\ - lsls r0, r7, 4\n\ - mov r2, r10\n\ - adds r3, r0, r2\n\ - movs r4, 0\n\ - b _08134F64\n\ - .align 2, 0\n\ -_08134F54: .4byte gBattleTowerLevel50Mons\n\ -_08134F58: .4byte gBattleTowerTrainers\n\ -_08134F5C: .4byte 0x00000564\n\ -_08134F60:\n\ - adds r4, 0x64\n\ - adds r5, 0x1\n\ -_08134F64:\n\ - cmp r5, r6\n\ - bge _08134F7E\n\ - ldr r1, _08135094 @ =gEnemyParty\n\ - adds r0, r4, r1\n\ - movs r1, 0xB\n\ - movs r2, 0\n\ - str r3, [sp, 0x24]\n\ - bl GetMonData\n\ - ldr r3, [sp, 0x24]\n\ - ldrh r2, [r3]\n\ - cmp r0, r2\n\ - bne _08134F60\n\ -_08134F7E:\n\ - cmp r5, r6\n\ - bne _0813507C\n\ - movs r5, 0\n\ - cmp r5, r6\n\ - bge _08134FCC\n\ - ldr r3, _08135098 @ =gBattleTowerHeldItems\n\ - mov r9, r3\n\ - lsls r0, r7, 4\n\ - add r0, r10\n\ - mov r8, r0\n\ - movs r3, 0\n\ -_08134F94:\n\ - ldr r0, _08135094 @ =gEnemyParty\n\ - adds r4, r3, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - movs r2, 0\n\ - str r3, [sp, 0x24]\n\ - bl GetMonData\n\ - ldr r3, [sp, 0x24]\n\ - cmp r0, 0\n\ - beq _08134FC4\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - movs r2, 0\n\ - bl GetMonData\n\ - mov r2, r8\n\ - ldrb r1, [r2, 0x2]\n\ - lsls r1, 1\n\ - add r1, r9\n\ - ldr r3, [sp, 0x24]\n\ - ldrh r1, [r1]\n\ - cmp r0, r1\n\ - beq _08134FCC\n\ -_08134FC4:\n\ - adds r3, 0x64\n\ - adds r5, 0x1\n\ - cmp r5, r6\n\ - blt _08134F94\n\ -_08134FCC:\n\ - cmp r5, r6\n\ - bne _0813507C\n\ - movs r5, 0\n\ - cmp r5, r6\n\ - bge _08134FEE\n\ - add r0, sp, 0x4\n\ - ldrh r0, [r0]\n\ - cmp r0, r7\n\ - beq _08134FEE\n\ - add r1, sp, 0x4\n\ -_08134FE0:\n\ - adds r1, 0x2\n\ - adds r5, 0x1\n\ - cmp r5, r6\n\ - bge _08134FEE\n\ - ldrh r0, [r1]\n\ - cmp r0, r7\n\ - bne _08134FE0\n\ -_08134FEE:\n\ - cmp r5, r6\n\ - bne _0813507C\n\ - lsls r0, r6, 1\n\ - add r0, sp\n\ - adds r0, 0x4\n\ - strh r7, [r0]\n\ - movs r3, 0x64\n\ - adds r0, r6, 0\n\ - muls r0, r3\n\ - ldr r1, _08135094 @ =gEnemyParty\n\ - adds r0, r1\n\ - lsls r4, r7, 4\n\ - mov r3, r10\n\ - adds r2, r4, r3\n\ - ldrh r1, [r2]\n\ - ldrb r2, [r2, 0xC]\n\ - str r2, [sp]\n\ - ldr r2, [sp, 0x10]\n\ - ldr r3, [sp, 0x14]\n\ - bl CreateMonWithEVSpread\n\ - movs r5, 0\n\ - adds r0, r6, 0x1\n\ - mov r9, r0\n\ - mov r8, r4\n\ - movs r0, 0x64\n\ - adds r7, r6, 0\n\ - muls r7, r0\n\ - mov r0, r10\n\ - adds r0, 0x4\n\ - adds r4, r0\n\ - ldr r3, _08135094 @ =gEnemyParty\n\ -_0813502E:\n\ - ldrh r1, [r4]\n\ - lsls r2, r5, 24\n\ - lsrs r2, 24\n\ - adds r0, r7, r3\n\ - str r3, [sp, 0x24]\n\ - bl SetMonMoveSlot\n\ - ldrh r0, [r4]\n\ - ldr r3, [sp, 0x24]\n\ - cmp r0, 0xDA\n\ - bne _0813504A\n\ - movs r0, 0\n\ - mov r1, sp\n\ - strb r0, [r1, 0xC]\n\ -_0813504A:\n\ - adds r4, 0x2\n\ - adds r5, 0x1\n\ - cmp r5, 0x3\n\ - ble _0813502E\n\ - movs r2, 0x64\n\ - adds r4, r6, 0\n\ - muls r4, r2\n\ - ldr r3, _08135094 @ =gEnemyParty\n\ - adds r4, r3\n\ - adds r0, r4, 0\n\ - movs r1, 0x20\n\ - add r2, sp, 0xC\n\ - bl SetMonData\n\ - mov r0, r8\n\ - add r0, r10\n\ - ldrb r2, [r0, 0x2]\n\ - lsls r2, 1\n\ - ldr r0, _08135098 @ =gBattleTowerHeldItems\n\ - adds r2, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - bl SetMonData\n\ - mov r6, r9\n\ -_0813507C:\n\ - cmp r6, 0x3\n\ - beq _08135082\n\ - b _08134F1E\n\ -_08135082:\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\ - .align 2, 0\n\ -_08135094: .4byte gEnemyParty\n\ -_08135098: .4byte gBattleTowerHeldItems\n\ -.syntax divided\n"); + s32 partyIndex, i; + u16 chosenMonIndices[3]; + u8 friendship; + u8 level; + u8 fixedIV; + u8 battleMonsOffset; + u8 monPoolSize; + u8 teamFlags; + const struct BattleTowerPokemon *battleTowerMons; + + battleMonsOffset = 0; + monPoolSize = 60; + friendship = 255; + + ZeroEnemyPartyMons(); + + // Different trainers have access to different sets of pokemon to use in battle. + // The pokemon later in gBattleTowerLevel100Mons or gBattleTowerLevel50Mons are + // stronger. Additionally, the later trainers' pokemon are granted higher IVs. + if (gSaveBlock2.battleTower.battleTowerTrainerId < 20) + { + fixedIV = 6; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 30) + { + fixedIV = 9; + battleMonsOffset = 30; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 40) + { + fixedIV = 12; + battleMonsOffset = 60; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 50) + { + fixedIV = 15; + battleMonsOffset = 90; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 60) + { + fixedIV = 18; + battleMonsOffset = 120; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 70) + { + fixedIV = 21; + battleMonsOffset = 150; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 80) + { + fixedIV = 31; + battleMonsOffset = 180; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 100) + { + fixedIV = 31; + battleMonsOffset = 200; + monPoolSize = 100; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId == 200) + { + // Load E-Reader trainer's party. + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]); + } + + return; + } + else + { + // Load a battle tower record's party. (From record mixing) + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8( + &gEnemyParty[partyIndex], + &gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - 100].party[partyIndex]); + } + + return; + } + + // Use the appropriate list of pokemon and level depending on the + // current challenge type. (level 50 or level 100 challenge) + if (gSaveBlock2.battleTower.battleTowerLevelType != 0) + { + battleTowerMons = gBattleTowerLevel100Mons; + level = 100; + } + else + { + battleTowerMons = gBattleTowerLevel50Mons; + level = 50; + } + + teamFlags = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].teamFlags; + + // Attempt to fill the trainer's party with random Pokemon until 3 have been + // successfully chosen. The trainer's party may not have duplicate pokemon species + // or duplicate held items. Each pokemon must have all of the trainer's team flags + // set, as well. If any of those conditions are not met, then the loop starts over + // and another pokemon is chosen at random. + partyIndex = 0; + while (partyIndex != 3) + { + // Pick a random pokemon index based on the number of pokemon available to choose from + // and the starting offset in the battle tower pokemon array. + s32 battleMonIndex = ((Random() & 0xFF) * monPoolSize) / 256 + battleMonsOffset; + + // Ensure the chosen pokemon has compatible team flags with the trainer. + if (teamFlags == 0 || (battleTowerMons[battleMonIndex].teamFlags & teamFlags) == teamFlags) + { + // Ensure this pokemon species isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) == battleTowerMons[battleMonIndex].species) + break; + } + + if (i != partyIndex) + continue; + + // Ensure this pokemon's held item isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0 + && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == gBattleTowerHeldItems[battleTowerMons[battleMonIndex].item]) + { + break; + } + } + + if (i != partyIndex) + continue; + + // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary + // because the species and held items were already checked directly above. Perhaps this + // is leftover code before the logic for duplicate species and held items was added. + for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); + + if (i != partyIndex) + continue; + + chosenMonIndices[partyIndex] = battleMonIndex; + + // Place the chosen pokemon into the trainer's party. + CreateMonWithEVSpread( + &gEnemyParty[partyIndex], + battleTowerMons[battleMonIndex].species, + level, + fixedIV, + battleTowerMons[battleMonIndex].evSpread); + + // Give the chosen pokemon its specified moves. + for (i = 0; i < 4; i++) + { + SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i); + if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION) + { + // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. + friendship = 0; + } + } + + SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); + SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, (u8 *)&gBattleTowerHeldItems[battleTowerMons[battleMonIndex].item]); + + // The pokemon was successfully added to the trainer's party, so it's safe to move on to + // the next party slot. + partyIndex++; + } + } + } u32 CountBattleTowerBanlistCaught() @@ -1805,7 +1619,7 @@ void sub_813556C(void) gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); gTrainerBattleOpponent = 0; - sub_8134DD4(); + FillBattleTowerTrainerParty(); CreateTask(sub_8135534, 1); current_map_music_set__default_for_battle(0); |