From 74b81bf229ded3212ab77701aebd4e16799731ec Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 13 Oct 2018 00:48:26 +0200 Subject: [PATCH 01/10] start apprentice --- asm/battle_frontier_2.s | 486 ---------------------------------------- include/global.h | 17 +- src/battle_frontier_2.c | 151 +++++++++++++ 3 files changed, 164 insertions(+), 490 deletions(-) create mode 100644 src/battle_frontier_2.c diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 4df690e59..5d48ce87c 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -5,494 +5,8 @@ .text - thumb_func_start sub_819F99C -sub_819F99C: @ 819F99C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, =gSaveBlock2Ptr - ldr r1, [r2] - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r1, r0 - adds r1, 0xDE - ldrb r1, [r1] - movs r6, 0 - adds r7, r2, 0 - ldr r0, =gStringVar1 - mov r8, r0 - cmp r1, 0 - beq _0819F9DC -_0819F9C2: - adds r0, r1, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r1, r0, 24 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r1, 0 - beq _0819F9DC - cmp r6, 0x3 - bls _0819F9C2 -_0819F9DC: - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r1, [r7] - adds r1, r4, r1 - movs r0, 0x8A - lsls r0, 1 - adds r1, r0 - mov r0, r8 - bl StringCopy7 - ldr r0, [r7] - adds r0, r4 - ldr r1, =0x0000011b - adds r0, r1 - ldrb r1, [r0] - mov r0, r8 - bl ConvertInternationalString - ldr r0, =gStringVar2 - ldr r1, [r7] - adds r1, r4 - adds r1, 0xDE - ldrb r1, [r1] - movs r2, 0x1 - adds r3, r6, 0 - bl ConvertIntToDecimalStringN - ldr r1, =gUnknown_08611330 - ldr r0, [r7] - adds r0, r4 - adds r0, 0xDC - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 25 - adds r0, r1 - ldr r1, [r0] - ldr r0, =gStringVar4 - bl StringExpandPlaceholders - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_819F99C - thumb_func_start sub_819FA50 -sub_819FA50: @ 819FA50 - push {lr} - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_819FA50 - thumb_func_start sub_819FA5C -sub_819FA5C: @ 819FA5C - push {r4,r5,lr} - adds r3, r0, 0 - movs r2, 0 - adds r4, r3, 0 - adds r4, 0x28 - ldr r0, =0x0000ffff - adds r5, r0, 0 -_0819FA6A: - lsls r0, r2, 1 - adds r0, r4, r0 - ldrh r1, [r0] - orrs r1, r5 - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bls _0819FA6A - adds r1, r3, 0 - adds r1, 0x38 - movs r0, 0xFF - strb r0, [r1] - ldrb r1, [r3] - movs r0, 0x20 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_819FA5C - - thumb_func_start sub_819FAA0 -sub_819FAA0: @ 819FAA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r3, =gSaveBlock2Ptr - ldr r1, [r3] - adds r1, 0xB2 - ldrb r2, [r1] - movs r0, 0x19 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0 - mov r12, r0 - adds r5, r3, 0 - mov r8, r0 - ldr r1, =0x0000ffff - mov r10, r1 -_0819FAC6: - movs r2, 0 - mov r3, r12 - lsls r7, r3, 4 - movs r4, 0x1 - add r4, r12 - mov r9, r4 - adds r0, r7, r3 - lsls r3, r0, 2 -_0819FAD6: - ldr r1, [r5] - lsls r0, r2, 1 - adds r0, r3 - movs r4, 0x82 - lsls r4, 1 - adds r1, r4 - adds r1, r0 - ldrh r0, [r1] - mov r4, r10 - orrs r0, r4 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x5 - bls _0819FAD6 - ldr r2, [r5] - mov r0, r12 - adds r3, r7, r0 - lsls r3, 2 - adds r2, r3 - adds r2, 0xDC - ldrb r1, [r2] - movs r0, 0x20 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2] - ldr r0, [r5] - adds r0, r3 - movs r1, 0x8A - lsls r1, 1 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r1, [r5] - adds r1, r3 - adds r1, 0xDC - ldrb r2, [r1] - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, r3 - adds r0, 0xDE - mov r4, r8 - strb r4, [r0] - ldr r0, [r5] - adds r0, r3 - adds r0, 0xDD - strb r4, [r0] - movs r2, 0 - ldr r6, =gSaveBlock2Ptr - movs r4, 0x88 - lsls r4, 1 -_0819FB48: - ldr r0, [r6] - adds r1, r2, r3 - adds r0, r4 - adds r0, r1 - mov r1, r8 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0819FB48 - ldr r0, [r5] - mov r3, r12 - adds r2, r7, r3 - lsls r2, 2 - adds r0, r2 - ldr r4, =gGameLanguage - ldrb r1, [r4] - ldr r3, =0x0000011b - adds r0, r3 - strb r1, [r0] - ldr r0, [r5] - movs r4, 0x8E - lsls r4, 1 - adds r0, r4 - adds r0, r2 - mov r1, r8 - str r1, [r0] - mov r3, r9 - lsls r0, r3, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x3 - bls _0819FAC6 - bl sub_81A087C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_819FAA0 - - thumb_func_start sub_819FBB0 -sub_819FBB0: @ 819FBB0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB1 - ldrb r0, [r0] - movs r1, 0x3 - ands r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bx lr - .pool - thumb_func_end sub_819FBB0 - - thumb_func_start sub_819FBC8 -sub_819FBC8: @ 819FBC8 - push {r4,r5,lr} - ldr r2, =gSaveBlock2Ptr - ldr r0, [r2] - adds r0, 0xDE - ldrb r0, [r0] - cmp r0, 0 - bne _0819FC10 - adds r4, r2, 0 - ldr r5, =gUnknown_08611548 -_0819FBDA: - bl Random - ldr r2, [r4] - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - lsrs r1, 16 - adds r1, r5 - ldrb r0, [r1] - adds r2, 0xB0 - strb r0, [r2] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0xB0 - adds r0, 0xDC - ldrb r0, [r0] - lsls r0, 27 - ldrb r1, [r1] - lsrs r0, 27 - cmp r1, r0 - beq _0819FBDA - b _0819FC38 - .pool -_0819FC10: - adds r4, r2, 0 -_0819FC12: - bl Random - ldr r2, [r4] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - adds r2, 0xB0 - strb r0, [r2] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0xB0 - adds r0, 0xDC - ldrb r0, [r0] - lsls r0, 27 - ldrb r1, [r1] - lsrs r0, 27 - cmp r1, r0 - beq _0819FC12 -_0819FC38: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_819FBC8 - - thumb_func_start sub_819FC40 -sub_819FC40: @ 819FC40 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =gSaveBlock2Ptr - ldr r2, [r1] - adds r2, 0xB1 - movs r1, 0x3 - ands r0, r1 - ldrb r3, [r2] - subs r1, 0x7 - ands r1, r3 - orrs r1, r0 - strb r1, [r2] - bx lr - .pool - thumb_func_end sub_819FC40 - - thumb_func_start sub_819FC60 -sub_819FC60: @ 819FC60 - push {r4-r7,lr} - sub sp, 0xC - movs r5, 0 -_0819FC66: - mov r1, sp - adds r0, r1, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0819FC66 - movs r5, 0 -_0819FC78: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - mov r7, sp - adds r2, r7, r4 - ldrb r3, [r2] - adds r1, r7, r0 - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x31 - bls _0819FC78 - movs r5, 0 - ldr r6, =gSaveBlock2Ptr - movs r4, 0xF -_0819FCBC: - ldr r3, [r6] - adds r3, 0xB4 - adds r3, r5 - lsls r2, r5, 1 - mov r1, sp - adds r0, r1, r2 - ldrb r0, [r0] - adds r1, r4, 0 - ands r1, r0 - lsls r1, 4 - adds r2, 0x1 - mov r7, sp - adds r0, r7, r2 - ldrb r2, [r0] - adds r0, r4, 0 - ands r0, r2 - orrs r1, r0 - strb r1, [r3] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _0819FCBC - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_819FC60 - - thumb_func_start sub_819FCF8 -sub_819FCF8: @ 819FCF8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - cmp r0, 0x2 - bne _0819FD4C - ldr r6, =gUnknown_030062EC -_0819FD06: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - movs r2, 0 - ldr r1, [r6] - lsls r0, r5, 2 - adds r0, r5 - lsls r4, r0, 1 - adds r1, 0x2 -_0819FD26: - lsls r0, r2, 1 - adds r0, r4 - adds r0, r1, r0 - ldrh r0, [r0] - cmp r0, 0 - beq _0819FD38 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_0819FD38: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _0819FD26 - cmp r3, 0x3 - bhi _0819FD06 - b _0819FD5A - .pool -_0819FD4C: - cmp r0, 0x1 - bne _0819FD5A - ldrb r0, [r2] - adds r1, r0 - ldrb r5, [r1] - adds r0, 0x1 - strb r0, [r2] -_0819FD5A: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_819FCF8 thumb_func_start sub_819FD64 sub_819FD64: @ 819FD64 diff --git a/include/global.h b/include/global.h index 9ae892b5c..9b66f7da6 100644 --- a/include/global.h +++ b/include/global.h @@ -297,9 +297,16 @@ struct UnknownSaveBlock2Struct struct UnkRecordMixingStruct { - u8 field_0[0x34]; + u8 field_0_0:5; + u8 field_0_1:2; + u8 field_1; + u8 field_2; + u8 field_3[37]; + u16 unk28[6]; u8 playerId[4]; - u8 field_38[10]; + u8 playerName[PLAYER_NAME_LENGTH]; + u8 language; + u32 unk40; }; struct UnknownPokemonStruct @@ -492,10 +499,12 @@ struct SaveBlock2 // TODO: fix and verify labels /*0xB0*/ u8 field_B0; - /*0xB1*/ u8 field_B1; + /*0xB1*/ u8 field_B1_0:2; + /*0xB1*/ u8 field_B1_1:6; /*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_1:2; - /*0xB3*/ u8 field_B3[0x29]; + /*0xB3*/ u8 field_B3; + /*0xB4*/ u8 field_B4[0x28]; /*0xDC*/ struct UnkRecordMixingStruct field_DC[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; diff --git a/src/battle_frontier_2.c b/src/battle_frontier_2.c new file mode 100644 index 000000000..e21e972cd --- /dev/null +++ b/src/battle_frontier_2.c @@ -0,0 +1,151 @@ +#include "global.h" +#include "string_util.h" +#include "script.h" +#include "text.h" +#include "random.h" +#include "main.h" + +struct Unk030062ECStruct +{ + u8 unk0; + u16 unk2[3][5]; +}; + +extern struct Unk030062ECStruct *gUnknown_030062EC; + +extern const u8 *const gUnknown_08611330[]; +extern const u8 gUnknown_08611548[8]; + +// This file's functions. +void sub_81A087C(void); + +void sub_819F99C(u8 id) +{ + u8 i, var; + const u8 *str; + + var = gSaveBlock2Ptr->field_DC[id].field_2; + for (i = 0; var != 0 && i < 4; i++) + { + var /= 10; + } + + StringCopy7(gStringVar1, gSaveBlock2Ptr->field_DC[id].playerName); + ConvertInternationalString(gStringVar1, gSaveBlock2Ptr->field_DC[id].language); + ConvertIntToDecimalStringN(gStringVar2, gSaveBlock2Ptr->field_DC[id].field_2, STR_CONV_MODE_RIGHT_ALIGN, i); + str = gUnknown_08611330[gSaveBlock2Ptr->field_DC[id].field_0_0]; + StringExpandPlaceholders(gStringVar4, str); +} + +void sub_819FA50(void) +{ + EnableBothScriptContexts(); +} + +void sub_819FA5C(struct UnkRecordMixingStruct *structPtr) +{ + u8 i; + + for (i = 0; i < 6; i++) + structPtr->unk28[i] |= 0xFFFF; + + structPtr->playerName[0] = EOS; + structPtr->field_0_0 = 16; +} + +void sub_819FAA0(void) +{ + u8 i, j; + + gSaveBlock2Ptr->field_B2_1 = 0; + for (i = 0; i < 4; i++) + { + for (j = 0; j < 6; j++) + gSaveBlock2Ptr->field_DC[i].unk28[j] |= 0xFFFF; + gSaveBlock2Ptr->field_DC[i].field_0_0 = 16; + gSaveBlock2Ptr->field_DC[i].playerName[0] = EOS; + gSaveBlock2Ptr->field_DC[i].field_0_1 = 0; + gSaveBlock2Ptr->field_DC[i].field_2 = 0; + gSaveBlock2Ptr->field_DC[i].field_1 = 0; + for (j = 0; j < 4; j++) + gSaveBlock2Ptr->field_DC[i].playerId[j] = 0; + gSaveBlock2Ptr->field_DC[i].language = gGameLanguage; + gSaveBlock2Ptr->field_DC[i].unk40 = 0; + } + + sub_81A087C(); +} + +u8 sub_819FBB0(void) +{ + return (gSaveBlock2Ptr->field_B1_0 != 0); +} + +void sub_819FBC8(void) +{ + if (gSaveBlock2Ptr->field_DC[0].field_2 == 0) + { + do + { + gSaveBlock2Ptr->field_B0 = gUnknown_08611548[Random() % ARRAY_COUNT(gUnknown_08611548)]; + } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->field_DC[0].field_0_0); + } + else + { + do + { + gSaveBlock2Ptr->field_B0 = Random() % 16; + } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->field_DC[0].field_0_0); + } +} + +void sub_819FC40(u8 value) +{ + gSaveBlock2Ptr->field_B1_0 = value; +} + +void sub_819FC60(void) +{ + u8 array[10]; + u8 i; + + for (i = 0; i < ARRAY_COUNT(array); i++) + array[i] = i; + + for (i = 0; i < 50; i++) + { + u8 temp; + u8 var1 = Random() % ARRAY_COUNT(array); + u8 var2 = Random() % ARRAY_COUNT(array); + SWAP(array[var1], array[var2], temp); + } + + for (i = 0; i < 3; i++) + gSaveBlock2Ptr->field_B4[i] = ((array[i * 2] & 0xF) << 4) | ((array[i * 2 + 1]) & 0xF); +} + +u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) +{ + u8 i, count; + u8 ret = 0; + + if (val == 2) + { + do + { + ret = Random() % 3; + for (count = 0, i = 0; i < 5; i++) + { + if (gUnknown_030062EC->unk2[ret][i] != 0) + count++; + } + } while (count > 3); + } + else if (val == 1) + { + ret = arg1[*arg2]; + (*arg2)++; + } + + return ret; +} From a496a763ca54871e19e2482b550127e2aa709b05 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 13 Oct 2018 20:38:46 +0200 Subject: [PATCH 02/10] Merge record mixing, pokemon and global with apprentice --- asm/battle_frontier_2.s | 1255 +------------------------------------- asm/battle_tower.s | 22 +- data/battle_frontier_2.s | 2 +- include/apprentice.h | 17 + include/global.h | 29 +- include/pokemon.h | 28 +- include/script_menu.h | 1 + ld_script.txt | 1 + src/battle_frontier_2.c | 420 ++++++++++++- src/pokemon.c | 16 +- src/record_mixing.c | 28 +- 11 files changed, 503 insertions(+), 1316 deletions(-) create mode 100644 include/apprentice.h diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 5d48ce87c..ee5f37944 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -8,1243 +8,6 @@ - thumb_func_start sub_819FD64 -sub_819FD64: @ 819FD64 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - movs r5, 0 - mov r0, sp - adds r0, 0xC - str r0, [sp, 0x14] - mov r1, sp - adds r1, 0x10 - str r1, [sp, 0x18] - adds r1, r0, 0 -_0819FD80: - adds r0, r1, r5 - strb r5, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _0819FD80 - movs r5, 0 - ldr r6, [sp, 0x14] -_0819FD92: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - adds r2, r6, r4 - ldrb r3, [r2] - adds r1, r6, r0 - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0819FD92 - movs r5, 0 - ldr r2, =gUnknown_086114D3 -_0819FDD0: - mov r4, sp - adds r1, r4, r5 - adds r0, r5, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x9 - bls _0819FDD0 - movs r5, 0 -_0819FDE6: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r4, r0, 24 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - mov r6, sp - adds r2, r6, r4 - ldrb r3, [r2] - adds r1, r6, r0 - ldrb r0, [r1] - strb r0, [r2] - strb r3, [r1] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x31 - bls _0819FDE6 - ldr r4, =gUnknown_030062EC - movs r0, 0x30 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0] - movs r5, 0 - movs r2, 0x4 -_0819FE34: - movs r3, 0 -_0819FE36: - ldr r0, [r4] - lsls r1, r3, 2 - adds r1, r3 - adds r1, r5, r1 - adds r0, 0x20 - adds r0, r1 - strb r2, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _0819FE36 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _0819FE34 - movs r0, 0 - ldr r7, [sp, 0x18] - strb r0, [r7] - movs r5, 0 -_0819FE60: - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - lsls r4, r5, 2 - adds r3, r4 - mov r1, sp - adds r6, r1, r5 - ldrb r0, [r6] - adds r3, 0xB8 - movs r2, 0x3 - ands r2, r0 - ldrb r0, [r3] - movs r7, 0x4 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - ldrb r0, [r6] - adds r5, 0x1 - str r5, [sp, 0x1C] - mov r8, r4 - cmp r0, 0x3 - beq _0819FF62 - ldrb r0, [r6] - ldr r1, [sp, 0x14] - ldr r2, [sp, 0x18] - bl sub_819FCF8 - ldr r1, =gSaveBlock2Ptr - ldr r3, [r1] - add r3, r8 - adds r3, 0xB8 - movs r2, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r0, [r3] - movs r4, 0xD - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - ldr r7, =gSaveBlock2Ptr - ldr r0, [r7] - add r0, r8 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 28 - lsrs r7, r0, 30 - ldrb r0, [r6] - cmp r0, 0x2 - bne _0819FF62 - lsls r0, r7, 2 - adds r0, r7 - mov r10, r0 - ldr r0, =gUnknown_030062EC - mov r9, r0 -_0819FED2: - bl Random - lsls r0, 16 - lsrs r4, r0, 16 - movs r1, 0x3 - ands r4, r1 - movs r3, 0 - mov r6, r9 - ldr r2, [r6] - ldrb r0, [r2] - adds r1, r0, 0x1 - lsls r5, r7, 2 - cmp r3, r1 - bge _0819FF12 - adds r2, 0x20 - mov r6, r10 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r4 - beq _0819FF12 - adds r6, r1, 0 - adds r1, r5, r7 -_0819FEFE: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r6 - bge _0819FF12 - adds r0, r3, r1 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, r4 - bne _0819FEFE -_0819FF12: - mov r1, r9 - ldr r0, [r1] - ldrb r0, [r0] - adds r0, 0x1 - ldr r1, =gUnknown_030062EC - cmp r3, r0 - bne _0819FED2 - ldr r0, [r1] - orrs r5, r7 - ldrb r2, [r0] - adds r1, r5, r2 - adds r0, 0x20 - adds r0, r1 - strb r4, [r0] - ldr r6, =gSaveBlock2Ptr - ldr r2, [r6] - add r2, r8 - adds r2, 0xB8 - movs r7, 0x3 - ands r4, r7 - lsls r3, r4, 4 - ldrb r0, [r2] - movs r4, 0x31 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] - ldr r0, [r6] - add r0, r8 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 30 - bl sub_819FF98 - ldr r1, [r6] - add r1, r8 - adds r1, 0xBA - strh r0, [r1] -_0819FF62: - ldr r6, [sp, 0x1C] - lsls r0, r6, 24 - lsrs r5, r0, 24 - cmp r5, 0x8 - bhi _0819FF6E - b _0819FE60 -_0819FF6E: - ldr r4, =gUnknown_030062EC - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_819FD64 - - thumb_func_start sub_819FF98 -sub_819FF98: @ 819FF98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0xC] - movs r7, 0 - ldr r1, [sp] - cmp r1, 0x2 - bhi _0819FFE0 - ldr r2, =gSaveBlock2Ptr - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xB4 - ldr r3, [sp] - adds r0, r3 - ldrb r4, [r0] - adds r1, 0xB2 - ldrb r0, [r1] - lsls r0, 29 - lsrs r0, 29 - asrs r0, r3 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - asrs r4, r0 - movs r0, 0xF - ands r4, r0 - b _0819FFE4 - .pool -_0819FFE0: - movs r4, 0 - ldr r2, =gSaveBlock2Ptr -_0819FFE4: - ldr r3, =gUnknown_08610970 - lsls r1, r4, 1 - ldr r4, [r2] - adds r0, r4, 0 - adds r0, 0xB0 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0 - adds r3, 0x34 - adds r1, r3 - ldrh r1, [r1] - str r1, [sp, 0x8] - ldr r1, =gLevelUpLearnsets - ldr r2, [sp, 0x8] - lsls r0, r2, 2 - adds r0, r1 - ldr r6, [r0] - movs r3, 0 - adds r4, 0xB1 - ldrb r1, [r4] - movs r0, 0x3 - ands r0, r1 - movs r5, 0x3C - cmp r0, 0x1 - bne _081A001A - movs r5, 0x32 -_081A001A: - ldrh r1, [r6] - ldr r4, =0x0000ffff - cmp r1, r4 - beq _081A004C - movs r2, 0xFE - lsls r2, 8 - adds r0, r2, 0 - ands r0, r1 - lsls r1, r5, 9 - cmp r0, r1 - bgt _081A004C - adds r5, r2, 0 - adds r2, r1, 0 -_081A0034: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 1 - adds r0, r6 - ldrh r1, [r0] - cmp r1, r4 - beq _081A004C - adds r0, r5, 0 - ands r0, r1 - cmp r0, r2 - ble _081A0034 -_081A004C: - adds r5, r3, 0 - movs r3, 0 - str r3, [sp, 0x4] -_081A0052: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081A0068 - ldr r0, [sp, 0xC] - cmp r0, 0x1 - bne _081A00E0 -_081A0068: - ldr r1, =0x000001ff - mov r8, r1 -_081A006C: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3A - bl __umodsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [sp, 0x8] - adds r1, r4, 0 - bl CanSpeciesLearnTMHM - adds r2, r0, 0 - cmp r2, 0 - beq _081A006C - ldr r2, =0x00000121 - adds r0, r4, r2 - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r7, r0, 16 - movs r2, 0x1 - cmp r5, 0x4 - bhi _081A00BC - movs r3, 0 - b _081A00C6 - .pool -_081A00BC: - subs r0, r5, 0x4 - b _081A00C2 -_081A00C0: - adds r0, r3, 0x1 -_081A00C2: - lsls r0, 24 - lsrs r3, r0, 24 -_081A00C6: - cmp r3, r5 - bcs _081A00DA - lsls r0, r3, 1 - adds r0, r6 - ldrh r0, [r0] - mov r1, r8 - ands r0, r1 - cmp r0, r7 - bne _081A00C0 - movs r2, 0 -_081A00DA: - cmp r2, 0x1 - bne _081A006C - b _081A0146 -_081A00E0: - cmp r5, 0x4 - bhi _081A00EA - movs r2, 0x1 - str r2, [sp, 0xC] - b _081A0168 -_081A00EA: - subs r4, r5, 0x4 - ldr r3, =0x000001ff - mov r10, r3 - mov r8, r3 - lsls r0, r4, 24 - mov r9, r0 -_081A00F6: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r0, 23 - adds r0, r6 - ldrh r0, [r0] - mov r7, r8 - ands r7, r0 - movs r2, 0x1 - mov r1, r9 - lsrs r3, r1, 24 - cmp r3, r5 - bcs _081A0142 - lsls r0, r3, 1 - adds r0, r6 - ldrh r1, [r0] - mov r0, r8 - b _081A013A - .pool -_081A0128: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r5 - bcs _081A0142 - lsls r0, r3, 1 - adds r0, r6 - ldrh r0, [r0] - mov r1, r10 -_081A013A: - ands r0, r1 - cmp r0, r7 - bne _081A0128 - movs r2, 0 -_081A0142: - cmp r2, 0x1 - bne _081A00F6 -_081A0146: - ldr r0, [sp] - adds r1, r7, 0 - bl sub_81A0194 - lsls r0, 24 - cmp r0, 0 - beq _081A0168 - ldr r0, =gUnknown_08611370 - adds r0, r7, r0 - ldrb r0, [r0] - cmp r0, 0 - bne _081A0170 - ldr r0, [sp, 0x4] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] -_081A0168: - ldr r2, [sp, 0x4] - cmp r2, 0x4 - bhi _081A0170 - b _081A0052 -_081A0170: - ldr r0, =gUnknown_030062EC - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - adds r0, r7, 0 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_819FF98 - - thumb_func_start sub_81A0194 -sub_81A0194: @ 81A0194 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - movs r3, 0 - ldr r0, =gUnknown_030062EC - mov r12, r0 - ldr r2, [r0] - lsls r1, r4, 2 - adds r0, r1, r4 - lsls r6, r0, 1 - adds r2, 0x2 - adds r7, r1, 0 -_081A01B0: - lsls r0, r3, 1 - adds r0, r6 - adds r0, r2, r0 - ldrh r0, [r0] - cmp r0, r5 - bne _081A01C4 - movs r0, 0 - b _081A01E2 - .pool -_081A01C4: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x4 - bls _081A01B0 - mov r2, r12 - ldr r1, [r2] - adds r0, r7, r4 - ldrb r2, [r1] - adds r0, r2 - lsls r0, 1 - adds r1, 0x2 - adds r1, r0 - strh r5, [r1] - movs r0, 0x1 -_081A01E2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81A0194 - - thumb_func_start sub_81A01E8 -sub_81A01E8: @ 81A01E8 - push {r4-r7,lr} - mov r12, r1 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB1 - ldrb r1, [r0] - movs r0, 0x3 - ands r0, r1 - movs r4, 0x3C - cmp r0, 0x1 - bne _081A0204 - movs r4, 0x32 -_081A0204: - ldr r1, =gLevelUpLearnsets - lsls r0, r2, 2 - adds r0, r1 - ldr r6, [r0] - movs r5, 0 - ldrh r1, [r6] - ldr r3, =0x0000ffff - cmp r1, r3 - beq _081A0240 - movs r2, 0xFE - lsls r2, 8 - adds r0, r2, 0 - ands r0, r1 - lsls r1, r4, 9 - cmp r0, r1 - bgt _081A0240 - adds r4, r2, 0 - adds r2, r1, 0 -_081A0228: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 1 - adds r0, r6 - ldrh r1, [r0] - cmp r1, r3 - beq _081A0240 - adds r0, r4, 0 - ands r0, r1 - cmp r0, r2 - ble _081A0228 -_081A0240: - adds r4, r5, 0 - cmp r4, 0x4 - bls _081A0248 - movs r4, 0x4 -_081A0248: - movs r2, 0 - cmp r2, r4 - bcs _081A026C - ldr r7, =0x000001ff -_081A0250: - lsls r3, r2, 1 - add r3, r12 - adds r2, 0x1 - subs r0, r5, r2 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r0] - adds r0, r7, 0 - ands r0, r1 - strh r0, [r3] - lsls r2, 24 - lsrs r2, 24 - cmp r2, r4 - bcc _081A0250 -_081A026C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A01E8 - - thumb_func_start sub_81A0284 -sub_81A0284: @ 81A0284 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - ldr r1, =gSaveBlock2Ptr - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - adds r7, r1, 0 - cmp r0, 0x2 - bhi _081A02B8 - movs r0, 0 - b _081A037C - .pool -_081A02B8: - movs r4, 0 - movs r3, 0 - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - ldr r1, =gUnknown_08610970 - mov r12, r1 - lsls r6, 1 - lsls r5, 1 - mov r9, r5 - cmp r0, 0 - beq _081A02F4 - adds r2, r7, 0 -_081A02D4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x8 - bhi _081A02F4 - ldr r0, [r2] - lsls r1, r3, 2 - adds r0, r1 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bne _081A02D4 -_081A02F4: - ldr r0, [r7] - adds r0, 0xB0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r6, r0 - mov r1, r12 - adds r1, 0x34 - adds r0, r1 - ldrh r0, [r0] - mov r1, sp - bl sub_81A01E8 - movs r3, 0 - cmp r3, r4 - bcs _081A0376 - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - cmp r3, r0 - bge _081A0376 - adds r6, r7, 0 - adds r5, r1, 0 -_081A032A: - lsls r0, r3, 2 - adds r2, r5, r0 - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x2 - bne _081A035C - lsls r0, r1, 28 - lsrs r0, 30 - cmp r0, r8 - bne _081A035C - lsrs r0, r1, 6 - cmp r0, 0 - beq _081A035C - lsls r0, r1, 26 - lsrs r0, 30 - lsls r0, 1 - mov r7, sp - adds r1, r7, r0 - adds r0, r2, 0 - adds r0, 0xBA - ldrh r0, [r0] - strh r0, [r1] -_081A035C: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, r4 - bcs _081A0376 - ldr r0, [r6] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - cmp r3, r0 - blt _081A032A -_081A0376: - mov r0, sp - add r0, r9 - ldrh r0, [r0] -_081A037C: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A0284 - - thumb_func_start sub_81A0390 -sub_81A0390: @ 81A0390 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r7, =gSaveBlock2Ptr - adds r6, r7, 0 - movs r4, 0 -_081A03A6: - ldr r0, [r6] - lsls r2, r5, 1 - adds r2, r5 - lsls r2, 2 - adds r0, r2 - adds r1, r0, 0 - adds r1, 0xE0 - strh r4, [r1] - adds r0, 0xEA - strh r4, [r0] - movs r3, 0 -_081A03BC: - ldr r0, [r6] - lsls r1, r3, 1 - adds r1, r2 - adds r0, 0xE2 - adds r0, r1 - strh r4, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _081A03BC - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _081A03A6 - ldr r0, [r7] - adds r0, 0xB1 - ldrb r0, [r0] - lsrs r3, r0, 6 - movs r5, 0 -_081A03E6: - lsls r0, r3, 2 - mov r1, sp - adds r2, r1, r0 - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, 0xE0 - ldr r1, [r7] - adds r1, r0 - str r1, [r2] - adds r0, r3, 0x1 - movs r1, 0x3 - bl __modsi3 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _081A03E6 - movs r5, 0 - ldr r7, =gSaveBlock2Ptr - ldr r6, =gUnknown_08610970+0x34 -_081A0416: - ldr r0, [r7] - mov r12, r0 - adds r0, 0xB4 - adds r0, r5 - ldrb r2, [r0] - mov r0, r12 - adds r0, 0xB2 - ldrb r0, [r0] - lsls r0, 29 - lsrs r0, 29 - asrs r0, r5 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - asrs r2, r0 - movs r0, 0xF - ands r2, r0 - lsls r0, r5, 2 - mov r1, sp - adds r3, r1, r0 - ldr r4, [r3] - lsls r2, 1 - mov r0, r12 - adds r0, 0xB0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r2, r0 - adds r2, r6 - ldrh r0, [r2] - strh r0, [r4] - ldr r1, [r3] - ldrh r0, [r1] - adds r1, 0x2 - bl sub_81A01E8 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _081A0416 - movs r5, 0 - cmp r5, r8 - bcs _081A04D6 - ldr r7, =gSaveBlock2Ptr -_081A0470: - ldr r1, [r7] - lsls r0, r5, 2 - adds r4, r1, r0 - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r2, [r0] - lsls r0, r2, 30 - lsrs r1, r0, 30 - lsls r0, r2, 28 - lsrs r3, r0, 30 - adds r6, r3, 0 - cmp r1, 0x1 - bne _081A04A8 - lsrs r0, r2, 6 - cmp r0, 0 - beq _081A04CC - lsls r0, r3, 2 - add r0, sp - ldr r1, [r0] - adds r0, r4, 0 - adds r0, 0xBA - ldrh r0, [r0] - strh r0, [r1, 0xA] - b _081A04CC - .pool -_081A04A8: - cmp r1, 0x2 - bne _081A04CC - lsls r0, r2, 24 - lsrs r0, 30 - cmp r0, 0 - beq _081A04CC - lsls r2, 26 - lsrs r2, 30 - lsls r0, r6, 2 - add r0, sp - ldr r1, [r0] - lsls r2, 1 - adds r1, 0x2 - adds r1, r2 - adds r0, r4, 0 - adds r0, 0xBA - ldrh r0, [r0] - strh r0, [r1] -_081A04CC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r8 - bcc _081A0470 -_081A04D6: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81A0390 - - thumb_func_start sub_81A04E4 -sub_81A04E4: @ 81A04E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r0, 24 - movs r7, 0x2 - cmp r0, 0x6 - bls _081A04FC - b _081A064C -_081A04FC: - lsls r0, 2 - ldr r1, =_081A050C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A050C: - .4byte _081A0528 - .4byte _081A0540 - .4byte _081A05B4 - .4byte _081A05F4 - .4byte _081A061C - .4byte _081A064C - .4byte _081A0634 -_081A0528: - movs r0, 0x12 - mov r10, r0 - movs r6, 0x8 - ldr r0, =gText_Lv50 - str r0, [sp, 0xC] - ldr r0, =gText_OpenLevel - str r0, [sp, 0x10] - b _081A0652 - .pool -_081A0540: - movs r7, 0x3 - movs r1, 0x12 - mov r10, r1 - movs r6, 0x6 - movs r4, 0 - ldr r0, =gSpeciesNames - mov r9, r0 - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - movs r1, 0xB2 - adds r1, r3 - mov r12, r1 - adds r5, r3, 0 - adds r5, 0xB0 - ldr r0, =gUnknown_08610970+0x34 - mov r8, r0 -_081A0560: - adds r0, r3, 0 - adds r0, 0xB4 - adds r0, r4 - ldrb r2, [r0] - mov r1, r12 - ldrb r0, [r1] - lsls r0, 29 - lsrs r0, 29 - asrs r0, r4 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - asrs r2, r0 - movs r0, 0xF - ands r2, r0 - lsls r2, 1 - ldrb r1, [r5] - movs r0, 0x58 - muls r0, r1 - adds r2, r0 - add r2, r8 - ldrh r1, [r2] - lsls r0, r4, 2 - mov r2, sp - adds r2, r0 - adds r2, 0xC - movs r0, 0xB - muls r0, r1 - add r0, r9 - str r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081A0560 - b _081A0652 - .pool -_081A05B4: - movs r0, 0x12 - mov r10, r0 - movs r6, 0x8 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - cmp r0, 0x2 - bls _081A05CC - b _081A06FA -_081A05CC: - ldr r0, =gUnknown_030062F0 - ldr r3, [r0] - ldrh r0, [r3, 0x2] - movs r2, 0xB - muls r0, r2 - ldr r1, =gSpeciesNames - adds r0, r1 - str r0, [sp, 0x10] - ldrh r0, [r3] - muls r0, r2 - adds r0, r1 - str r0, [sp, 0xC] - b _081A0652 - .pool -_081A05F4: - movs r1, 0x11 - mov r10, r1 - movs r6, 0x8 - ldr r0, =gUnknown_030062F0 - ldr r3, [r0] - ldrh r0, [r3, 0x4] - movs r2, 0xD - muls r0, r2 - ldr r1, =gMoveNames - adds r0, r1 - str r0, [sp, 0xC] - ldrh r0, [r3, 0x6] - muls r0, r2 - adds r0, r1 - str r0, [sp, 0x10] - b _081A0652 - .pool -_081A061C: - movs r0, 0x12 - mov r10, r0 - movs r6, 0x8 - ldr r0, =gText_Give - str r0, [sp, 0xC] - ldr r0, =gText_NoNeed - str r0, [sp, 0x10] - b _081A0652 - .pool -_081A0634: - movs r1, 0x14 - mov r10, r1 - movs r6, 0x8 - ldr r0, =gText_Yes - str r0, [sp, 0xC] - ldr r0, =gText_No - str r0, [sp, 0x10] - b _081A0652 - .pool -_081A064C: - movs r0, 0 - mov r10, r0 - movs r6, 0 -_081A0652: - movs r5, 0 - movs r4, 0 - lsls r1, r7, 25 - mov r8, r1 - cmp r4, r7 - bcs _081A067E -_081A065E: - lsls r0, r4, 2 - add r0, sp - adds r0, 0xC - ldr r1, [r0] - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - cmp r0, r5 - ble _081A0674 - adds r5, r0, 0 -_081A0674: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r7 - bcc _081A065E -_081A067E: - adds r0, r5, 0 - bl convert_pixel_width_to_tile_width - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, r10 - adds r1, r4, 0 - bl sub_80E2D5C - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - mov r0, r8 - lsrs r3, r0, 24 - mov r0, r10 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_81A0784 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - movs r1, 0 - bl SetStandardWindowBorderStyle - movs r4, 0 - cmp r4, r7 - bcs _081A06E6 -_081A06B8: - lsls r0, r4, 2 - add r0, sp - adds r0, 0xC - ldr r2, [r0] - lsls r0, r4, 4 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r7 - bcc _081A06B8 -_081A06E6: - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0 - bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed - movs r0, 0x1 - adds r1, r7, 0 - adds r2, r5, 0 - bl sub_81A0804 -_081A06FA: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81A04E4 - thumb_func_start sub_81A070C sub_81A070C: @ 81A070C push {r4,r5,lr} @@ -2143,7 +906,7 @@ _081A0E3C: adds r0, r2, r0 ldrb r0, [r0] lsrs r4, r0, 4 - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices lsls r1, r4, 1 adds r5, 0xB0 ldrb r0, [r5] @@ -2226,7 +989,7 @@ _081A0EC4: asrs r4, r1 movs r0, 0xF ands r4, r0 - ldr r2, =gUnknown_08610970 + ldr r2, =gApprentices lsls r1, r4, 1 adds r0, r5, 0 adds r0, 0xB0 @@ -2320,7 +1083,7 @@ _081A0F54: asrs r0, r1 movs r1, 0xF ands r0, r1 - ldr r2, =gUnknown_08610970 + ldr r2, =gApprentices lsls r0, 1 adds r1, r3, 0 adds r1, 0xB0 @@ -2554,7 +1317,7 @@ _081A1184: _081A11C0: movs r2, 0 _081A11C2: - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices lsls r1, r2, 1 ldr r0, [r6] adds r0, 0xB0 @@ -2983,7 +1746,7 @@ _081A14C2: thumb_func_start sub_81A150C sub_81A150C: @ 81A150C push {lr} - ldr r2, =gUnknown_08610970 + ldr r2, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r0, [r0] adds r0, 0xDC @@ -3053,7 +1816,7 @@ _081A1594: thumb_func_start sub_81A15A4 sub_81A15A4: @ 81A15A4 push {lr} - ldr r2, =gUnknown_08610970 + ldr r2, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r0, [r0] adds r0, 0xB0 @@ -3141,7 +1904,7 @@ sub_81A1650: @ 81A1650 push {lr} movs r2, 0x58 muls r2, r0 - ldr r0, =gUnknown_08610970 + ldr r0, =gApprentices adds r2, r0 subs r0, r1, 0x1 cmp r0, 0x6 @@ -7047,7 +5810,7 @@ _081A38A8: lsrs r3, r0, 24 movs r0, 0x58 muls r0, r3 - ldr r1, =gUnknown_08610970+0x4A + ldr r1, =gApprentices+0x4A _081A38C4: adds r0, r1 bl ConvertBattleFrontierTrainerSpeechToString @@ -7068,7 +5831,7 @@ _081A38D4: lsrs r3, r0, 27 movs r0, 0x58 muls r0, r3 - ldr r1, =gUnknown_08610970+0x4A + ldr r1, =gApprentices+0x4A adds r0, r1 bl ConvertBattleFrontierTrainerSpeechToString _081A38F8: diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 2312b63bd..e017e3b83 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -576,7 +576,7 @@ _0816266C: b _081626BA .pool _08162698: - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -747,7 +747,7 @@ _081627E8: b _08162836 .pool _08162814: - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -1161,7 +1161,7 @@ _08162B64: cmp r0, 0 bne _08162BB0 ldr r4, =gFacilityClassToPicIndex - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -1184,7 +1184,7 @@ _08162B64: .pool _08162BB0: ldr r5, =gFacilityClassToPicIndex - ldr r4, =gUnknown_08610970 + ldr r4, =gApprentices bl sub_81864A8 lsls r0, 24 lsrs r0, 24 @@ -1301,7 +1301,7 @@ _08162CBC: cmp r0, 0 beq _08162CF4 ldr r5, =gFacilityClassToTrainerClass - ldr r4, =gUnknown_08610970 + ldr r4, =gApprentices bl sub_81864A8 lsls r0, 24 lsrs r0, 24 @@ -1316,7 +1316,7 @@ _08162CBC: .pool _08162CF4: ldr r4, =gFacilityClassToTrainerClass - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -1407,7 +1407,7 @@ _08162DC0: ands r0, r1 cmp r0, 0 beq _08162DE8 - ldr r4, =gUnknown_08610970 + ldr r4, =gApprentices bl sub_81864A8 lsls r0, 24 lsrs r0, 24 @@ -1417,7 +1417,7 @@ _08162DC0: b _08162E08 .pool _08162DE8: - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -1648,7 +1648,7 @@ _08162FC0: b _0816300E .pool _08162FEC: - ldr r3, =gUnknown_08610970 + ldr r3, =gApprentices ldr r0, =gSaveBlock2Ptr ldr r1, [r0] ldr r0, =0xfffffe70 @@ -1927,7 +1927,7 @@ _08163230: ldr r1, [r6] adds r1, r5 lsrs r2, r4, 24 - bl sub_8068528 + bl CreateApprenticeMon movs r2, 0x80 lsls r2, 17 adds r4, r2 @@ -6295,7 +6295,7 @@ _08165812: adds r0, r5 ldrb r2, [r0] adds r0, r4, 0 - bl sub_8068528 + bl CreateApprenticeMon movs r3, 0xC8 lsls r3, 1 adds r0, r7, r3 diff --git a/data/battle_frontier_2.s b/data/battle_frontier_2.s index dc38826a7..a05b0143c 100644 --- a/data/battle_frontier_2.s +++ b/data/battle_frontier_2.s @@ -8,7 +8,7 @@ .align 2 @ struct, eight bytes x6 for names in different languages, then 0x28 more bytes of data -gUnknown_08610970:: @ 8610970 +gApprentices:: @ 8610970 .string "サダヒロ$", 8 .string "ALANN$", 8 .string "ALAIN$", 8 diff --git a/include/apprentice.h b/include/apprentice.h new file mode 100644 index 000000000..98185e3c2 --- /dev/null +++ b/include/apprentice.h @@ -0,0 +1,17 @@ +#ifndef GUARD_APPRENTICE_H +#define GUARD_APPRENTICE_H + +#define APPRENTICE_SPECIES_COUNT 10 + +struct ApprenticeTrainer +{ + u8 name[6][PLAYER_NAME_LENGTH + 1]; // For all six languages. + u16 otId; + u16 facilityClass; + u16 species[APPRENTICE_SPECIES_COUNT]; + u8 rest[14]; +}; + +extern const struct ApprenticeTrainer gApprentices[]; + +#endif // GUARD_APPRENTICE_H diff --git a/include/global.h b/include/global.h index 9b66f7da6..ec9fc99bf 100644 --- a/include/global.h +++ b/include/global.h @@ -295,13 +295,21 @@ struct UnknownSaveBlock2Struct u8 field_EB; }; // sizeof = 0xEC -struct UnkRecordMixingStruct +struct ApprenticeMon +{ + u16 species; + u16 moves[4]; + u16 item; +}; + +struct Apprentice { u8 field_0_0:5; u8 field_0_1:2; u8 field_1; u8 field_2; - u8 field_3[37]; + u8 field_3; + struct ApprenticeMon monData[3]; u16 unk28[6]; u8 playerId[4]; u8 playerName[PLAYER_NAME_LENGTH]; @@ -473,6 +481,15 @@ struct BattleFrontier /*0xEFC*/ struct FrontierMonData field_EFC[3]; }; +struct Sav2_B8 +{ + u8 unk0_0:2; + u8 unk0_1:2; + u8 unk0_2:2; + u8 unk0_3:2; + u16 unk2; +}; + struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -500,12 +517,14 @@ struct SaveBlock2 // TODO: fix and verify labels /*0xB0*/ u8 field_B0; /*0xB1*/ u8 field_B1_0:2; - /*0xB1*/ u8 field_B1_1:6; + /*0xB1*/ u8 field_B1_1:4; + /*0xB1*/ u8 field_B1_2:2; /*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_1:2; /*0xB3*/ u8 field_B3; - /*0xB4*/ u8 field_B4[0x28]; - /*0xDC*/ struct UnkRecordMixingStruct field_DC[4]; + /*0xB4*/ u8 field_B4[3]; + /*0xB8*/ struct Sav2_B8 field_B8[9]; + /*0xDC*/ struct Apprentice field_DC[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; diff --git a/include/pokemon.h b/include/pokemon.h index 9eddd8155..d261fba85 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -240,32 +240,6 @@ struct PokemonStorage /*0x83C2*/ u8 boxWallpapers[14]; }; -struct UnknownPokemonSubStruct2 -{ - u16 species; - u16 moves[4]; - u16 item; -}; - -struct UnknownPokemonStruct2 -{ - u8 field_0_0 : 5; - u8 field_0_1 : 2; - u8 field_1; - u8 field_2; - u8 field_3; - struct UnknownPokemonSubStruct2 mons[3]; - u8 field_28[23]; - u8 language; -}; - -struct UnknownPokemonStruct3 -{ - u8 field_0[48]; - u16 field_30; - u8 field_32[38]; -}; - struct Unknown_806F160_Struct { u8 field_0_0:4; @@ -472,7 +446,7 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src); void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50); -void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u8 monId); +void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId); void CreateMonWithEVSpreadPersonalityOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest); void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); diff --git a/include/script_menu.h b/include/script_menu.h index c50bef00f..8870e80b9 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -13,5 +13,6 @@ s32 convert_pixel_width_to_tile_width(s32); u8 CreateWindowFromRect(u8, u8, u8, u8); void sub_80E2A78(u8); u32 display_text_and_get_width(const u8*, u32); +u8 sub_80E2D5C(u8 arg0, u8 tileWidth); #endif //GUARD_SCRIPT_MENU_H diff --git a/ld_script.txt b/ld_script.txt index 8e73eaef8..7728a498b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -247,6 +247,7 @@ SECTIONS { asm/battle_frontier_1.o(.text); src/menu.o(.text); src/battle_factory.o(.text); + src/battle_frontier_2.o(.text); asm/battle_frontier_2.o(.text); src/item_menu.o(.text); src/list_menu.o(.text); diff --git a/src/battle_frontier_2.c b/src/battle_frontier_2.c index e21e972cd..45e4a1683 100644 --- a/src/battle_frontier_2.c +++ b/src/battle_frontier_2.c @@ -1,23 +1,53 @@ #include "global.h" +#include "apprentice.h" #include "string_util.h" #include "script.h" #include "text.h" #include "random.h" #include "main.h" +#include "malloc.h" +#include "strings.h" +#include "menu.h" +#include "script_menu.h" +#include "party_menu.h" +#include "data2.h" +#include "constants/items.h" struct Unk030062ECStruct { u8 unk0; u16 unk2[3][5]; + u8 unk20[3][5]; +}; + +struct Unk030062F0Struct +{ + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; }; extern struct Unk030062ECStruct *gUnknown_030062EC; +extern struct Unk030062F0Struct *gUnknown_030062F0; extern const u8 *const gUnknown_08611330[]; extern const u8 gUnknown_08611548[8]; +extern const u8 gUnknown_086114D3[]; +extern const bool8 gUnknown_08611370[]; + +// text +extern const u8 gText_Give[]; +extern const u8 gText_NoNeed[]; +extern const u8 gText_Yes[]; +extern const u8 gText_No[]; // This file's functions. void sub_81A087C(void); +u16 sub_819FF98(u8 arg0); +bool8 sub_81A0194(u8 arg0, u16 moveId); +void sub_81A0804(u8 arg0, u8 itemsCount, u8 windowId); +u8 sub_81A0784(u8 arg0, u8 arg1, u8 arg2, u8 arg3); void sub_819F99C(u8 id) { @@ -42,15 +72,15 @@ void sub_819FA50(void) EnableBothScriptContexts(); } -void sub_819FA5C(struct UnkRecordMixingStruct *structPtr) +void sub_819FA5C(struct Apprentice *apprentice) { u8 i; for (i = 0; i < 6; i++) - structPtr->unk28[i] |= 0xFFFF; + apprentice->unk28[i] |= 0xFFFF; - structPtr->playerName[0] = EOS; - structPtr->field_0_0 = 16; + apprentice->playerName[0] = EOS; + apprentice->field_0_0 = 16; } void sub_819FAA0(void) @@ -149,3 +179,385 @@ u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) return ret; } + +void sub_819FD64(void) +{ + u8 sp_0[10]; + u8 sp_C[3]; + u8 sp_10; + u8 i, j; + u8 rand1, rand2; + u8 id; + + for (i = 0; i < 3; i++) + sp_C[i] = i; + for (i = 0; i < 10; i++) + { + u8 temp; + rand1 = Random() % ARRAY_COUNT(sp_C); + rand2 = Random() % ARRAY_COUNT(sp_C); + SWAP(sp_C[rand1], sp_C[rand2], temp); + } + + for (i = 0; i < 10; i++) + sp_0[i] = gUnknown_086114D3[i]; + for (i = 0; i < 50; i++) + { + u8 temp; + rand1 = Random() % ARRAY_COUNT(sp_0); + rand2 = Random() % ARRAY_COUNT(sp_0); + SWAP(sp_0[rand1], sp_0[rand2], temp); + } + + gUnknown_030062EC = AllocZeroed(sizeof(*gUnknown_030062EC)); + gUnknown_030062EC->unk0 = 0; + for (i = 0; i < 5; i++) + { + for (j = 0; j < 3; j++) + gUnknown_030062EC->unk20[j][i] = 4; + } + + sp_10 = 0; + for (i = 0; i < 9; i++) + { + gSaveBlock2Ptr->field_B8[i].unk0_0 = sp_0[i]; + if (sp_0[i] != 3) + { + gSaveBlock2Ptr->field_B8[i].unk0_1 = sub_819FCF8(sp_0[i], sp_C, &sp_10); + id = gSaveBlock2Ptr->field_B8[i].unk0_1; + if (sp_0[i] == 2) + { + do + { + rand1 = Random() % 4; + for (j = 0; j < gUnknown_030062EC->unk0 + 1; j++) + { + if (gUnknown_030062EC->unk20[id][j] == rand1) + break; + } + } while (j != gUnknown_030062EC->unk0 + 1); + + gUnknown_030062EC->unk20[id][gUnknown_030062EC->unk0] = rand1; + gSaveBlock2Ptr->field_B8[i].unk0_2 = rand1; + gSaveBlock2Ptr->field_B8[i].unk2 = sub_819FF98(gSaveBlock2Ptr->field_B8[i].unk0_1); + } + } + } + + FREE_AND_SET_NULL(gUnknown_030062EC); +} + +// No idea why a do-while loop is needed, but it will not match without it. + +#define APPRENTICE_SPECIES_ID(speciesArrId, monId) speciesArrId = (gSaveBlock2Ptr->field_B4[monId] >> \ + (((gSaveBlock2Ptr->field_B2_0 >> monId) & 1) << 2)) & 0xF; \ + do {} while (0) + +u16 sub_819FF98(u8 arg0) +{ + u8 i, j; + u8 id; + u8 knownMovesCount; + u16 species; + const u16 *learnset; + bool32 var_24 = FALSE; + u16 moveId = 0; + bool32 valid; + u8 level; + + if (arg0 < 3) + { + APPRENTICE_SPECIES_ID(id, arg0); + } + else + { + id = 0; + } + + species = gApprentices[gSaveBlock2Ptr->field_B0].species[id]; + learnset = gLevelUpLearnsets[species]; + j = 0; + if (gSaveBlock2Ptr->field_B1_0 == 1) + level = 50; + else + level = 60; + + for (j = 0; learnset[j] != 0xFFFF; j++) + { + if ((learnset[j] & 0xFE00) > (level << 9)) + break; + } + + knownMovesCount = j; + i = 0; + while (i < 5) + { + if (Random() % 2 == 0 || var_24 == TRUE) + { + do + { + do + { + id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES); + valid = CanSpeciesLearnTMHM(species, id); + } + while (!valid); + + moveId = ItemIdToBattleMoveId(ITEM_TM01 + id); + valid = TRUE; + + if (knownMovesCount < 5) + j = 0; + else + j = knownMovesCount - 4; + + for (; j < knownMovesCount; j++) + { + if ((learnset[j] & 0x1FF) == moveId) + { + valid = FALSE; + break; + } + } + } while (valid != TRUE); + } + else + { + if (knownMovesCount < 5) + { + var_24 = TRUE; + continue; + } + else + { + do + { + u8 learnsetId = Random() % (knownMovesCount - 4); + moveId = learnset[learnsetId] & 0x1FF; + valid = TRUE; + for (j = knownMovesCount - 4; j < knownMovesCount; j++) + { + if ((learnset[j] & 0x1FF) == moveId) + { + valid = FALSE; + break; + } + } + } while (valid != TRUE); + } + } + + if (sub_81A0194(arg0, moveId)) + { + if (gUnknown_08611370[moveId]) + break; + i++; + } + } + + gUnknown_030062EC->unk0++; + return moveId; +} + +bool8 sub_81A0194(u8 arg0, u16 moveId) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + if (gUnknown_030062EC->unk2[arg0][i] == moveId) + return FALSE; + } + + gUnknown_030062EC->unk2[arg0][gUnknown_030062EC->unk0] = moveId; + return TRUE; +} + +void GetLatestLearnedMoves(u16 species, u16 *moves) +{ + u8 i, j; + u8 level, knownMovesCount; + const u16 *learnset; + + if (gSaveBlock2Ptr->field_B1_0 == 1) + level = 50; + else + level = 60; + + learnset = gLevelUpLearnsets[species]; + for (i = 0; learnset[i] != 0xFFFF; i++) + { + if ((learnset[i] & 0xFE00) > (level << 9)) + break; + } + + knownMovesCount = i; + if (knownMovesCount > 4) + knownMovesCount = 4; + + for (j = 0; j < knownMovesCount; j++) + moves[j] = learnset[(i - 1) - j] & 0x1FF; +} + +u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2) +{ + u16 moves[4]; + u8 i, count; + + if (gSaveBlock2Ptr->field_B1_1 < 3) + return 0; + + count = 0; + for (i = 0; i < 9; i++) + { + if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 0) + break; + count++; + } + + GetLatestLearnedMoves(gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId], moves); + for (i = 0; i < count && i < gSaveBlock2Ptr->field_B1_1 - 3; i++) + { + if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 2 + && gSaveBlock2Ptr->field_B8[i].unk0_1 == arg0 + && gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) + { + moves[gSaveBlock2Ptr->field_B8[i].unk0_2] = gSaveBlock2Ptr->field_B8[i].unk2; + } + } + + return moves[arg2]; +} + +void sub_81A0390(u8 arg0) +{ + struct ApprenticeMon *apprenticeMons[3]; + u8 i, j; + u32 speciesTableId; + + for (i = 0; i < 3; i++) + { + gSaveBlock2Ptr->field_DC[0].monData[i].species = 0; + gSaveBlock2Ptr->field_DC[0].monData[i].item = 0; + for (j = 0; j < 4; j++) + gSaveBlock2Ptr->field_DC[0].monData[i].moves[j] = 0; + } + + j = gSaveBlock2Ptr->field_B1_2; + for (i = 0; i < 3; i++) + { + apprenticeMons[j] = &gSaveBlock2Ptr->field_DC[0].monData[i]; + j = (j + 1) % 3; + } + + for (i = 0; i < 3; i++) + { + APPRENTICE_SPECIES_ID(speciesTableId, i); + apprenticeMons[i]->species = gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId]; + GetLatestLearnedMoves(apprenticeMons[i]->species, apprenticeMons[i]->moves); + } + + for (i = 0; i < arg0; i++) + { + u8 var1 = gSaveBlock2Ptr->field_B8[i].unk0_0; + u8 monId = gSaveBlock2Ptr->field_B8[i].unk0_1; + if (var1 == 1) + { + if (gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) + apprenticeMons[monId]->item = gSaveBlock2Ptr->field_B8[i].unk2; + } + else if (var1 == 2) + { + if (gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) + { + u32 moveSlot = gSaveBlock2Ptr->field_B8[i].unk0_2; + apprenticeMons[monId]->moves[moveSlot] = gSaveBlock2Ptr->field_B8[i].unk2; + } + } + } +} + +void sub_81A04E4(u8 arg0) +{ + u8 i; + u8 windowId; + const u8 *strings[3]; + u8 count = 2; + u8 tileWidth; + u8 r10; + u8 r6; + s32 pixelWidth; + + switch (arg0) + { + case 0: + r10 = 0x12; + r6 = 8; + strings[0] = gText_Lv50; + strings[1] = gText_OpenLevel; + break; + case 1: + count = 3; + r10 = 0x12; + r6 = 6; + for (i = 0; i < 3; i++) + { + u16 species; + u32 speciesTableId; + + APPRENTICE_SPECIES_ID(speciesTableId, i); + species = gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId]; + strings[i] = gSpeciesNames[species]; + } + break; + case 2: + r10 = 0x12; + r6 = 8; + if (gSaveBlock2Ptr->field_B1_1 > 2) + return; + strings[1] = gSpeciesNames[gUnknown_030062F0->unk2]; + strings[0] = gSpeciesNames[gUnknown_030062F0->unk0]; + break; + case 3: + r10 = 0x11; + r6 = 8; + strings[0] = gMoveNames[gUnknown_030062F0->unk4]; + strings[1] = gMoveNames[gUnknown_030062F0->unk6]; + break; + case 4: + r10 = 0x12; + r6 = 8; + strings[0] = gText_Give; + strings[1] = gText_NoNeed; + break; + case 6: + r10 = 0x14; + r6 = 8; + strings[0] = gText_Yes; + strings[1] = gText_No; + break; + default: + r10 = 0; + r6 = 0; + break; + } + + pixelWidth = 0; + for (i = 0; i < count; i++) + { + s32 width = GetStringWidth(1, strings[i], 0); + if (width > pixelWidth) + pixelWidth = width; + } + + tileWidth = convert_pixel_width_to_tile_width(pixelWidth); + r10 = sub_80E2D5C(r10, tileWidth); + windowId = sub_81A0784(r10, r6, tileWidth, count * 2); + SetStandardWindowBorderStyle(windowId, 0); + + for (i = 0; i < count; i++) + AddTextPrinterParameterized(windowId, 1, strings[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL); + + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, 0); + sub_81A0804(1, count, windowId); +} diff --git a/src/pokemon.c b/src/pokemon.c index 8e2e3b764..bb2fc753c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -35,6 +35,7 @@ #include "pokenav.h" #include "pokemon_storage_system.h" #include "recorded_battle.h" +#include "apprentice.h" struct SpeciesItem { @@ -69,7 +70,6 @@ extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[]; extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; -extern const struct UnknownPokemonStruct3 gUnknown_08610970[]; extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const u8 gTrainerClassNames[][13]; @@ -2873,17 +2873,17 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv CalculateMonStats(mon); } -void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u8 monId) +void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId) { s32 i; u16 evAmount; u8 language; - u32 otId = gUnknown_08610970[src->field_0_0].field_30; - u32 personality = ((gUnknown_08610970[src->field_0_0].field_30 >> 8) | ((gUnknown_08610970[src->field_0_0].field_30 & 0xFF) << 8)) - + src->mons[monId].species + src->field_2; + u32 otId = gApprentices[src->field_0_0].otId; + u32 personality = ((gApprentices[src->field_0_0].otId >> 8) | ((gApprentices[src->field_0_0].otId & 0xFF) << 8)) + + src->monData[monId].species + src->field_2; CreateMon(mon, - src->mons[monId].species, + src->monData[monId].species, GetFrontierEnemyMonLevel(src->field_0_1 - 1), 0x1F, TRUE, @@ -2891,9 +2891,9 @@ void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u TRUE, otId); - SetMonData(mon, MON_DATA_HELD_ITEM, &src->mons[monId].item); + SetMonData(mon, MON_DATA_HELD_ITEM, &src->monData[monId].item); for (i = 0; i < 4; i++) - SetMonMoveSlot(mon, src->mons[monId].moves[i], i); + SetMonMoveSlot(mon, src->monData[monId].moves[i], i); evAmount = MAX_TOTAL_EVS / NUM_STATS; for (i = 0; i < NUM_STATS; i++) diff --git a/src/record_mixing.c b/src/record_mixing.c index 6c6f69fa8..8d0022f17 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -83,7 +83,7 @@ struct PlayerRecordsEmerald /* 0x1124 */ struct EmeraldBattleTowerRecord battleTowerRecord; /* 0x1210 */ u16 unk_1210; /* 0x1214 */ LilycoveLady lilycoveLady; - /* 0x1254 */ struct UnkRecordMixingStruct unk_1254[2]; + /* 0x1254 */ struct Apprentice apprentice[2]; /* 0x12dc */ struct UnkRecordMixingStruct2 unk_12dc; /* 0x1434 */ u8 field_1434[0x10]; }; // 0x1444 @@ -134,8 +134,8 @@ static void sub_80E7B2C(const u8 *); static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *); static void sub_80E7F68(u16 *item, u8 which); static void sub_80E7FF8(u8 taskId); -static void sub_80E8110(struct UnkRecordMixingStruct *arg0, struct UnkRecordMixingStruct *arg1); -static void sub_80E8468(struct UnkRecordMixingStruct *arg0, size_t arg1, u32 arg2); +static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1); +static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2); static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2); static void sub_80E89F8(struct RecordMixingDayCareMail *dst); static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src); @@ -265,7 +265,7 @@ static void PrepareExchangePacket(void) if (GetMultiplayerId() == 0) sSentRecord->emerald.unk_1210 = GetRecordMixingGift(); - sub_80E8110(sSentRecord->emerald.unk_1254, gUnknown_03001154); + sub_80E8110(sSentRecord->emerald.apprentice, gUnknown_03001154); sub_80E8260(&sSentRecord->emerald.unk_12dc); } } @@ -298,7 +298,7 @@ static void ReceiveExchangePacket(u32 which) ReceiveBattleTowerData(&sReceivedRecords->emerald.battleTowerRecord, sizeof(struct PlayerRecordsEmerald), which); sub_80E7F68(&sReceivedRecords->emerald.unk_1210, which); ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which); - sub_80E8468(sReceivedRecords->emerald.unk_1254, sizeof(struct PlayerRecordsEmerald), (u8) which); + ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which); sub_80E89AC(&sReceivedRecords->emerald.unk_12dc, sizeof(struct PlayerRecordsEmerald), (u8) which); } } @@ -1551,13 +1551,13 @@ static void sub_80E7FF8(u8 taskId) // New Emerald functions -static void sub_80E8110(struct UnkRecordMixingStruct *dst, struct UnkRecordMixingStruct *src) +static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src) { s32 i, id; s32 var_2C, var_28, var_24, r8; - dst[0].field_38[0] = 0xFF; - dst[1].field_38[0] = 0xFF; + dst[0].playerName[0] = EOS; + dst[1].playerName[0] = EOS; dst[0] = src[0]; @@ -1568,7 +1568,7 @@ static void sub_80E8110(struct UnkRecordMixingStruct *dst, struct UnkRecordMixin for (i = 0; i < 2; i++) { id = ((i + gSaveBlock2Ptr->field_B2_1) % 3) + 1; - if (src[id].field_38[0] != 0xFF) + if (src[id].playerName[0] != EOS) { if (ReadUnalignedWord(src[id].playerId) != ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId)) { @@ -1646,14 +1646,14 @@ void sub_80E8260(struct UnkRecordMixingStruct2 *dst) } } -static bool32 sub_80E841C(struct UnkRecordMixingStruct *arg0, struct UnkRecordMixingStruct *arg1) +static bool32 sub_80E841C(struct Apprentice *arg0, struct Apprentice *arg1) { s32 i; for (i = 0; i < 4; i++) { if (ReadUnalignedWord(arg0->playerId) == ReadUnalignedWord(arg1[i].playerId) - && arg0->field_0[2] == arg1[i].field_0[2]) + && arg0->field_2 == arg1[i].field_2) { return TRUE; } @@ -1662,10 +1662,10 @@ static bool32 sub_80E841C(struct UnkRecordMixingStruct *arg0, struct UnkRecordMi return FALSE; } -static void sub_80E8468(struct UnkRecordMixingStruct *arg0, size_t arg1, u32 arg2) +static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2) { s32 i, r7, r8; - struct UnkRecordMixingStruct *structPtr; + struct Apprentice *structPtr; u32 mixIndices[4]; u32 structId; @@ -1675,7 +1675,7 @@ static void sub_80E8468(struct UnkRecordMixingStruct *arg0, size_t arg1, u32 arg r8 = 0; for (i = 0; i < 2; i++) { - if (structPtr[i].field_38[0] != 0xFF && !sub_80E841C(&structPtr[i], gSaveBlock2Ptr->field_DC)) + if (structPtr[i].playerName[0] != EOS && !sub_80E841C(&structPtr[i], gSaveBlock2Ptr->field_DC)) { r7++; r8 = i; From 36b8a6a9a2ad5aca2e5d59a1293222819d987aa6 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 13 Oct 2018 23:23:33 +0200 Subject: [PATCH 03/10] More apprentice work --- asm/battle_frontier_2.s | 1114 --------------------- include/global.h | 2 +- include/menu.h | 2 +- ld_script.txt | 2 +- src/{battle_frontier_2.c => apprentice.c} | 438 +++++++- src/easy_chat.c | 2 +- 6 files changed, 415 insertions(+), 1145 deletions(-) rename src/{battle_frontier_2.c => apprentice.c} (55%) diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index ee5f37944..982a7f4e7 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -6,1120 +6,6 @@ .text - - - thumb_func_start sub_81A070C -sub_81A070C: @ 81A070C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081A0730 - bl Menu_ProcessInputNoWrapAround - b _081A0734 - .pool -_081A0730: - bl ProcessMenuInput -_081A0734: - lsls r0, 24 - lsrs r0, 24 - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _081A0778 - adds r0, 0x1 - cmp r1, r0 - bne _081A0764 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081A0778 - movs r0, 0x5 - bl PlaySE - ldr r1, =gSpecialVar_Result - movs r0, 0x7F - strh r0, [r1] - b _081A0768 - .pool -_081A0764: - ldr r0, =gSpecialVar_Result - strh r1, [r0] -_081A0768: - ldrb r0, [r4, 0xC] - bl sub_81A07E8 - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts -_081A0778: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A070C - - thumb_func_start sub_81A0784 -sub_81A0784: @ 81A0784 - push {r4,r5,lr} - sub sp, 0x20 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsls r5, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x80 - lsls r0, 17 - adds r4, r0 - lsrs r4, 24 - adds r5, r0 - lsrs r5, 24 - str r2, [sp] - str r3, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0x64 - str r0, [sp, 0xC] - add r0, sp, 0x10 - movs r1, 0 - adds r2, r4, 0 - adds r3, r5, 0 - bl CreateWindowTemplate - ldr r0, [sp, 0x10] - ldr r1, [sp, 0x14] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - add r0, sp, 0x18 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - adds r0, r4, 0 - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81A0784 - - thumb_func_start sub_81A07E8 -sub_81A07E8: @ 81A07E8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8198070 - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81A07E8 - - thumb_func_start sub_81A0804 -sub_81A0804: @ 81A0804 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, =sub_81A070C - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - strh r4, [r1, 0x10] - cmp r5, 0x3 - bls _081A0840 - movs r0, 0x1 - b _081A0842 - .pool -_081A0840: - movs r0, 0 -_081A0842: - strh r0, [r1, 0x12] - ldr r1, =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x14] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0804 - - thumb_func_start sub_81A085C -sub_81A085C: @ 81A085C - push {lr} - ldr r1, =gUnknown_086114E0 - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A085C - - thumb_func_start sub_81A087C -sub_81A087C: @ 81A087C - push {r4-r7,lr} - bl sub_819FBC8 - ldr r3, =gSaveBlock2Ptr - ldr r1, [r3] - adds r1, 0xB1 - ldrb r2, [r1] - movs r0, 0x4 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, 0xB1 - ldrb r2, [r1] - movs r0, 0x3D - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, 0xB1 - ldrb r2, [r1] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1] - ldr r1, [r3] - adds r1, 0xB2 - ldrb r2, [r1] - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r4, 0 - movs r1, 0 -_081A08BE: - ldr r0, [r3] - adds r0, 0xB4 - adds r0, r4 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081A08BE - movs r4, 0 - ldr r5, =gSaveBlock2Ptr - movs r0, 0x4 - negs r0, r0 - mov r12, r0 - movs r7, 0xD - negs r7, r7 - movs r6, 0x31 - negs r6, r6 -_081A08E2: - ldr r1, [r5] - lsls r3, r4, 2 - adds r1, r3 - adds r1, 0xB8 - ldrb r2, [r1] - mov r0, r12 - ands r0, r2 - strb r0, [r1] - ldr r1, [r5] - adds r1, r3 - adds r1, 0xB8 - ldrb r2, [r1] - adds r0, r7, 0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r5] - adds r1, r3 - adds r1, 0xB8 - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - ldr r1, [r5] - adds r1, r3 - adds r1, 0xB8 - ldrb r2, [r1] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, r3 - adds r0, 0xBA - movs r1, 0 - strh r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _081A08E2 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A087C - - thumb_func_start sub_81A093C -sub_81A093C: @ 81A093C - push {lr} - bl sub_819FBB0 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _081A0954 - ldr r0, =gSpecialVar_Result - strh r1, [r0] - b _081A095A - .pool -_081A0954: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_081A095A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A093C - - thumb_func_start sub_81A0964 -sub_81A0964: @ 81A0964 - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrb r0, [r0] - bl sub_819FC40 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0964 - - thumb_func_start sub_81A0978 -sub_81A0978: @ 81A0978 - push {lr} - bl sub_819FBC8 - pop {r0} - bx r0 - thumb_func_end sub_81A0978 - - thumb_func_start sub_81A0984 -sub_81A0984: @ 81A0984 - push {lr} - bl sub_819FD64 - pop {r0} - bx r0 - thumb_func_end sub_81A0984 - - thumb_func_start sub_81A0990 -sub_81A0990: @ 81A0990 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - adds r2, 0xB1 - ldrb r3, [r2] - lsls r1, r3, 26 - lsrs r1, 28 - adds r1, 0x1 - movs r0, 0xF - ands r1, r0 - lsls r1, 2 - movs r0, 0x3D - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - bx lr - .pool - thumb_func_end sub_81A0990 - - thumb_func_start sub_81A09B4 -sub_81A09B4: @ 81A09B4 - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_81A09B4 - - thumb_func_start sub_81A09D0 -sub_81A09D0: @ 81A09D0 - push {lr} - ldr r3, =gSaveBlock2Ptr - ldr r0, [r3] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r1, r0, 0x3 - cmp r1, 0 - bge _081A09F4 - ldr r1, =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] - b _081A0A1C - .pool -_081A09F4: - ldr r2, =gSpecialVar_Result - cmp r1, 0x8 - ble _081A09FE - movs r0, 0x1 - strh r0, [r2] -_081A09FE: - ldr r0, [r3] - lsls r1, 2 - adds r0, r1 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bne _081A0A18 - movs r0, 0x1 - b _081A0A1A - .pool -_081A0A18: - movs r0, 0 -_081A0A1A: - strh r0, [r2] -_081A0A1C: - pop {r0} - bx r0 - thumb_func_end sub_81A09D0 - - thumb_func_start sub_81A0A20 -sub_81A0A20: @ 81A0A20 - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrb r0, [r0] - bl sub_81A04E4 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0A20 - - thumb_func_start sub_81A0A34 -sub_81A0A34: @ 81A0A34 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl RunTextPrintersAndIsPrinter0Active - lsls r0, 16 - cmp r0, 0 - bne _081A0A68 - adds r0, r4, 0 - bl DestroyTask - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - beq _081A0A64 - ldr r0, =EnableBothScriptContexts - bl sub_81A172C - b _081A0A68 - .pool -_081A0A64: - bl EnableBothScriptContexts -_081A0A68: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81A0A34 - - thumb_func_start sub_81A0A70 -sub_81A0A70: @ 81A0A70 - push {lr} - ldr r1, =gSpecialVar_0x8006 - ldrh r0, [r1] - cmp r0, 0x6 - bne _081A0A94 - ldr r1, =gUnknown_08610FF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - b _081A0C66 - .pool -_081A0A94: - cmp r0, 0x7 - bne _081A0AB0 - ldr r1, =gUnknown_08610FF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - b _081A0C66 - .pool -_081A0AB0: - cmp r0, 0x8 - bne _081A0ACC - ldr r1, =gUnknown_086111B0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - b _081A0C66 - .pool -_081A0ACC: - cmp r0, 0x9 - bne _081A0AE8 - ldr r1, =gUnknown_086111B0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - b _081A0C66 - .pool -_081A0AE8: - cmp r0, 0x4 - bne _081A0B04 - ldr r1, =gUnknown_08611230 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - b _081A0C66 - .pool -_081A0B04: - cmp r0, 0x5 - bne _081A0B20 - ldr r1, =gUnknown_08611230 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - b _081A0C66 - .pool -_081A0B20: - cmp r0, 0xA - bne _081A0B40 - ldr r2, =gUnknown_08611070 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - b _081A0BD6 - .pool -_081A0B40: - cmp r0, 0xB - bne _081A0B5C - ldr r1, =gUnknown_086112B0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - b _081A0C66 - .pool -_081A0B5C: - cmp r0, 0xC - bne _081A0B7C - ldr r2, =gUnknown_08611070 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0xC - b _081A0BD6 - .pool -_081A0B7C: - cmp r0, 0xD - bne _081A0B9C - ldr r2, =gUnknown_08611070 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x4 - b _081A0BD6 - .pool -_081A0B9C: - ldrh r0, [r1] - cmp r0, 0x10 - bne _081A0BC0 - ldr r2, =gUnknown_08611070 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x10 - b _081A0BD6 - .pool -_081A0BC0: - cmp r0, 0xE - bne _081A0BE4 - ldr r2, =gUnknown_08611070 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, 0x8 -_081A0BD6: - adds r0, r2 - ldr r1, [r0] - b _081A0C7A - .pool -_081A0BE4: - cmp r0, 0xF - bne _081A0C00 - ldr r1, =gUnknown_086112B0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - b _081A0C66 - .pool -_081A0C00: - cmp r0, 0 - bne _081A0C1C - ldr r1, =gUnknown_08610EF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 4 - b _081A0C66 - .pool -_081A0C1C: - cmp r0, 0x1 - bne _081A0C38 - ldr r1, =gUnknown_08610EF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 4 - adds r1, 0x4 - b _081A0C66 - .pool -_081A0C38: - cmp r0, 0x2 - bne _081A0C54 - ldr r1, =gUnknown_08610EF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 4 - adds r1, 0x8 - b _081A0C66 - .pool -_081A0C54: - cmp r0, 0x3 - bne _081A0C74 - ldr r1, =gUnknown_08610EF0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - lsls r0, 4 - adds r1, 0xC -_081A0C66: - adds r0, r1 - ldr r1, [r0] - b _081A0C7A - .pool -_081A0C74: - bl EnableBothScriptContexts - b _081A0C8E -_081A0C7A: - ldr r0, =gStringVar4 - bl StringExpandPlaceholders - movs r0, 0x1 - bl AddTextPrinterForMessage - ldr r0, =sub_81A0A34 - movs r1, 0x1 - bl CreateTask -_081A0C8E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0A70 - - thumb_func_start sub_81A0C9C -sub_81A0C9C: @ 81A0C9C - push {lr} - bl ScriptContext2_Enable - bl FreezeEventObjects - bl sub_808B864 - bl sub_808BCF4 - movs r0, 0 - movs r1, 0x1 - bl NewMenuHelpers_DrawDialogueFrame - bl sub_81A0A70 - pop {r0} - bx r0 - thumb_func_end sub_81A0C9C - - thumb_func_start sub_81A0CC0 -sub_81A0CC0: @ 81A0CC0 - push {lr} - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r1, r0, 26 - lsrs r0, r1, 28 - cmp r0, 0x2 - bhi _081A0CE4 - ldr r1, =gSpecialVar_Result - movs r0, 0x2 - b _081A0D34 - .pool -_081A0CE4: - lsrs r0, r1, 28 - cmp r0, 0xB - bhi _081A0D30 - lsrs r0, r1, 28 - subs r0, 0x3 - lsls r0, 2 - adds r0, r2, r0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x2 - beq _081A0D18 - cmp r0, 0x2 - bgt _081A0D08 - cmp r0, 0x1 - beq _081A0D0E - b _081A0D30 -_081A0D08: - cmp r0, 0x3 - beq _081A0D24 - b _081A0D30 -_081A0D0E: - ldr r1, =gSpecialVar_Result - movs r0, 0x4 - b _081A0D34 - .pool -_081A0D18: - ldr r1, =gSpecialVar_Result - movs r0, 0x3 - b _081A0D34 - .pool -_081A0D24: - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - b _081A0D34 - .pool -_081A0D30: - ldr r1, =gSpecialVar_Result - movs r0, 0x5 -_081A0D34: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0CC0 - - thumb_func_start sub_81A0D40 -sub_81A0D40: @ 81A0D40 - push {r4,lr} - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - beq _081A0D6E - ldr r4, =gSpecialVar_0x8006 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - adds r2, 0xB2 - ldrb r3, [r2] - lsls r0, r3, 29 - lsrs r0, 29 - movs r1, 0x1 - ldrb r4, [r4] - lsls r1, r4 - orrs r1, r0 - movs r0, 0x7 - ands r1, r0 - movs r0, 0x8 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_081A0D6E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0D40 - - thumb_func_start sub_81A0D80 -sub_81A0D80: @ 81A0D80 - push {lr} - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r1, r0, 26 - lsrs r0, r1, 28 - cmp r0, 0x2 - bls _081A0DCE - subs r0, 0x3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - beq _081A0DC0 - lsls r2, 2 - adds r2, r3, r2 - adds r2, 0xB8 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - b _081A0DCE - .pool -_081A0DC0: - lsls r0, r2, 2 - adds r0, r3, r0 - adds r0, 0xB8 - ldrb r2, [r0] - movs r1, 0x3F - ands r1, r2 - strb r1, [r0] -_081A0DCE: - pop {r0} - bx r0 - thumb_func_end sub_81A0D80 - - thumb_func_start sub_81A0DD4 -sub_81A0DD4: @ 81A0DD4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r6, 0 - movs r2, 0 - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - ldr r3, =gUnknown_030062F0 - mov r9, r3 - cmp r0, 0 - beq _081A0E14 - adds r3, r1, 0 -_081A0DF4: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x8 - bhi _081A0E14 - ldr r0, [r3] - lsls r1, r2, 2 - adds r0, r1 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bne _081A0DF4 -_081A0E14: - mov r4, r9 - movs r0, 0x8 - bl AllocZeroed - adds r7, r0, 0 - str r7, [r4] - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0x2 - bne _081A0E88 - ldr r0, =gSaveBlock2Ptr - ldr r5, [r0] - adds r6, r5, 0 - adds r6, 0xB1 - ldrb r0, [r6] - lsls r1, r0, 26 - lsrs r0, r1, 28 - cmp r0, 0x2 - bls _081A0E3C - b _081A0FCE -_081A0E3C: - adds r2, r5, 0 - adds r2, 0xB4 - adds r0, r2, r0 - ldrb r0, [r0] - lsrs r4, r0, 4 - ldr r3, =gApprentices - lsls r1, r4, 1 - adds r5, 0xB0 - ldrb r0, [r5] - movs r4, 0x58 - muls r0, r4 - adds r1, r0 - adds r3, 0x34 - adds r1, r3 - ldrh r0, [r1] - strh r0, [r7, 0x2] - ldrb r0, [r6] - lsls r0, 26 - lsrs r0, 28 - adds r2, r0 - ldrb r1, [r2] - movs r0, 0xF - ands r0, r1 - lsls r0, 1 - ldrb r1, [r5] - muls r1, r4 - adds r0, r1 - adds r0, r3 - b _081A0FCA - .pool -_081A0E88: - cmp r0, 0x3 - bne _081A0F54 - ldr r0, =gSaveBlock2Ptr - mov r8, r0 - ldr r5, [r0] - movs r1, 0xB1 - adds r1, r5 - mov r12, r1 - ldrb r0, [r1] - lsls r2, r0, 26 - lsrs r0, r2, 28 - cmp r0, 0x2 - bhi _081A0EA4 - b _081A0FCE -_081A0EA4: - adds r1, r0, 0 - adds r0, r6, 0x3 - cmp r1, r0 - blt _081A0EAE - b _081A0FCE -_081A0EAE: - adds r0, r1, 0 - subs r0, 0x3 - lsls r0, 2 - adds r0, r5, r0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x2 - beq _081A0EC4 - b _081A0FCE -_081A0EC4: - adds r0, r1, 0 - subs r0, 0x3 - lsls r0, 2 - adds r0, r5, r0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 28 - lsrs r6, r0, 30 - adds r0, r5, 0 - adds r0, 0xB2 - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 29 - asrs r1, r6 - movs r0, 0x1 - ands r1, r0 - adds r0, r5, 0 - adds r0, 0xB4 - adds r0, r6 - ldrb r4, [r0] - lsls r1, 2 - asrs r4, r1 - movs r0, 0xF - ands r4, r0 - ldr r2, =gApprentices - lsls r1, r4, 1 - adds r0, r5, 0 - adds r0, 0xB0 - ldrb r3, [r0] - movs r0, 0x58 - muls r0, r3 - adds r1, r0 - adds r2, 0x34 - adds r1, r2 - ldrh r0, [r1] - strh r0, [r7] - mov r3, r12 - ldrb r0, [r3] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r0, r5, r0 - adds r0, 0xB8 - ldrb r2, [r0] - lsls r2, 26 - lsrs r2, 30 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_81A0284 - mov r1, r9 - ldr r2, [r1] - strh r0, [r2, 0x4] - mov r3, r8 - ldr r1, [r3] - adds r0, r1, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r1, r0 - adds r1, 0xBA - ldrh r0, [r1] - strh r0, [r2, 0x6] - b _081A0FCE - .pool -_081A0F54: - cmp r0, 0x4 - bne _081A0FCE - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r2, r0, 26 - lsrs r0, r2, 28 - cmp r0, 0x2 - bls _081A0FCE - adds r1, r0, 0 - adds r0, r6, 0x3 - cmp r1, r0 - bge _081A0FCE - adds r0, r1, 0 - subs r0, 0x3 - lsls r0, 2 - adds r0, r3, r0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _081A0FCE - adds r0, r1, 0 - subs r0, 0x3 - lsls r0, 2 - adds r0, r3, r0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 28 - lsrs r6, r0, 30 - adds r0, r3, 0 - adds r0, 0xB2 - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 29 - asrs r1, r6 - movs r0, 0x1 - ands r1, r0 - adds r0, r3, 0 - adds r0, 0xB4 - adds r0, r6 - ldrb r0, [r0] - lsls r1, 2 - asrs r0, r1 - movs r1, 0xF - ands r0, r1 - ldr r2, =gApprentices - lsls r0, 1 - adds r1, r3, 0 - adds r1, 0xB0 - ldrb r3, [r1] - movs r1, 0x58 - muls r1, r3 - adds r0, r1 - adds r2, 0x34 - adds r0, r2 -_081A0FCA: - ldrh r0, [r0] - strh r0, [r7] -_081A0FCE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0DD4 - - thumb_func_start sub_81A0FE4 -sub_81A0FE4: @ 81A0FE4 - push {r4,lr} - ldr r4, =gUnknown_030062F0 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0FE4 - thumb_func_start sub_81A0FFC sub_81A0FFC: @ 81A0FFC push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index ec9fc99bf..0100d04db 100644 --- a/include/global.h +++ b/include/global.h @@ -310,7 +310,7 @@ struct Apprentice u8 field_2; u8 field_3; struct ApprenticeMon monData[3]; - u16 unk28[6]; + u16 easyChatWords[6]; u8 playerId[4]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; diff --git a/include/menu.h b/include/menu.h index cddab0870..7815f71d8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -50,7 +50,7 @@ void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); void reset_temp_tile_data_buffers(void); void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); -struct WindowTemplate CreateWindowTemplate(u8, u8, u8, u8, u8, u8, u16); +struct WindowTemplate CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock); void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, int size, u16 offset, u8 mode); s8 Menu_ProcessInputNoWrap_(void); diff --git a/ld_script.txt b/ld_script.txt index 7728a498b..e9a915fed 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -247,7 +247,7 @@ SECTIONS { asm/battle_frontier_1.o(.text); src/menu.o(.text); src/battle_factory.o(.text); - src/battle_frontier_2.o(.text); + src/apprentice.o(.text); asm/battle_frontier_2.o(.text); src/item_menu.o(.text); src/list_menu.o(.text); diff --git a/src/battle_frontier_2.c b/src/apprentice.c similarity index 55% rename from src/battle_frontier_2.c rename to src/apprentice.c index 45e4a1683..a0237706c 100644 --- a/src/battle_frontier_2.c +++ b/src/apprentice.c @@ -11,7 +11,13 @@ #include "script_menu.h" #include "party_menu.h" #include "data2.h" +#include "task.h" +#include "sound.h" +#include "event_data.h" +#include "field_player_avatar.h" +#include "event_object_movement.h" #include "constants/items.h" +#include "constants/songs.h" struct Unk030062ECStruct { @@ -32,9 +38,16 @@ extern struct Unk030062ECStruct *gUnknown_030062EC; extern struct Unk030062F0Struct *gUnknown_030062F0; extern const u8 *const gUnknown_08611330[]; +extern const u8 *const gUnknown_08610FF0[][2]; +extern const u8 *const gUnknown_086112B0[][2]; +extern const u8 *const gUnknown_08611230[][2]; +extern const u8 *const gUnknown_086111B0[][2]; +extern const u8 *const gUnknown_08610EF0[][4]; +extern const u8 *const gUnknown_08611070[][5]; extern const u8 gUnknown_08611548[8]; extern const u8 gUnknown_086114D3[]; extern const bool8 gUnknown_08611370[]; +extern void (* const gUnknown_086114E0[])(void); // text extern const u8 gText_Give[]; @@ -46,8 +59,10 @@ extern const u8 gText_No[]; void sub_81A087C(void); u16 sub_819FF98(u8 arg0); bool8 sub_81A0194(u8 arg0, u16 moveId); -void sub_81A0804(u8 arg0, u8 itemsCount, u8 windowId); -u8 sub_81A0784(u8 arg0, u8 arg1, u8 arg2, u8 arg3); +void sub_81A0804(bool8 noBButton, u8 itemsCount, u8 windowId); +u8 sub_81A0784(u8 left, u8 top, u8 width, u8 height); +void sub_81A07E8(u8 windowId); +void sub_81A172C(void (*func)(void)); void sub_819F99C(u8 id) { @@ -77,7 +92,7 @@ void sub_819FA5C(struct Apprentice *apprentice) u8 i; for (i = 0; i < 6; i++) - apprentice->unk28[i] |= 0xFFFF; + apprentice->easyChatWords[i] |= 0xFFFF; apprentice->playerName[0] = EOS; apprentice->field_0_0 = 16; @@ -91,7 +106,7 @@ void sub_819FAA0(void) for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) - gSaveBlock2Ptr->field_DC[i].unk28[j] |= 0xFFFF; + gSaveBlock2Ptr->field_DC[i].easyChatWords[j] |= 0xFFFF; gSaveBlock2Ptr->field_DC[i].field_0_0 = 16; gSaveBlock2Ptr->field_DC[i].playerName[0] = EOS; gSaveBlock2Ptr->field_DC[i].field_0_1 = 0; @@ -106,7 +121,7 @@ void sub_819FAA0(void) sub_81A087C(); } -u8 sub_819FBB0(void) +bool8 sub_819FBB0(void) { return (gSaveBlock2Ptr->field_B1_0 != 0); } @@ -251,7 +266,13 @@ void sub_819FD64(void) #define APPRENTICE_SPECIES_ID(speciesArrId, monId) speciesArrId = (gSaveBlock2Ptr->field_B4[monId] >> \ (((gSaveBlock2Ptr->field_B2_0 >> monId) & 1) << 2)) & 0xF; \ - do {} while (0) + do {} while (0) + +// Why the need to have two macros do the exact thing differently? +#define APPRENTICE_SPECIES_ID_2(speciesArrId, monId) { u8 a0 = ((gSaveBlock2Ptr->field_B2_0 >> monId) & 1);\ + speciesArrId = gSaveBlock2Ptr->field_B4[monId]; \ + speciesArrId = ((speciesArrId) >> (a0 << 2)) & 0xF; \ + } u16 sub_819FF98(u8 arg0) { @@ -483,23 +504,23 @@ void sub_81A04E4(u8 arg0) u8 windowId; const u8 *strings[3]; u8 count = 2; - u8 tileWidth; - u8 r10; - u8 r6; + u8 width; + u8 left; + u8 top; s32 pixelWidth; switch (arg0) { case 0: - r10 = 0x12; - r6 = 8; + left = 0x12; + top = 8; strings[0] = gText_Lv50; strings[1] = gText_OpenLevel; break; case 1: count = 3; - r10 = 0x12; - r6 = 6; + left = 0x12; + top = 6; for (i = 0; i < 3; i++) { u16 species; @@ -511,34 +532,34 @@ void sub_81A04E4(u8 arg0) } break; case 2: - r10 = 0x12; - r6 = 8; + left = 0x12; + top = 8; if (gSaveBlock2Ptr->field_B1_1 > 2) return; strings[1] = gSpeciesNames[gUnknown_030062F0->unk2]; strings[0] = gSpeciesNames[gUnknown_030062F0->unk0]; break; case 3: - r10 = 0x11; - r6 = 8; + left = 0x11; + top = 8; strings[0] = gMoveNames[gUnknown_030062F0->unk4]; strings[1] = gMoveNames[gUnknown_030062F0->unk6]; break; case 4: - r10 = 0x12; - r6 = 8; + left = 0x12; + top = 8; strings[0] = gText_Give; strings[1] = gText_NoNeed; break; case 6: - r10 = 0x14; - r6 = 8; + left = 0x14; + top = 8; strings[0] = gText_Yes; strings[1] = gText_No; break; default: - r10 = 0; - r6 = 0; + left = 0; + top = 0; break; } @@ -550,14 +571,377 @@ void sub_81A04E4(u8 arg0) pixelWidth = width; } - tileWidth = convert_pixel_width_to_tile_width(pixelWidth); - r10 = sub_80E2D5C(r10, tileWidth); - windowId = sub_81A0784(r10, r6, tileWidth, count * 2); + width = convert_pixel_width_to_tile_width(pixelWidth); + left = sub_80E2D5C(left, width); + windowId = sub_81A0784(left, top, width, count * 2); SetStandardWindowBorderStyle(windowId, 0); for (i = 0; i < count; i++) AddTextPrinterParameterized(windowId, 1, strings[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, 0); - sub_81A0804(1, count, windowId); + sub_81A0804(TRUE, count, windowId); +} + +#define tNoBButton data[4] +#define tWrapAround data[5] +#define tWindowId data[6] + +void sub_81A070C(u8 taskId) +{ + s8 input; + s16 *data = gTasks[taskId].data; + + if (!tWrapAround) + input = Menu_ProcessInputNoWrapAround(); + else + input = ProcessMenuInput(); + + switch (input) + { + case MENU_NOTHING_CHOSEN: + return; + case MENU_B_PRESSED: + if (tNoBButton) + return; + + PlaySE(SE_SELECT); + gSpecialVar_Result = 0x7F; + break; + default: + gSpecialVar_Result = input; + break; + } + + sub_81A07E8(tWindowId); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +u8 sub_81A0784(u8 left, u8 top, u8 width, u8 height) +{ + u8 windowId; + struct WindowTemplate winTemplate = CreateWindowTemplate(0, left + 1, top + 1, width, height, 15, 100); + + windowId = AddWindow(&winTemplate); + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); + return windowId; +} + +void sub_81A07E8(u8 windowId) +{ + sub_8198070(windowId, TRUE); + RemoveWindow(windowId); +} + +void sub_81A0804(bool8 noBButton, u8 itemsCount, u8 windowId) +{ + u8 taskId = CreateTask(sub_81A070C, 80); + gTasks[taskId].tNoBButton = noBButton; + + if (itemsCount > 3) + gTasks[taskId].tWrapAround = TRUE; + else + gTasks[taskId].tWrapAround = FALSE; + + gTasks[taskId].tWindowId = windowId; +} + +#undef tNoBButton +#undef tWrapAround +#undef tWindowId + +void sub_81A085C(void) +{ + gUnknown_086114E0[gSpecialVar_0x8004](); +} + +void sub_81A087C(void) +{ + u8 i; + + sub_819FBC8(); + gSaveBlock2Ptr->field_B1_0 = 0; + gSaveBlock2Ptr->field_B1_1 = 0; + gSaveBlock2Ptr->field_B1_2 = 0; + gSaveBlock2Ptr->field_B2_0 = 0; + + for (i = 0; i < 3; i++) + gSaveBlock2Ptr->field_B4[i] = 0; + + for (i = 0; i < 9; i++) + { + gSaveBlock2Ptr->field_B8[i].unk0_0 = 0; + gSaveBlock2Ptr->field_B8[i].unk0_1 = 0; + gSaveBlock2Ptr->field_B8[i].unk0_2 = 0; + gSaveBlock2Ptr->field_B8[i].unk0_3 = 0; + gSaveBlock2Ptr->field_B8[i].unk2 = 0; + } +} + +void sub_81A093C(void) +{ + if (!sub_819FBB0()) + gSpecialVar_Result = FALSE; + else + gSpecialVar_Result = TRUE; +} + +void sub_81A0964(void) +{ + sub_819FC40(gSpecialVar_0x8005); +} + +void sub_81A0978(void) +{ + sub_819FBC8(); +} + +void sub_81A0984(void) +{ + sub_819FD64(); +} + +void sub_81A0990(void) +{ + gSaveBlock2Ptr->field_B1_1++; +} + +void sub_81A09B4(void) +{ + gSpecialVar_Result = gSaveBlock2Ptr->field_B1_1; +} + +void sub_81A09D0(void) +{ + s32 var = gSaveBlock2Ptr->field_B1_1 - 3; + if (var < 0) + { + gSpecialVar_Result = FALSE; + } + else + { + if (var > 8) + gSpecialVar_Result = TRUE; + + if (!gSaveBlock2Ptr->field_B8[var].unk0_0) + gSpecialVar_Result = TRUE; + else + gSpecialVar_Result = FALSE; + } +} + +void sub_81A0A20(void) +{ + sub_81A04E4(gSpecialVar_0x8005); +} + +void sub_81A0A34(u8 taskId) +{ + if (!RunTextPrintersAndIsPrinter0Active()) + { + DestroyTask(taskId); + if (gSpecialVar_0x8005) + sub_81A172C(EnableBothScriptContexts); + else + EnableBothScriptContexts(); + } +} + +void sub_81A0A70(void) +{ + const u8 *string; + + if (gSpecialVar_0x8006 == 6) + { + string = gUnknown_08610FF0[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 7) + { + string = gUnknown_08610FF0[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 8) + { + string = gUnknown_086111B0[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 9) + { + string = gUnknown_086111B0[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 4) + { + string = gUnknown_08611230[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 5) + { + string = gUnknown_08611230[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 10) + { + string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 11) + { + string = gUnknown_086112B0[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 12) + { + string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][3]; + } + else if (gSpecialVar_0x8006 == 13) + { + string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 16) + { + string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][4]; + } + else if (gSpecialVar_0x8006 == 14) + { + string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][2]; + } + else if (gSpecialVar_0x8006 == 15) + { + string = gUnknown_086112B0[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 0) + { + string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][0]; + } + else if (gSpecialVar_0x8006 == 1) + { + string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][1]; + } + else if (gSpecialVar_0x8006 == 2) + { + string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][2]; + } + else if (gSpecialVar_0x8006 == 3) + { + string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][3]; + } + else + { + EnableBothScriptContexts(); + return; + } + + StringExpandPlaceholders(gStringVar4, string); + AddTextPrinterForMessage(TRUE); + CreateTask(sub_81A0A34, 1); +} + +void sub_81A0C9C(void) +{ + ScriptContext2_Enable(); + FreezeEventObjects(); + sub_808B864(); + sub_808BCF4(); + NewMenuHelpers_DrawDialogueFrame(0, 1); + sub_81A0A70(); +} + +void sub_81A0CC0(void) +{ + if (gSaveBlock2Ptr->field_B1_1 < 3) + { + gSpecialVar_Result = 2; + } + else if (gSaveBlock2Ptr->field_B1_1 > 11) + { + gSpecialVar_Result = 5; + } + else + { + s32 id = gSaveBlock2Ptr->field_B1_1 - 3; + switch (gSaveBlock2Ptr->field_B8[id].unk0_0) + { + case 1: + gSpecialVar_Result = 4; + break; + case 2: + gSpecialVar_Result = 3; + break; + case 3: + gSpecialVar_Result = 1; + break; + default: + gSpecialVar_Result = 5; + break; + } + } +} + +void sub_81A0D40(void) +{ + if (gSpecialVar_0x8005) + { + u8 bitNo = gSpecialVar_0x8006; + gSaveBlock2Ptr->field_B2_0 |= 1 << bitNo; + } +} + +void sub_81A0D80(void) +{ + if (gSaveBlock2Ptr->field_B1_1 >= 3) + { + u8 id = gSaveBlock2Ptr->field_B1_1 - 3; + if (gSpecialVar_0x8005) + gSaveBlock2Ptr->field_B8[id].unk0_3 = 1; + else + gSaveBlock2Ptr->field_B8[id].unk0_3 = 0; + } +} + +void sub_81A0DD4(void) +{ + u8 i; + u8 count = 0; + u8 id1, id2; + + for (i = 0; i < 9 && gSaveBlock2Ptr->field_B8[i].unk0_0; count++, i++) + ; + + gUnknown_030062F0 = AllocZeroed(sizeof(*gUnknown_030062F0)); + if (gSpecialVar_0x8005 == 2) + { + if (gSaveBlock2Ptr->field_B1_1 < 3) + { + id1 = gSaveBlock2Ptr->field_B4[gSaveBlock2Ptr->field_B1_1] >> 4; + gUnknown_030062F0->unk2 = gApprentices[gSaveBlock2Ptr->field_B0].species[id1]; + + id2 = gSaveBlock2Ptr->field_B4[gSaveBlock2Ptr->field_B1_1] & 0xF; + gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id2]; + } + } + else if (gSpecialVar_0x8005 == 3) + { + if (gSaveBlock2Ptr->field_B1_1 >= 3 + && gSaveBlock2Ptr->field_B1_1 < count + 3 + && gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_0 == 2) + { + count = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_1; + APPRENTICE_SPECIES_ID_2(id1, count); + gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id1]; + gUnknown_030062F0->unk4 = sub_81A0284(count, id1, gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_2); + gUnknown_030062F0->unk6 = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2; + } + } + else if (gSpecialVar_0x8005 == 4) + { + if (gSaveBlock2Ptr->field_B1_1 >= 3 + && gSaveBlock2Ptr->field_B1_1 < count + 3 + && gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_0 == 1) + { + count = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_1; + APPRENTICE_SPECIES_ID_2(id2, count); + gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id2]; + } + } +} + +void sub_81A0FE4(void) +{ + FREE_AND_SET_NULL(gUnknown_030062F0); } diff --git a/src/easy_chat.c b/src/easy_chat.c index fbf4c0e70..50ed0a649 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -352,7 +352,7 @@ void easy_chat_input_maybe(void) words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014; break; case 19: - words = (u16 *)&gSaveBlock2Ptr->field_DC[0].field_0[0x28]; + words = gSaveBlock2Ptr->field_DC[0].easyChatWords; break; case 20: words = sub_801B058(); From b4a42a6832e851f457636da61fceb530b77962f9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 11:37:44 +0200 Subject: [PATCH 04/10] Decompile apprentice --- asm/battle_frontier_2.s | 935 ------ asm/battle_tower.s | 2 +- data/event_scripts.s | 2979 +---------------- .../events.inc | 2 +- data/scripts/apprentice.inc | 2978 ++++++++++++++++ include/apprentice.h | 4 +- include/constants/apprentice.h | 11 + include/item_menu.h | 1 + src/apprentice.c | 528 ++- src/pokemon.c | 3 +- 10 files changed, 3497 insertions(+), 3946 deletions(-) create mode 100644 data/scripts/apprentice.inc create mode 100644 include/constants/apprentice.h diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 982a7f4e7..f8334b5a5 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -6,941 +6,6 @@ .text - thumb_func_start sub_81A0FFC -sub_81A0FFC: @ 81A0FFC - push {r4-r6,lr} - sub sp, 0x10 - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0x1 - beq _081A1028 - cmp r0, 0x1 - bgt _081A1018 - cmp r0, 0 - beq _081A101E - b _081A11E6 - .pool -_081A1018: - cmp r0, 0x2 - beq _081A1030 - b _081A11E6 -_081A101E: - ldr r5, =gStringVar1 - b _081A1032 - .pool -_081A1028: - ldr r5, =gStringVar2 - b _081A1032 - .pool -_081A1030: - ldr r5, =gStringVar3 -_081A1032: - ldr r0, =gSpecialVar_0x8006 - ldrh r0, [r0] - cmp r0, 0x9 - bls _081A103C - b _081A11E6 -_081A103C: - lsls r0, 2 - ldr r1, =_081A1054 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A1054: - .4byte _081A107C - .4byte _081A1094 - .4byte _081A10AC - .4byte _081A10C4 - .4byte _081A10DC - .4byte _081A10F4 - .4byte _081A1118 - .4byte _081A1164 - .4byte _081A1140 - .4byte _081A1184 -_081A107C: - ldr r0, =gUnknown_030062F0 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - b _081A1174 - .pool -_081A1094: - ldr r0, =gUnknown_030062F0 - ldr r0, [r0] - ldrh r1, [r0, 0x2] - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - b _081A1174 - .pool -_081A10AC: - ldr r0, =gUnknown_030062F0 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - b _081A1174 - .pool -_081A10C4: - ldr r0, =gUnknown_030062F0 - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - b _081A1174 - .pool -_081A10DC: - ldr r0, =gUnknown_030062F0 - ldr r0, [r0] - ldrh r1, [r0, 0x6] - movs r0, 0xD - muls r1, r0 - ldr r0, =gMoveNames - adds r1, r0 - b _081A1174 - .pool -_081A10F4: - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r1, r0 - adds r1, 0xBA - ldrh r0, [r1] - bl ItemId_GetName - adds r1, r0, 0 - b _081A1174 - .pool -_081A1118: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r0, [r0] - movs r1, 0x2 - bl sub_81A1650 - adds r1, r0, 0 - mov r0, sp - movs r2, 0x2 - bl TVShowConvertInternationalString - adds r0, r5, 0 - mov r1, sp - bl StringCopy - b _081A11E6 - .pool -_081A1140: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB1 - ldrb r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081A115C - ldr r1, =gText_Lv50 - b _081A1174 - .pool -_081A115C: - ldr r1, =gText_OpenLevel - b _081A1174 - .pool -_081A1164: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - movs r1, 0x82 - lsls r1, 1 - adds r0, r1 - bl ConvertBattleFrontierTrainerSpeechToString - ldr r1, =gStringVar4 -_081A1174: - adds r0, r5, 0 - bl StringCopy - b _081A11E6 - .pool -_081A1184: - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0xB1 - ldrb r1, [r1] - lsls r4, r1, 24 - lsrs r1, r4, 30 - adds r6, r0, 0 - cmp r1, 0x2 - bhi _081A11C0 - adds r0, r3, 0 - adds r0, 0xB4 - adds r0, r1 - ldrb r2, [r0] - adds r0, r3, 0 - adds r0, 0xB2 - ldrb r0, [r0] - lsls r0, 29 - lsrs r0, 29 - asrs r0, r1 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - asrs r2, r0 - movs r0, 0xF - ands r2, r0 - b _081A11C2 - .pool -_081A11C0: - movs r2, 0 -_081A11C2: - ldr r3, =gApprentices - lsls r1, r2, 1 - ldr r0, [r6] - adds r0, 0xB0 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0 - adds r3, 0x34 - adds r1, r3 - ldrh r1, [r1] - movs r0, 0xB - muls r1, r0 - ldr r0, =gSpeciesNames - adds r1, r0 - adds r0, r5, 0 - bl StringCopy -_081A11E6: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A0FFC - - thumb_func_start sub_81A11F8 -sub_81A11F8: @ 81A11F8 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldr r0, =gSpecialVar_0x8005 - ldrb r1, [r0] - adds r2, 0xB1 - lsls r1, 6 - ldrb r3, [r2] - movs r0, 0x3F - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - bx lr - .pool - thumb_func_end sub_81A11F8 - - thumb_func_start sub_81A1218 -sub_81A1218: @ 81A1218 - push {lr} - bl sub_81AAC28 - pop {r0} - bx r0 - thumb_func_end sub_81A1218 - - thumb_func_start sub_81A1224 -sub_81A1224: @ 81A1224 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r1, =gSaveBlock2Ptr - ldr r3, [r1] - adds r0, r3, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - adds r7, r1, 0 - cmp r0, 0x2 - bhi _081A1242 - b _081A1362 -_081A1242: - movs r5, 0 - movs r2, 0 - adds r0, r3, 0 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - ldr r1, =gSpecialVar_0x8005 - mov r12, r1 - ldr r1, =gSpecialVar_Result - mov r8, r1 - cmp r0, 0 - beq _081A127C - adds r3, r7, 0 -_081A125C: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x8 - bhi _081A127C - ldr r0, [r3] - lsls r1, r2, 2 - adds r0, r1 - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bne _081A125C -_081A127C: - movs r4, 0 - cmp r4, r5 - bcs _081A1322 - ldr r0, [r7] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - cmp r4, r0 - bge _081A1322 - adds r6, r7, 0 - mov r9, r4 -_081A1296: - ldr r3, [r6] - lsls r0, r4, 2 - adds r2, r3, r0 - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _081A1308 - lsrs r0, r1, 6 - cmp r0, 0 - beq _081A1308 - adds r0, r2, 0 - adds r0, 0xBA - ldrh r0, [r0] - mov r2, r12 - ldrh r2, [r2] - cmp r0, r2 - bne _081A1308 - adds r0, r3, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r0, r3, r0 - adds r0, 0xB8 - ldrb r2, [r0] - movs r1, 0x3F - ands r1, r2 - strb r1, [r0] - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r1, r0 - mov r2, r12 - ldrh r0, [r2] - adds r1, 0xBA - strh r0, [r1] - mov r1, r9 - mov r0, r8 - strh r1, [r0] - b _081A1362 - .pool -_081A1308: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcs _081A1322 - ldr r0, [r6] - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - cmp r4, r0 - blt _081A1296 -_081A1322: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r2, r0 - adds r2, 0xB8 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xB1 - ldrb r0, [r0] - lsls r0, 26 - lsrs r0, 28 - subs r0, 0x3 - lsls r0, 2 - adds r1, r0 - mov r2, r12 - ldrh r0, [r2] - adds r1, 0xBA - strh r0, [r1] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1] -_081A1362: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81A1224 - - thumb_func_start sub_81A1370 -sub_81A1370: @ 81A1370 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - movs r2, 0x8A - lsls r2, 1 - adds r1, r2 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0xFF - beq _081A1422 - movs r5, 0 -_081A138E: - ldr r1, [r4] - adds r2, r5, 0x1 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r3, r1, r0 - movs r5, 0x8A - lsls r5, 1 - adds r0, r3, r5 - ldrb r0, [r0] - cmp r0, 0xFF - bne _081A13B8 - adds r0, r3, 0 - adds r0, 0xDC - adds r1, 0xDC - movs r2, 0x44 - bl memcpy - b _081A1422 - .pool -_081A13B8: - adds r5, r2, 0 - cmp r5, 0x2 - ble _081A138E - ldr r0, =0x0000ffff - mov r10, r0 - movs r2, 0x1 - negs r2, r2 - mov r9, r2 - movs r5, 0x1 - ldr r7, =gSaveBlock2Ptr - movs r0, 0x90 - lsls r0, 1 - mov r8, r0 - movs r6, 0x44 -_081A13D4: - ldr r0, [r7] - add r0, r8 - adds r0, 0x34 - bl ReadUnalignedWord - adds r4, r0, 0 - ldr r0, [r7] - adds r0, 0xA - bl ReadUnalignedWord - cmp r4, r0 - bne _081A13FC - ldr r0, [r7] - adds r0, r6 - adds r0, 0xDE - ldrb r0, [r0] - cmp r0, r10 - bge _081A13FC - mov r10, r0 - mov r9, r5 -_081A13FC: - movs r2, 0x44 - add r8, r2 - adds r6, 0x44 - adds r5, 0x1 - cmp r5, 0x3 - ble _081A13D4 - mov r5, r9 - cmp r5, 0 - ble _081A1422 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - lsls r0, r5, 4 - add r0, r9 - lsls r0, 2 - adds r0, r1, r0 - adds r0, 0xDC - adds r1, 0xDC - bl memcpy -_081A1422: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1370 - - thumb_func_start sub_81A1438 -sub_81A1438: @ 81A1438 - push {r4,r5,lr} - ldr r4, =gSaveBlock2Ptr - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - adds r2, 0xDC - movs r1, 0x1F - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x20 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xB1 - ldrb r1, [r0] - lsls r1, 30 - adds r2, 0xDC - lsrs r1, 25 - ldrb r3, [r2] - movs r0, 0x61 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - movs r2, 0 - ldr r0, [r4] - b _081A148C - .pool -_081A147C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x8 - bhi _081A1496 - ldr r0, [r4] - lsls r1, r2, 2 - adds r0, r1 -_081A148C: - adds r0, 0xB8 - ldrb r0, [r0] - lsls r0, 30 - cmp r0, 0 - bne _081A147C -_081A1496: - ldr r4, =gSaveBlock2Ptr - ldr r0, [r4] - adds r0, 0xDD - strb r2, [r0] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0xDE - ldrb r0, [r1] - cmp r0, 0xFE - bhi _081A14AE - adds r0, 0x1 - strb r0, [r1] -_081A14AE: - ldr r0, [r4] - adds r0, 0xDD - ldrb r0, [r0] - bl sub_81A0390 - movs r2, 0 - adds r3, r4, 0 - movs r4, 0x88 - lsls r4, 1 - adds r5, r3, 0 -_081A14C2: - ldr r0, [r3] - adds r1, r0, r4 - adds r1, r2 - adds r0, 0xA - adds r0, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _081A14C2 - ldr r1, [r5] - movs r2, 0x8A - lsls r2, 1 - adds r0, r1, r2 - bl StringCopy - ldr r1, [r5] - ldr r0, =gGameLanguage - ldrb r0, [r0] - ldr r2, =0x0000011b - adds r1, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0xDC - bl sub_8165AE8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1438 - - thumb_func_start sub_81A150C -sub_81A150C: @ 81A150C - push {lr} - ldr r2, =gApprentices - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xDC - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 27 - movs r1, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x32 - ldrb r2, [r0] - movs r1, 0 - ldr r3, =gUnknown_085DCEDC - ldrb r0, [r3] - cmp r0, r2 - beq _081A1542 -_081A1530: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1D - bhi _081A1542 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081A1530 -_081A1542: - cmp r1, 0x1E - beq _081A1568 - ldr r0, =gUnknown_085DCF0E - adds r0, r1, r0 - ldrb r1, [r0] - ldr r0, =0x00004010 - bl VarSet - b _081A1594 - .pool -_081A1568: - movs r1, 0 - ldr r3, =gUnknown_085DCEFA - ldrb r0, [r3] - cmp r0, r2 - beq _081A1584 -_081A1572: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x13 - bhi _081A1584 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081A1572 -_081A1584: - cmp r1, 0x14 - beq _081A1594 - ldr r0, =gUnknown_085DCF2C - adds r0, r1, r0 - ldrb r1, [r0] - ldr r0, =0x00004010 - bl VarSet -_081A1594: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A150C - - thumb_func_start sub_81A15A4 -sub_81A15A4: @ 81A15A4 - push {lr} - ldr r2, =gApprentices - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - adds r0, 0xB0 - ldrb r1, [r0] - movs r0, 0x58 - muls r0, r1 - adds r0, r2 - adds r0, 0x32 - ldrb r2, [r0] - movs r1, 0 - ldr r3, =gUnknown_085DCEDC - ldrb r0, [r3] - cmp r0, r2 - beq _081A15D6 -_081A15C4: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1D - bhi _081A15D6 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081A15C4 -_081A15D6: - cmp r1, 0x1E - beq _081A15FC - ldr r0, =gUnknown_085DCF0E - adds r0, r1, r0 - ldrb r1, [r0] - ldr r0, =0x00004010 - bl VarSet - b _081A1628 - .pool -_081A15FC: - movs r1, 0 - ldr r3, =gUnknown_085DCEFA - ldrb r0, [r3] - cmp r0, r2 - beq _081A1618 -_081A1606: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x13 - bhi _081A1618 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081A1606 -_081A1618: - cmp r1, 0x14 - beq _081A1628 - ldr r0, =gUnknown_085DCF2C - adds r0, r1, r0 - ldrb r1, [r0] - ldr r0, =0x00004010 - bl VarSet -_081A1628: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A15A4 - - thumb_func_start sub_81A1638 -sub_81A1638: @ 81A1638 - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_81A1638 - - thumb_func_start sub_81A1644 -sub_81A1644: @ 81A1644 - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_81A1644 - - thumb_func_start sub_81A1650 -sub_81A1650: @ 81A1650 - push {lr} - movs r2, 0x58 - muls r2, r0 - ldr r0, =gApprentices - adds r2, r0 - subs r0, r1, 0x1 - cmp r0, 0x6 - bhi _081A16AC - lsls r0, 2 - ldr r1, =_081A1674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A1674: - .4byte _081A1690 - .4byte _081A1694 - .4byte _081A169A - .4byte _081A16A0 - .4byte _081A16A6 - .4byte _081A16AC - .4byte _081A16AC -_081A1690: - adds r0, r2, 0 - b _081A16B0 -_081A1694: - adds r0, r2, 0 - adds r0, 0x8 - b _081A16B0 -_081A169A: - adds r0, r2, 0 - adds r0, 0x10 - b _081A16B0 -_081A16A0: - adds r0, r2, 0 - adds r0, 0x18 - b _081A16B0 -_081A16A6: - adds r0, r2, 0 - adds r0, 0x20 - b _081A16B0 -_081A16AC: - adds r0, r2, 0 - adds r0, 0x28 -_081A16B0: - pop {r1} - bx r1 - thumb_func_end sub_81A1650 - - thumb_func_start sub_81A16B4 -sub_81A16B4: @ 81A16B4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081A16CE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081A16D4 -_081A16CE: - adds r0, r2, 0 - bl SwitchTaskToFollowupFunc -_081A16D4: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A16B4 - - thumb_func_start sub_81A16DC -sub_81A16DC: @ 81A16DC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081A16F6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081A1718 -_081A16F6: - ldr r2, =gUnknown_030062F4 - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - movs r3, 0xA - ldrsh r0, [r0, r3] - lsls r0, 16 - orrs r1, r0 - str r1, [r2] - bl _call_via_r1 - adds r0, r4, 0 - bl DestroyTask -_081A1718: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A16DC - - thumb_func_start sub_81A172C -sub_81A172C: @ 81A172C - push {r4,lr} - adds r4, r0, 0 - ldr r0, =sub_81A16DC - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - lsrs r4, 16 - strh r4, [r1, 0xA] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A172C - - thumb_func_start sub_81A175C -sub_81A175C: @ 81A175C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, =sub_81A16B4 - adds r0, r4, 0 - movs r1, 0x1 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r2, r5, 0 - bl SetTaskFuncWithFollowupFunc - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A175C - thumb_func_start sub_81A1780 sub_81A1780: @ 81A1780 push {lr} diff --git a/asm/battle_tower.s b/asm/battle_tower.s index e017e3b83..aa6e3d779 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -1578,7 +1578,7 @@ _08162F24: _08162F3E: adds r0, r5, 0 adds r1, r4, 0 - bl sub_81A1650 + bl GetApprenticeNameInLanguage adds r1, r0, 0 adds r0, r6, 0 adds r2, r4, 0 diff --git a/data/event_scripts.s b/data/event_scripts.s index 56658a994..dc308f8b1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -9853,2983 +9853,8 @@ gText_MrStone_Pokenav_2B67ED:: @ 82B67ED .string "Hm! You must come visit us at DEVON\n" .string "sometime!$" -BattleFrontier_BattleTowerLobby_EventScript_2B688D:: @ 82B688D - lock - faceplayer - setvar VAR_0x8004, 0 - special sub_81A085C - compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6900 - setvar VAR_0x8004, 10 - special sub_81A085C - compare VAR_0x8004, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B68BE - checkflag FLAG_0x934 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6E90 - -BattleFrontier_BattleTowerLobby_EventScript_2B68BE:: @ 82B68BE - setvar VAR_0x8004, 11 - special sub_81A085C - compare VAR_RESULT, 2 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69D3 - compare VAR_RESULT, 4 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6ACF - compare VAR_RESULT, 3 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C77 - compare VAR_RESULT, 1 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6D5C - compare VAR_RESULT, 5 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6DD4 - release - releaseall - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6900:: @ 82B6900 - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 6 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 0 - special sub_81A085C - waitstate - -BattleFrontier_BattleTowerLobby_EventScript_2B6925:: @ 82B6925 - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 6 - special sub_81A085C - waitstate - compare VAR_RESULT, 1 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69BB - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 0 - special sub_81A085C - waitstate - setvar VAR_0x8004, 1 - setorcopyvar VAR_0x8005, VAR_RESULT - addvar VAR_0x8005, 1 - special sub_81A085C - setvar VAR_0x8004, 3 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 8 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 3 - special sub_81A085C - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B69BB:: @ 82B69BB - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 1 - special sub_81A085C - waitstate - goto BattleFrontier_BattleTowerLobby_EventScript_2B6925 - -BattleFrontier_BattleTowerLobby_EventScript_2B69D3:: @ 82B69D3 - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 2 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 0 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 1 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 6 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 2 - special sub_81A085C - waitstate - copyvar VAR_0x8005, VAR_RESULT - compare VAR_0x8005, 0 - call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6ABA - compare VAR_0x8005, 1 - call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC0 - setvar VAR_0x8004, 12 - special sub_81A085C - copyvar VAR_0x8006, VAR_RESULT - setvar VAR_0x8004, 13 - special sub_81A085C - setvar VAR_0x8004, 5 - special sub_81A085C - setvar VAR_0x8004, 12 - special sub_81A085C - compare VAR_RESULT, 3 - call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC6 - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - copyvar VAR_0x8006, VAR_0x8007 - special sub_81A085C - setvar VAR_0x8004, 15 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 7 - special sub_81A085C - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6ABA:: @ 82B6ABA - setvar VAR_0x8007, 0 - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6AC0:: @ 82B6AC0 - setvar VAR_0x8007, 1 - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6AC6:: @ 82B6AC6 - setvar VAR_0x8004, 4 - special sub_81A085C - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6ACF:: @ 82B6ACF - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 4 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 10 - special sub_81A085C - waitstate - setvar VAR_0x8004, 15 - special sub_81A085C - -BattleFrontier_BattleTowerLobby_EventScript_2B6B09:: @ 82B6B09 - fadescreen 1 - setvar VAR_RESULT, 0 - setvar VAR_0x8004, 19 - special sub_81A085C - waitstate - compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B81 - setvar VAR_0x8004, 20 - special sub_81A085C - compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C0C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 5 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 12 - special sub_81A085C - waitstate - setvar VAR_0x8004, 5 - special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6B81:: @ 82B6B81 - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 4 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 13 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 4 - special sub_81A085C - waitstate - setvar VAR_0x8004, 15 - special sub_81A085C - compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 - -BattleFrontier_BattleTowerLobby_EventScript_2B6BD4:: @ 82B6BD4 - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 14 - special sub_81A085C - waitstate - setvar VAR_0x8004, 5 - special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6C0C:: @ 82B6C0C - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 4 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 5 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 16 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 4 - special sub_81A085C - waitstate - setvar VAR_0x8004, 15 - special sub_81A085C - compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6BD4 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6C77:: @ 82B6C77 - setvar VAR_0x8004, 14 - setvar VAR_0x8005, 3 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 3 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 2 - setvar VAR_0x8006, 4 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 8 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 3 - special sub_81A085C - waitstate - copyvar VAR_0x8005, VAR_RESULT - compare VAR_0x8005, 0 - call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D50 - compare VAR_0x8005, 1 - call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D56 - setvar VAR_0x8004, 17 - special sub_81A085C - setvar VAR_0x8004, 5 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - copyvar VAR_0x8006, VAR_0x8007 - special sub_81A085C - setvar VAR_0x8004, 15 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 9 - special sub_81A085C - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6D50:: @ 82B6D50 - setvar VAR_0x8007, 3 - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6D56:: @ 82B6D56 - setvar VAR_0x8007, 4 - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6D5C:: @ 82B6D5C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 4 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, 1 - special sub_81A085C - waitstate - copyvar VAR_0x8005, VAR_RESULT - setvar VAR_0x8004, 18 - special sub_81A085C - setvar VAR_0x8004, 5 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 9 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 5 - special sub_81A085C - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6DD4:: @ 82B6DD4 - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 11 - special sub_81A085C - waitstate - setvar VAR_0x8004, 25 - special sub_81A085C - setvar VAR_0x8004, 19 - call BattleFrontier_BattleTowerLobby_EventScript_271E7C - lock - faceplayer - setvar VAR_0x8004, 21 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 7 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 15 - special sub_81A085C - waitstate - setvar VAR_0x8004, 9 - special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D - release - releaseall - switch VAR_FACING - case 2, BattleFrontier_BattleTowerLobby_EventScript_2B6E54 - goto BattleFrontier_BattleTowerLobby_EventScript_2B6E72 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6E4D:: @ 82B6E4D - setflag FLAG_0x2BD - setflag FLAG_0x934 - return - -BattleFrontier_BattleTowerLobby_EventScript_2B6E54:: @ 82B6E54 - setvar VAR_0x8004, 24 - special sub_81A085C - compare VAR_0x8004, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6E93 - applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E94 - waitmovement 0 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6E72:: @ 82B6E72 - setvar VAR_0x8004, 24 - special sub_81A085C - compare VAR_0x8004, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6E93 - applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E95 - waitmovement 0 - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6E90:: @ 82B6E90 - release - releaseall - end - -BattleFrontier_BattleTowerLobby_EventScript_2B6E93:: @ 82B6E93 - end - -BattleFrontier_BattleTowerLobby_Movement_2B6E94: @ 82B6E94 - walk_fast_right - -BattleFrontier_BattleTowerLobby_Movement_2B6E95: @ 82B6E95 - walk_fast_down - walk_fast_down - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - walk_fast_right - set_invisible - slide_down - slide_down - slide_down - step_end - -gText_082B6EA5:: @ 82B6EA5 - .string "Um, I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" - .string "Snivel… This tension is getting to me…$" - -gText_082B6EEC:: @ 82B6EEC - .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" - .string "Here we come!$" - -gText_082B6F16:: @ 82B6F16 - .string "I’m the no. {STR_VAR_2} apprentice of {STR_VAR_1}!\n" - .string "Accept my challenge!$" - -gText_082B6F4C:: @ 82B6F4C - .string "Um… I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice…\n" - .string "Do you think someone like me can win?$" - -gText_082B6F92:: @ 82B6F92 - .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" - .string "I’ll let you challenge me!$" - -gText_082B6FC9:: @ 82B6FC9 - .string "I’m horribly busy, but I also happen\n" - .string "to be {STR_VAR_1}’s no. {STR_VAR_2} apprentice.$" - -gText_082B700C:: @ 82B700C - .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" - .string "Glad to meet you!$" - -gText_082B703A:: @ 82B703A - .string "I serve as {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" - .string "May I begin?$" - -gText_082B706A:: @ 82B706A - .string "Eek! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" - .string "I’ll do my best!$" - -gText_082B709C:: @ 82B709C - .string "Yeehaw! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" - .string "Put ’em up!$" - -gText_082B70CC:: @ 82B70CC - .string "I’m {STR_VAR_1}’s 1,000th apprentice!\n" - .string "Actually, I’m no. {STR_VAR_2}! Here goes!$" - -gText_082B710A:: @ 82B710A - .string "Yeah, I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" - .string "Let’s get rockin’ and a-rollin’!$" - -gText_082B714D:: @ 82B714D - .string "Yippee-yahoo! I’m what you call\n" - .string "{STR_VAR_1}’s no. {STR_VAR_2} apprentice!$" - -gText_082B7185:: @ 82B7185 - .string "Cough! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" - .string "Good to meet you! Cough!$" - -gText_082B71C1:: @ 82B71C1 - .string "This is nerve-racking…\n" - .string "I’m the no. {STR_VAR_2} apprentice of {STR_VAR_1}.$" - -gText_082B71F9:: @ 82B71F9 - .string "I am {STR_VAR_1}’s no. {STR_VAR_2} apprentice,\n" - .string "and that’s no lie.$" - -gText_082B7229:: @ 82B7229 - .string "Are you… {PLAYER}?\n" - .string "Oh! Sniff…sob…\p" - .string "Oh! S-sorry…\n" - .string "I’m so nervous, I can’t help crying…\p" - .string "I’m {STR_VAR_1}, and I really look up\n" - .string "to you, {PLAYER}.\p" - .string "I… I had this dream of one day meeting\n" - .string "you and asking you about POKéMON.\p" - .string "Please, please, {PLAYER}!\n" - .string "Please teach me about POKéMON!$" - -gText_082B731C:: @ 82B731C - .string "Oh… B-but…\n" - .string "Snivel… Waaaaaaah!\p" - .string "Please!\n" - .string "I’m begging you, please!$" - -gText_082B735B:: @ 82B735B - .string "Oh, really? You will?\n" - .string "Awesome! Wicked! Awoooh!\p" - .string "Oh… I’m sorry…\n" - .string "I’m so happy, I’m crying…\p" - .string "Um… Then please tell me!\n" - .string "It’s about the BATTLE TOWER.\p" - .string "Which would be better for me: Level 50\n" - .string "or the Open Level?$" - -gText_082B7423:: @ 82B7423 - .string "{STR_VAR_1}?\n" - .string "Waaaaah!\p" - .string "Oh! I’m so sorry!\n" - .string "You’ve made me happy by choosing\l" - .string "the level for me, and it’s made me cry…\p" - .string "Snivel…\n" - .string "Thank you so much!\l" - .string "Please talk with me again!$" - -gText_082B74C1:: @ 82B74C1 - .string "Wowee! You’re {PLAYER}, aren’t you?\n" - .string "You’re awesomely strong, aren’t you?\p" - .string "I’m {STR_VAR_1}!\n" - .string "I just became a TRAINER!\p" - .string "Please, {PLAYER}!\n" - .string "Can you be my teacher and tell me\l" - .string "lots about being a TRAINER?$" - -gText_082B756F:: @ 82B756F - .string "Aww, why?\n" - .string "Oh, please? Pretty please?\l" - .string "Please be my teacher, please!$" - -gText_082B75B2:: @ 82B75B2 - .string "Yay! Great!\p" - .string "The first thing I wanted to ask you is\n" - .string "about the BATTLE TOWER!\p" - .string "The Level 50 and Open Level Rooms…\n" - .string "Which would be perfect for me?$" - -gText_082B763F:: @ 82B763F - .string "{STR_VAR_1}, huh? That’s true!\n" - .string "I’ll do my best there!\p" - .string "If we meet here again, please teach\n" - .string "me something else, teacher!$" - -gText_082B76AC:: @ 82B76AC - .string "Um… Are you {PLAYER}?\n" - .string "My name is {STR_VAR_1}.\p" - .string "I want to become a POKéMON TRAINER,\n" - .string "but I don’t know what to do…\p" - .string "So I thought maybe I could ask you for\n" - .string "advice because you’re so famous.\p" - .string "{PLAYER}, could you give me advice?$" - -gText_082B7772:: @ 82B7772 - .string "Oh, but…\p" - .string "I sincerely want to become a POKéMON\n" - .string "TRAINER!\p" - .string "Please, can you answer my questions?$" - -gText_082B77CE:: @ 82B77CE - .string "Thank you!\n" - .string "Here’s my first question right away!\p" - .string "The BATTLE TOWER has two levels,\n" - .string "Level 50 and Open Level, right?\p" - .string "Which level do you think is more\n" - .string "suitable for me?$" - -gText_082B7871:: @ 82B7871 - .string "Oh, the {STR_VAR_1} challenge?\n" - .string "Understood!\p" - .string "If I have another question, I’ll come\n" - .string "back here for your advice!$" - -gText_082B78D4:: @ 82B78D4 - .string "Oh? Huh? You’re…\n" - .string "No, that can’t be true.\p" - .string "There isn’t any way that someone\n" - .string "like me could meet {PLAYER}.\p" - .string "…You really are {PLAYER}?\n" - .string "I can’t believe I’m talking to you!\p" - .string "When something this good happens,\n" - .string "only terrible things will happen to me\l" - .string "now, I just know it…\p" - .string "…I’m sorry…\n" - .string "I’m… {STR_VAR_1}…\p" - .string "There isn’t anything special about\n" - .string "me that I can be proud of…\p" - .string "I shouldn’t even say anything about\n" - .string "myself because you’ll forget…\p" - .string "I had this dream that if I ever met\n" - .string "you, {PLAYER}, that maybe I could ask\l" - .string "you for advice as a TRAINER.\p" - .string "But I don’t think you would agree\n" - .string "to that.\p" - .string "…Or will you be so kind as to give\n" - .string "me advice?$" - -gText_082B7B1A:: @ 82B7B1A - .string "I knew it…\p" - .string "It had to happen because I’m such\n" - .string "a really boring nobody…\p" - .string "But I thought just maybe…\n" - .string "You won’t reconsider, will you?\p" - .string "But I can’t give up just like that.\n" - .string "I’ll ask you while I’m still lucky!\p" - .string "Please, will you be so kind as to give\n" - .string "me advice?$" - -gText_082B7C13:: @ 82B7C13 - .string "Really? I can’t believe it!\n" - .string "I can’t believe you’ll advise me!\l" - .string "I… I’m so happy…\p" - .string "What I want to ask you is really\n" - .string "trivial, but I can’t decide…\p" - .string "At the BATTLE TOWER, they let you\n" - .string "choose Level 50 or Open Level.\p" - .string "Which course do you think even I may\n" - .string "have a chance at?$" - -gText_082B7D18:: @ 82B7D18 - .string "{STR_VAR_1}? Okay!\n" - .string "But do you really think someone like\l" - .string "me would have a chance?\p" - .string "I’ll do my best, even though I don’t\n" - .string "think it will work.\p" - .string "Thank you very much for spending\n" - .string "time with someone like me.$" - -gText_082B7DD4:: @ 82B7DD4 - .string "Oh! You’re {PLAYER}{STRING 5}, aren’t you?\p" - .string "I’ve heard that you’re tough at\n" - .string "POKéMON!\p" - .string "I’m {STR_VAR_1}!\n" - .string "I’ll be your friend!\p" - .string "Did you know?\p" - .string "You can’t win at the BATTLE FRONTIER\n" - .string "if all you know is what they teach at\l" - .string "the TRAINER’S SCHOOL.\p" - .string "I’m willing to listen to your advice.\n" - .string "You’ll agree, of course?$" - -gText_082B7EE5:: @ 82B7EE5 - .string "Huh? Why are you refusing me?\n" - .string "It’s me who’s asking you!\l" - .string "You have to reconsider!$" - -gText_082B7F35:: @ 82B7F35 - .string "Okay, so there is this something.\n" - .string "I want you to decide it for me.\p" - .string "You know that the BATTLE TOWER has\n" - .string "Level 50 and Open Level Rooms?\p" - .string "Which do you think would be good\n" - .string "for me, {PLAYER}{STRING 5}?$" - -gText_082B7FE8:: @ 82B7FE8 - .string "Okay, {STR_VAR_1} is suitable for me?\n" - .string "Thank you!\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082B8087:: @ 82B8087 - .string "Oh, hi, there! {PLAYER}{STRING 5}!\n" - .string "I know you because you’re famous!\l" - .string "Call me {STR_VAR_1}! Glad to meet you!\p" - .string "I’m a TRIATHLETE, so I keep myself\n" - .string "fit even while I raise POKéMON.\p" - .string "I’m also involved with other things\n" - .string "like work, napping, ballroom dancing…\p" - .string "Being this busy, it’s not so easy for\n" - .string "me to become a decent TRAINER.\p" - .string "So, I have a proposition!\p" - .string "There must be a reason why we met.\n" - .string "So, {PLAYER}{STRING 5}, how about sharing your\l" - .string "wisdom with me every so often?$" - -gText_082B822B:: @ 82B822B - .string "Oh, but, please?\n" - .string "A guy like me needs someone like\l" - .string "you, {PLAYER}{STRING 5}!\p" - .string "Honestly, I need your advice!$" - -gText_082B8286:: @ 82B8286 - .string "Thank you! That’s more like it!\n" - .string "So, let’s start with an easy one!\p" - .string "You know about the BATTLE TOWER’s\n" - .string "two courses, right?\l" - .string "You know, Level 50 and Open Level.\p" - .string "Me being a busy guy, which one should\n" - .string "I gear up for?$" - -gText_082B8356:: @ 82B8356 - .string "{STR_VAR_1}, huh? Okay, gotcha.\n" - .string "I’ll find time somehow and give it a go!\p" - .string "…Whoops, I’d better go to work!\n" - .string "Thanks! See you around!$" - -gText_082B83CE:: @ 82B83CE - .string "No way! Uh-uh!\n" - .string "Are you maybe the real {PLAYER}?\p" - .string "A-hah! Awesome! I’m {STR_VAR_1},\n" - .string "so pleased to meet you!\p" - .string "{PLAYER}, you’re very strong,\n" - .string "aren’t you?\p" - .string "Everyone’s talking about you!\p" - .string "Oh! I just had this great idea!\n" - .string "I’ll get advice off you, {PLAYER}!\l" - .string "I’m sure it will make me tougher!\p" - .string "Isn’t it a great idea?\n" - .string "Please, I want your advice!$" - -gText_082B84FC:: @ 82B84FC - .string "Ahahaha, you can pretend to be mean,\n" - .string "but you can’t fool me!\l" - .string "You really mean okay, don’t you?$" - -gText_082B8559:: @ 82B8559 - .string "Yay! I knew you’d have a big heart,\n" - .string "{PLAYER}!\p" - .string "What should I ask you first?\n" - .string "…Oh, I thought of something!\p" - .string "Drum roll, please!\n" - .string "The question I have is…\p" - .string "If I were to take a BATTLE TOWER\n" - .string "challenge, which way should I go?\p" - .string "Level 50 or Open Level?\n" - .string "Which suits me more?$" - -gText_082B8656:: @ 82B8656 - .string "Oh-oh-oh!\n" - .string "{STR_VAR_1}, you say!\l" - .string "Thank you for a totally cool reply!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082B86EA:: @ 82B86EA - .string "I beg your pardon, but…\n" - .string "Are you {PLAYER}?\p" - .string "I’m {STR_VAR_1}, and I am delighted to\n" - .string "make your acquaintance.\p" - .string "I have long been an admirer\n" - .string "of yours…\p" - .string "… … … … … …\p" - .string "Um… I hope you don’t find this\n" - .string "request too much of a burden, but…\p" - .string "May I become your apprentice,\n" - .string "{PLAYER}?$" - -gText_082B87DA:: @ 82B87DA - .string "Oh…!\p" - .string "… … … … … …\n" - .string "… … … … … …\p" - .string "…I must have fainted from shock.\n" - .string "I’m sorry, I must have misheard you.\p" - .string "Please! Please say that you will\n" - .string "accept me as your apprentice!$" - -gText_082B887C:: @ 82B887C - .string "Oh… I’m delighted!\p" - .string "I don’t wish to waste your time,\n" - .string "so please advise me on this.\p" - .string "I plan to take a BATTLE TOWER\n" - .string "challenge soon.\p" - .string "However, there are two levels…\p" - .string "Which would be most suitable for me?\n" - .string "Level 50 or Open Level?$" - -gText_082B8957:: @ 82B8957 - .string "{STR_VAR_1} is your choice!\n" - .string "I see. I will do my best!\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082B89C6:: @ 82B89C6 - .string "Eek! Eek! {PLAYER}!\n" - .string "You spoke to me!\l" - .string "I… I’m overjoyed!\p" - .string "Me! My name is {STR_VAR_1}!\n" - .string "I just became a TRAINER!\p" - .string "I’m delighted I met you, {PLAYER},\n" - .string "the big name in POKéMON circles!\p" - .string "Oh-oh-oh, I know!\n" - .string "May I ask a huge favor, {PLAYER}?\p" - .string "Please take me in as your apprentice!\n" - .string "I want to learn from you!$" - -gText_082B8ACF:: @ 82B8ACF - .string "Waaaah!\n" - .string "{PLAYER} turned me down…\l" - .string "It… It’s an invaluable experience!\p" - .string "{PLAYER}, please! I want to hear\n" - .string "an affirmative answer this time!\p" - .string "I beg you for your guidance!$" - -gText_082B8B66:: @ 82B8B66 - .string "Hieeeeh! {PLAYER} said yes!\n" - .string "{PLAYER} said yes!\p" - .string "I won’t be able to sleep tonight…\n" - .string "Thank you ever so much!\p" - .string "Then, here’s my question!\p" - .string "At the BATTLE TOWER, what is right\n" - .string "for me, Level 50 or Open Level?$" - -gText_082B8C20:: @ 82B8C20 - .string "{STR_VAR_1}! Perfectly understood!\n" - .string "I understand perfectly!\l" - .string "I’m deliriously delighted!\p" - .string "I hope you’ll be willing to teach me\n" - .string "some more another time.$" - -gText_082B8CAA:: @ 82B8CAA - .string "Whoa! Could you be…\n" - .string "Might you be… {PLAYER}{STRING 5}?!\l" - .string "That strong and famous TRAINER?\l" - .string "Well, hello, aren’t I just the luckiest!\p" - .string "Hello, the name’s {STR_VAR_1}!\p" - .string "I’ve been on the lookout for\n" - .string "a POKéMON teacher.\p" - .string "And with impeccably good timing,\n" - .string "along came you, {PLAYER}{STRING 5}!\p" - .string "So, there you have it, {PLAYER}{STRING 5}!\n" - .string "Let me apprentice under you!$" - -gText_082B8DD3:: @ 82B8DD3 - .string "Gwaaaah!\n" - .string "You’re quite cool and tough…\p" - .string "Don’t be that way, please.\n" - .string "I’m asking you!$" - -gText_082B8E24:: @ 82B8E24 - .string "Oh, yeah! That’s a solid reply!\n" - .string "Excellent, I might add!\p" - .string "So how about a first piece of advice\n" - .string "on the BATTLE TOWER?\p" - .string "If I were to go, what would be better?\n" - .string "Level 50 or Open Level?$" - -gText_082B8ED5:: @ 82B8ED5 - .string "Uh-huh, {STR_VAR_1} it is!\n" - .string "OK, A-OK!\l" - .string "I’ll go show my mettle, like, jam!\p" - .string "All right, I’ll look to you as my mentor!\n" - .string "Adios!$" - -gText_082B8F45:: @ 82B8F45 - .string "Oh, hey, {PLAYER}{STRING 5}, right?\n" - .string "The police were looking for you!\p" - .string "… … …\n" - .string "Of course I’m lying!\p" - .string "Me, I’m {STR_VAR_1}. Despite the way\n" - .string "I look, I’m the POKéMON CHAMPION!\l" - .string "…That’s a lie, too!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at battling.\p" - .string "So, how about you becoming my master\n" - .string "about all things POKéMON?$" - -gText_082B905F:: @ 82B905F - .string "If you’re going to act cold like that,\n" - .string "I’ll show you what I’ll do!\p" - .string "Waaah! Waaah! Waaah!\n" - .string "Hiccup!\p" - .string "Hahaha, that was my FAKE TEARS!\p" - .string "Come on, will you please be\n" - .string "my POKéMON master?$" - -gText_082B910E:: @ 82B910E - .string "Yippee!\n" - .string "I’ll buy you a boat for that!\p" - .string "Of course I’m lying again!\n" - .string "But… Thank you, master!\p" - .string "You know how there’s Level 50 and\n" - .string "Open Level at the BATTLE TOWER?\p" - .string "I’m having trouble deciding which\n" - .string "level I should challenge…\p" - .string "Can you decide for me, master?$" - -gText_082B9204:: @ 82B9204 - .string "Okay, so {STR_VAR_1} is better!\n" - .string "I’ll go to the other level, then!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082B929C:: @ 82B929C - .string "A-H-O-Y!\n" - .string "And that spells ahoy, and it means hi!\p" - .string "I’m {STR_VAR_1}, the rappin’ SAILOR\n" - .string "am I!\p" - .string "Your turn now, tell me a little about\n" - .string "yourself, give it a try!\p" - .string "Uh-huh, uh-huh!\n" - .string "{PLAYER}{STRING 5}’s your name,\l" - .string "and POKéMON’s your game!\p" - .string "And you’re at a delicate age\n" - .string "when all the world’s your stage!\p" - .string "Anyway, I just want to say,\n" - .string "that you’re the tenth TRAINER\l" - .string "I’ve spoken to today.\p" - .string "Let’s make that a celebration!\n" - .string "Become my mentor for commemoration!$" - -gText_082B9438:: @ 82B9438 - .string "But!\n" - .string "You have to work with me!\p" - .string "Don’t be such a tease!\n" - .string "Become my mentor, please!$" - -gText_082B9488:: @ 82B9488 - .string "That’s it!\n" - .string "{PLAYER}, you’ve got the spirit!\p" - .string "So here’s my first question\n" - .string "that begs your suggestion!\p" - .string "It’s about the BATTLE TOWER,\n" - .string "and it hinges on my power!\p" - .string "Level 50 and Open Level there be,\n" - .string "which is the one that’s good for me?$" - -gText_082B9564:: @ 82B9564 - .string "Okay, {STR_VAR_1} it is, you say!\n" - .string "I’ll go and take it on my way!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082B95D8:: @ 82B95D8 - .string "Say, hey, aren’t you {PLAYER}?\n" - .string "What should I do? Talk to you?\l" - .string "Why not? I’m already talking to you!\p" - .string "{PLAYER}, are you surprised at me?\n" - .string "I’d better tell you who I happen to be!\p" - .string "{STR_VAR_1} is what you can call me.\n" - .string "The brightest star in guitardom,\l" - .string "that’s me!\p" - .string "Are you receiving me?\n" - .string "You are receiving me!\p" - .string "My luck’s at its best,\n" - .string "I’ll hit you with a request!\p" - .string "{PLAYER}, let me be your underling!\n" - .string "I want you to teach me everything!$" - -gText_082B9763:: @ 82B9763 - .string "You’re turning me down, then?\n" - .string "I’ll just have to ask you again!\p" - .string "{PLAYER}, I beg to be your underling!\n" - .string "I need you to teach me everything!$" - -gText_082B97E5:: @ 82B97E5 - .string "Lucky, yeah, woohoo!\n" - .string "Should I pop a question to you?\p" - .string "Since we’re near the BATTLE TOWER,\n" - .string "how about a question about its power?\p" - .string "Of the choices you see,\n" - .string "which is the right one for me?$" - -gText_082B989A:: @ 82B989A - .string "If {STR_VAR_1} is what you suggest,\n" - .string "it must be the very best!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082B992D:: @ 82B992D - .string "Oh, hi! You there!\n" - .string "Can I get you to massage my shoulder?\p" - .string "…Yes, there! That’s it!\n" - .string "Ouch, ouch! Oooh, that feels great!\p" - .string "My name’s {STR_VAR_1}.\n" - .string "I take karate training, but my body’s\l" - .string "not built to take the abuse…\p" - .string "I decided I’ll battle POKéMON and\n" - .string "toughen myself up.\p" - .string "You’re {PLAYER}{STRING 5}, aren’t you?\n" - .string "The POKéMON LEAGUE CHAMP?\p" - .string "Listen, can I get you to give me\n" - .string "advice?$" - -gText_082B9A84:: @ 82B9A84 - .string "Oh, why?\p" - .string "I won’t be a big bother, I promise!\n" - .string "Please?$" - -gText_082B9AB9:: @ 82B9AB9 - .string "Thank you. Mighty good of you!\n" - .string "…Cough! Cough!\p" - .string "Oogh, I have to toughen up quick…\p" - .string "I’ll be heading off to the BATTLE TOWER\n" - .string "right away, but what would be better\l" - .string "for me? Level 50 or Open Level?$" - -gText_082B9B76:: @ 82B9B76 - .string "Hm, all right. That’s {STR_VAR_1}.\n" - .string "I’ll go there right away.\p" - .string "I hope I can keep hitting you up for\n" - .string "help--after all, you’re my mentor!$" - -gText_082B9BF2:: @ 82B9BF2 - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}…?\p" - .string "Please, don’t look at me that way.\n" - .string "You’re making me all self-conscious.\p" - .string "I… I’m {STR_VAR_1}.\p" - .string "I’m really embarrassed to say this,\n" - .string "but I explore ancient ruins and such.\p" - .string "I’m even more embarrassed to admit\n" - .string "I’m interested in the BATTLE FRONTIER.\p" - .string "{PLAYER}{STRING 5}, you have a reputation as\n" - .string "a tough TRAINER…\p" - .string "It’s hard for me to say this,\n" - .string "but I want to ask something.\p" - .string "Could you become my teacher and\n" - .string "give me advice?$" - -gText_082B9D83:: @ 82B9D83 - .string "Please don’t brush me off like this!\n" - .string "I can’t live with the humiliation.\p" - .string "Please become my teacher!\n" - .string "I need your advice!$" - -gText_082B9DF9:: @ 82B9DF9 - .string "Th-thank you…\p" - .string "But please don’t look at me like that.\n" - .string "It makes me all flustered.\p" - .string "Please, answer me without looking\n" - .string "at my eyes.\p" - .string "At the BATTLE TOWER…\n" - .string "Which level should I attempt?$" - -gText_082B9EAA:: @ 82B9EAA - .string "Oh… Okay!\n" - .string "I’ll try my hand at that.\p" - .string "I hope I can make a valiant challenge\n" - .string "without getting all flustered…\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082B9F55:: @ 82B9F55 - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really real?\p" - .string "You may call me {STR_VAR_1}.\p" - .string "I have been toying with the idea of\n" - .string "apprenticing under a strong TRAINER.\p" - .string "So, I must say I’m lucky you came along!\n" - .string "…You really are {PLAYER}{STRING 5}, yes?\p" - .string "No, no, if you are real, it’s fine.\n" - .string "I merely want you to recognize me\l" - .string "as your apprentice.$" - -gText_082BA084:: @ 82BA084 - .string "Oh?\n" - .string "But what would compel you to refuse?\p" - .string "I apologize for being skeptical about\n" - .string "your identity.\p" - .string "Please accept my apology and\n" - .string "accept me as your apprentice.$" - -gText_082BA11D:: @ 82BA11D - .string "You really are accepting me?\n" - .string "I don’t wish to celebrate prematurely.\p" - .string "If it is true, I apologize.\n" - .string "But now, I need your advice.\p" - .string "If I were to enter the BATTLE TOWER,\n" - .string "what would be worthy of me?\l" - .string "Level 50 or Open Level?$" - -gText_082BA1F3:: @ 82BA1F3 - .string "{STR_VAR_1}?\n" - .string "Are you certain?\p" - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I realize I can annoy, but it delights\n" - .string "me that you have accepted me.\p" - .string "Let us meet again!$" - -gText_082BA2A3:: @ 82BA2A3 - .string "Sigh… Sob…\n" - .string "Oh, {PLAYER}!\p" - .string "I’m all tangled up in a dilemma\n" - .string "that I can’t decide.\p" - .string "I can’t decide what I should make\n" - .string "my {STR_VAR_1} hold.\p" - .string "Please tell me, {PLAYER}.\n" - .string "What item should I make it hold?$" - -gText_082BA34E:: @ 82BA34E - .string "Oh, really? I shouldn’t make\n" - .string "my {STR_VAR_1} hold anything?$" - -gText_082BA380:: @ 82BA380 - .string "Oh, okay! I’m delighted it’s settled!\n" - .string "Awesome! Wicked! Awoooh!\p" - .string "Thank you so much!$" - -gText_082BA3D2:: @ 82BA3D2 - .string "Oh, I’m so glad…\n" - .string "I think I have that {STR_VAR_1}, too.\p" - .string "I’m delighted it’s settled!\n" - .string "Awesome! Wicked! Awoooh!\p" - .string "Thank you so much!$" - -gText_082BA448:: @ 82BA448 - .string "Waaaah! Please don’t be mean!\p" - .string "That item {STR_VAR_1} was already\n" - .string "recommended to me before, sob…\p" - .string "Or do you mean I shouldn’t make\n" - .string "my {STR_VAR_2} hold anything?$" - -gText_082BA4D3:: @ 82BA4D3 - .string "Yay! It’s {PLAYER}!\n" - .string "Great! I wanted to ask you something!\p" - .string "Do you make your POKéMON hold items?\n" - .string "I want to make mine hold items, but…\p" - .string "What item would be good for\n" - .string "{STR_VAR_1} to hold?\p" - .string "What do you think?$" - -gText_082BA58C:: @ 82BA58C - .string "Huh? You mean my {STR_VAR_1} doesn’t\n" - .string "have to hold anything?$" - -gText_082BA5BF:: @ 82BA5BF - .string "Oh, I get it! I’ll do that!\n" - .string "Thanks for teaching me!$" - -gText_082BA5F3:: @ 82BA5F3 - .string "Oh, wow! One {STR_VAR_1}, huh?\n" - .string "Okay, I’ll do that!\p" - .string "Thanks for teaching me!$" - -gText_082BA635:: @ 82BA635 - .string "Oh, uh, no, that’s not what I meant.\n" - .string "I want to know about a different item\l" - .string "than the ones I already know.\p" - .string "Or do you mean that my POKéMON doesn’t\n" - .string "have to hold anything this time?$" - -gText_082BA6E6:: @ 82BA6E6 - .string "{PLAYER}, hello!\n" - .string "It’s about my {STR_VAR_1}…\p" - .string "I want to make it hold a good item.\n" - .string "What would be good for it?$" - -gText_082BA742:: @ 82BA742 - .string "Oh, then my {STR_VAR_1} doesn’t have\n" - .string "to hold anything?$" - -gText_082BA770:: @ 82BA770 - .string "Okay, I got it!\n" - .string "See you again!$" - -gText_082BA78F:: @ 82BA78F - .string "Oh, the item {STR_VAR_1}?\n" - .string "Understood!\p" - .string "I’ll do my best to find one!\n" - .string "See you again!$" - -gText_082BA7D8:: @ 82BA7D8 - .string "Somebody taught me about\n" - .string "the {STR_VAR_1} already.\p" - .string "I want my POKéMON to hold a different\n" - .string "kind of item.\p" - .string "Or do you think {STR_VAR_2} doesn’t\n" - .string "have to hold anything?$" - -gText_082BA867:: @ 82BA867 - .string "Hello, {PLAYER}…\n" - .string "I’m sorry to disturb you, but I have\l" - .string "something else I wanted to ask you.\p" - .string "I don’t think I’m good enough to win\n" - .string "matches on my own, so I’m thinking of\l" - .string "making my {STR_VAR_1} hold an item.\p" - .string "But I don’t know what would be good.\p" - .string "{PLAYER}, please, could you decide\n" - .string "for me?$" - -gText_082BA96B:: @ 82BA96B - .string "A POKéMON belonging to someone like me\n" - .string "would be better off without an item?$" - -gText_082BA9B7:: @ 82BA9B7 - .string "I understand…\n" - .string "You’re saying I shouldn’t rely on items.\l" - .string "I’ll do my best not to!\p" - .string "Thank you very much!$" - -gText_082BAA1B:: @ 82BAA1B - .string "The item {STR_VAR_1}, okay.\n" - .string "I’m not sure if I can get one…\l" - .string "No! I’ll do my best to get it.\p" - .string "Thank you very much!$" - -gText_082BAA81:: @ 82BAA81 - .string "Oh, but…\n" - .string "I think I’ve heard about that before…\p" - .string "Is it maybe because I haven’t handled\n" - .string "the item {STR_VAR_1} very well?\p" - .string "Or do you mean I shouldn’t make\n" - .string "my {STR_VAR_2} hold anything?$" - -gText_082BAB22:: @ 82BAB22 - .string "Oh, {PLAYER}{STRING 5}.\n" - .string "There’s something I wanted to ask you.\p" - .string "You know how you decided which\n" - .string "POKéMON I should have for me?\p" - .string "But I never asked you what item\n" - .string "it should be holding.\p" - .string "Since you already gave me advice,\n" - .string "how about seeing this to the end?\p" - .string "What would be good? I want to make\n" - .string "my {STR_VAR_1} hold something.$" - -gText_082BAC43:: @ 82BAC43 - .string "Oh! So my {STR_VAR_1} should do\n" - .string "the best it can empty-handed?$" - -gText_082BAC78:: @ 82BAC78 - .string "If you think that’s best, I’ll do that.\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082BAD17:: @ 82BAD17 - .string "The item {STR_VAR_1}, huh?\n" - .string "Not bad. I’ll use it!\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082BADB6:: @ 82BADB6 - .string "Huh? What are you saying?\n" - .string "You told me about the {STR_VAR_1}\l" - .string "already before.\p" - .string "Or do you mean my {STR_VAR_2} should\n" - .string "do the best it can empty-handed?$" - -gText_082BAE36:: @ 82BAE36 - .string "Yo, {PLAYER}{STRING 5}!\p" - .string "We’re both busy, but we seem to run\n" - .string "into each other often anyway!\p" - .string "Today I have to do some walking,\n" - .string "cleaning, and brushing.\p" - .string "I haven’t even had the time to buy\n" - .string "my precious {STR_VAR_1} anything.\p" - .string "I don’t have any time, so how about\n" - .string "giving me advice on what I should make\l" - .string "my {STR_VAR_1} hold?$" - -gText_082BAF4E:: @ 82BAF4E - .string "Oh, so me being a busy guy, you say\n" - .string "my {STR_VAR_1} doesn’t need anything?$" - -gText_082BAF8F:: @ 82BAF8F - .string "Okay, gotcha.\n" - .string "I won’t need any time for that.\p" - .string "Thanks today!\n" - .string "See you around!$" - -gText_082BAFDB:: @ 82BAFDB - .string "Okay, gotcha.\n" - .string "I’ll find time somehow and find\l" - .string "that {STR_VAR_1} you recommended.\p" - .string "I’m glad I met a good mentor in you.\n" - .string "Thanks! See you around!$" - -gText_082BB05F:: @ 82BB05F - .string "Huh? I already know about\n" - .string "that {STR_VAR_1}.\p" - .string "Oh, right, I get it.\n" - .string "So me being a busy guy, you say\l" - .string "my {STR_VAR_2} doesn’t need anything?$" - -gText_082BB0D4:: @ 82BB0D4 - .string "Hiya, {PLAYER}! It’s me!\n" - .string "I need to tap your mind again today.\l" - .string "Please, I need your advice!\p" - .string "Drum roll, please!\n" - .string "The question I have is…\p" - .string "If I want to make my {STR_VAR_1} hold\n" - .string "an item, what should it be?$" - -gText_082BB18C:: @ 82BB18C - .string "Is that right? My {STR_VAR_1} doesn’t\n" - .string "need to hold an item, you’re saying.$" - -gText_082BB1CE:: @ 82BB1CE - .string "Okay, that’s what I’ll do!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082BB242:: @ 82BB242 - .string "Uh-huh! One {STR_VAR_1}.\n" - .string "What a cool choice!\l" - .string "I’ll definitely try that!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082BB2D9:: @ 82BB2D9 - .string "Ahahah! That’s silly!\n" - .string "You already told me about that\l" - .string "{STR_VAR_1} before!\p" - .string "Are you feeling okay, {PLAYER}?\p" - .string "Oh, wait! My {STR_VAR_2} doesn’t\n" - .string "need to hold an item, you’re saying.$" - -gText_082BB370:: @ 82BB370 - .string "Hello, {PLAYER}. I hope you’ve been\n" - .string "keeping well.\p" - .string "May I approach you for advice?\p" - .string "In a recent battle, my opponent\n" - .string "seemed to have given his POKéMON\l" - .string "an item to hold.\p" - .string "As a result, I was defeated…\p" - .string "I don’t wish to be left behind.\n" - .string "I would like to make my {STR_VAR_1}\l" - .string "hold an item, too.\p" - .string "It would please me if you could decide\n" - .string "what would be right for my POKéMON…$" - -gText_082BB4C3:: @ 82BB4C3 - .string "In other words… My POKéMON has\n" - .string "no need to hold an item?$" - -gText_082BB4FB:: @ 82BB4FB - .string "I understand clearly now!\n" - .string "I will keep trying like this.\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082BB575:: @ 82BB575 - .string "One {STR_VAR_1} it is!\n" - .string "I will order it right away.\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082BB5E1:: @ 82BB5E1 - .string "You’ve already told me about that,\n" - .string "and I already have it.\p" - .string "Or are you saying… My POKéMON has\n" - .string "no need to hold an item?$" - -gText_082BB656:: @ 82BB656 - .string "Eek! {PLAYER}!\n" - .string "I… I’m overjoyed to see you again!\p" - .string "Oh-oh-oh! There’s something I just\n" - .string "had to ask you, {PLAYER}!\p" - .string "Please decide what my {STR_VAR_1}\n" - .string "should be holding!$" - -gText_082BB6E5:: @ 82BB6E5 - .string "Oh, wow! I didn’t expect that answer!\n" - .string "So, a hold item isn’t necessary?$" - -gText_082BB72C:: @ 82BB72C - .string "Perfectly understood!\n" - .string "I’ll keep at this without an item!\p" - .string "I hope you’ll be willing to teach me\n" - .string "some more another time.$" - -gText_082BB7A2:: @ 82BB7A2 - .string "{STR_VAR_1}! I’ll use that!\p" - .string "Um… Could it be, {PLAYER}, you also\n" - .string "make your POKéMON hold that item?\p" - .string "I’ll be sure to get it!\n" - .string "I hope you’ll be willing to teach me\l" - .string "some more another time.$" - -gText_082BB84A:: @ 82BB84A - .string "Oh? You recommended that\n" - .string "{STR_VAR_1} before, too.\p" - .string "Or is it the best thing to hold?\n" - .string "Or do you mean that my {STR_VAR_2}\l" - .string "doesn’t need anything to hold?$" - -gText_082BB8CD:: @ 82BB8CD - .string "Hola!\n" - .string "My maestro, {PLAYER}{STRING 5}!\p" - .string "I want to hit you up for advice on\n" - .string "POKéMON tools.\p" - .string "What do you think would be good for\n" - .string "my {STR_VAR_1} to hold?\p" - .string "Don’t be shy now.\n" - .string "Let’s blurt it out!$" - -gText_082BB970:: @ 82BB970 - .string "Oh? So, you’re saying my {STR_VAR_1}\n" - .string "can win without holding any item?$" - -gText_082BB9AE:: @ 82BB9AE - .string "Si, bueno!\n" - .string "I’ll give it my best shot, like, slam!\p" - .string "All right, thanks, as always!\n" - .string "Adios!$" - -gText_082BBA05:: @ 82BBA05 - .string "Uh-huh, that’s one {STR_VAR_1}?\n" - .string "Si, bueno!\l" - .string "I’ll go find me one, like, bam!\p" - .string "All right, thanks, as always!\n" - .string "Adios!$" - -gText_082BBA6C:: @ 82BBA6C - .string "No, no! You already told me about\n" - .string "that {STR_VAR_1} thing before.\p" - .string "Oh, now wait just one minute here…\n" - .string "So, you’re saying my {STR_VAR_2}\l" - .string "can win without holding any item?$" - -gText_082BBB01:: @ 82BBB01 - .string "{PLAYER}{STRING 5}, something unbelievable\n" - .string "has happened!\p" - .string "I woke up this morning, and my POKéMON\n" - .string "had 10 NUGGETS!\p" - .string "Of course I’m lying!\n" - .string "Wahahaha!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at thinking about\l" - .string "what items POKéMON should hold.\p" - .string "So, how about deciding for me what\n" - .string "my {STR_VAR_1} should hold, master?$" - -gText_082BBC1C:: @ 82BBC1C - .string "What’s that mean?\n" - .string "Don’t make it hold anything?$" - -gText_082BBC4B:: @ 82BBC4B - .string "Okay, so it shouldn’t hold anything.\n" - .string "Then, I’d better get something for it!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082BBCF6:: @ 82BBCF6 - .string "Okay, so it’s one {STR_VAR_1}!\n" - .string "I’ll make it hold anything but that!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082BBD90:: @ 82BBD90 - .string "Um, you told me about that before,\n" - .string "didn’t you?\p" - .string "Isn’t there something else?\p" - .string "Or do you mean, don’t make\n" - .string "my {STR_VAR_2} hold anything?$" - -gText_082BBE0B:: @ 82BBE0B - .string "A-H-O-Y!\n" - .string "And that spells ahoy!\p" - .string "The rappin’ SAILOR am I!\n" - .string "I present to you a question\l" - .string "that’s pretty fly!\p" - .string "It’s an item question\n" - .string "that begs your suggestion!\p" - .string "My {STR_VAR_1} needs an item to hold,\n" - .string "What should it be, if I may be bold?$" - -gText_082BBEE5:: @ 82BBEE5 - .string "Is that right?\n" - .string "My {STR_VAR_1} doesn’t need to be\l" - .string "holding anything tight?$" - -gText_082BBF25:: @ 82BBF25 - .string "Okay, I hear you, sure I do!\n" - .string "My POKéMON will go empty-handed, too!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082BBFA4:: @ 82BBFA4 - .string "Okay, one {STR_VAR_1},\n" - .string "that’s what I’ll use.\l" - .string "I was right to make you choose!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082BC024:: @ 82BC024 - .string "Okay, one {STR_VAR_1}, you say?\n" - .string "You told me that the other day.\l" - .string "I need a new idea, a brand new way.\p" - .string "Or, what, is that right?\n" - .string "My POKéMON doesn’t need to hold\l" - .string "anything tight?$" - -gText_082BC0C8:: @ 82BC0C8 - .string "Say, hey, {PLAYER}!\n" - .string "I found you again today!\p" - .string "What should I do? Get your advice?\n" - .string "Why not? I’m already talking to you!\p" - .string "{PLAYER}, are you getting sick of me?\n" - .string "Nah, no way, that can’t be.\p" - .string "Will you hear me out?\n" - .string "I’m looking for advice--that’s what\l" - .string "I’m talking about.\p" - .string "It’s about a hold item for\n" - .string "my {STR_VAR_1} that’d be good.\l" - .string "My indecision is making me brood.$" - -gText_082BC213:: @ 82BC213 - .string "My {STR_VAR_1} needs nothing?\n" - .string "Doesn’t need to hold anything?$" - -gText_082BC247:: @ 82BC247 - .string "If holding nothing is the best,\n" - .string "I’ll do as you suggest!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082BC2DD:: @ 82BC2DD - .string "If holding that {STR_VAR_1} is\n" - .string "the best, I’ll do as you suggest!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082BC373:: @ 82BC373 - .string "Haven’t I heard about that\n" - .string "{STR_VAR_1} before?\l" - .string "I’m certain I have, that’s for sure!\p" - .string "I need a new something!\n" - .string "Or, my {STR_VAR_2} needs nothing?\l" - .string "Doesn’t need to hold anything?$" - -gText_082BC40E:: @ 82BC40E - .string "Gwah! Ouch! {PLAYER}{STRING 5}, my arm’s broken!\n" - .string "Don’t touch it, please!\p" - .string "I must’ve broken it while I was trying\n" - .string "out different hold items with my posse\l" - .string "of POKéMON.\p" - .string "So, things being this way,\n" - .string "I need you to decide for me.\p" - .string "{PLAYER}{STRING 5}, what do you think would be\n" - .string "good for my {STR_VAR_1} to hold?$" - -gText_082BC514:: @ 82BC514 - .string "Ouch…\p" - .string "So your suggestion is my {STR_VAR_1}\n" - .string "doesn’t have to hold anything?$" - -gText_082BC555:: @ 82BC555 - .string "Hm, all right. That would be easier\n" - .string "for me, the way things are now.\p" - .string "I hope I can keep hitting you up\n" - .string "for help like this.$" - -gText_082BC5CE:: @ 82BC5CE - .string "Hm, all right. That’s one {STR_VAR_1}.\n" - .string "My POKéMON’s arm is fine, so I’ll make\l" - .string "it hold that item right away.\p" - .string "I hope I can keep hitting you up\n" - .string "for help like this.$" - -gText_082BC666:: @ 82BC666 - .string "No, no, you told me about that\n" - .string "{STR_VAR_1} before, remember?\p" - .string "How about telling me something\n" - .string "even better?\p" - .string "Oh, wait a second.\n" - .string "So your suggestion is my {STR_VAR_2}\l" - .string "doesn’t have to hold anything?$" - -gText_082BC714:: @ 82BC714 - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}…\p" - .string "Please, don’t look at me that way.\n" - .string "My POKéMON don’t have anything.\p" - .string "I… I’m really embarrassed about this,\n" - .string "but I really need your advice.\p" - .string "I can’t decide what hold item would\n" - .string "make my {STR_VAR_1} strong.\p" - .string "{PLAYER}{STRING 5}, what do you think would\n" - .string "be good?$" - -gText_082BC808:: @ 82BC808 - .string "Oh… Then, you think it would be better\n" - .string "if my {STR_VAR_1} didn’t have an item?$" - -gText_082BC84D:: @ 82BC84D - .string "Oh… Okay!\n" - .string "I’ll go without an item.\p" - .string "This is nerve-racking, though.\n" - .string "Wouldn’t it be too cool?\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082BC8EA:: @ 82BC8EA - .string "Oh… Okay!\n" - .string "I’ll go with that {STR_VAR_1}.\p" - .string "This is nerve-racking, though.\n" - .string "Wouldn’t it be too cool?\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082BC984:: @ 82BC984 - .string "B-but I already heard about that.\p" - .string "Please don’t brush me off like this!\n" - .string "I can’t live with the humiliation.\p" - .string "Oh… Am I jumping to conclusions?\n" - .string "Do you think it would be better if\l" - .string "my {STR_VAR_2} didn’t have an item?$" - -gText_082BCA4D:: @ 82BCA4D - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really?\l" - .string "Perhaps you’re a twin?\p" - .string "Oh, no, no, no, don’t worry!\n" - .string "If you really are {PLAYER}, please\l" - .string "forget about my rudeness.\p" - .string "What I would like is some more of\n" - .string "your fine advice.\p" - .string "I have here my {STR_VAR_1} that I wish\n" - .string "to make hold a convenient item.\p" - .string "What would be worthy of it?$" - -gText_082BCB75:: @ 82BCB75 - .string "It’s better if it held nothing?\n" - .string "Are you certain?$" - -gText_082BCBA6:: @ 82BCBA6 - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "Let us meet again!$" - -gText_082BCBFC:: @ 82BCBFC - .string "One {STR_VAR_1}?\n" - .string "Are you certain?\p" - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I do hope my POKéMON will be able to\n" - .string "put it to good use.\p" - .string "Let us meet again!$" - -gText_082BCCA4:: @ 82BCCA4 - .string "No, no, wait a minute.\n" - .string "I believe you taught me that before.\p" - .string "I would like you to recommend\n" - .string "something different this time.\p" - .string "Perhaps you’re suggesting that\n" - .string "my {STR_VAR_2} should hold nothing?\l" - .string "Are you certain?$" - -gText_082BCD68:: @ 82BCD68 - .string "Waah, {PLAYER}!\n" - .string "I have a dilemma, sob…\p" - .string "I want to begin battling other people,\n" - .string "but I don’t know what to do.\p" - .string "How should I line up my POKéMON\n" - .string "so they’ll be at their strongest?\p" - .string "Please tell me, {PLAYER}.\n" - .string "If you were me, which of these POKéMON\l" - .string "would you send out first?$" - -gText_082BCE64:: @ 82BCE64 - .string "My {STR_VAR_1} should go first?\n" - .string "Waaaaah!\p" - .string "Oh! I’m so sorry!\n" - .string "You’ve made me happy by choosing\l" - .string "my first POKéMON, and it’s made me cry…\p" - .string "Thank you so much!$" - -gText_082BCEF2:: @ 82BCEF2 - .string "Yay! It’s {PLAYER}!\n" - .string "Great! I wanted to ask you something!\p" - .string "Um, of my POKéMON, which do you\n" - .string "think should go out first?$" - -gText_082BCF61:: @ 82BCF61 - .string "My {STR_VAR_1}? That’s true.\n" - .string "Okay, I’ll do that!\p" - .string "Thanks for teaching me!$" - -gText_082BCFA1:: @ 82BCFA1 - .string "{PLAYER}, hello!\p" - .string "I think, in a battle, it’s very important\n" - .string "which POKéMON comes out first.\p" - .string "Out of the POKéMON that I have,\n" - .string "which would be good to send out first?$" - -gText_082BD03C:: @ 82BD03C - .string "My {STR_VAR_1} goes first?\n" - .string "Okay, I got it!\p" - .string "See you again!$" - -gText_082BD06D:: @ 82BD06D - .string "Hello, {PLAYER}…\n" - .string "I’m sorry to disturb you again with\l" - .string "another question.\p" - .string "I have so little confidence, I don’t\n" - .string "know what I’d do without you, {PLAYER}.\p" - .string "It may be a waste of time for me to\n" - .string "even worry about it, but I just can’t\l" - .string "decide something…\p" - .string "Which of my POKéMON should I send\n" - .string "out first in a battle?$" - -gText_082BD18A:: @ 82BD18A - .string "My {STR_VAR_1}?\n" - .string "Understood!\p" - .string "I can’t believe that you would bother\n" - .string "to answer my questions so often!\p" - .string "I’m so grateful that you would even\n" - .string "speak with me… Thank you!$" - -gText_082BD222:: @ 82BD222 - .string "Oh, {PLAYER}{STRING 5}! It’s me!\n" - .string "I’m so glad to see you because I have\l" - .string "this little problem.\p" - .string "I can’t decide how my POKéMON should\n" - .string "be lined up. Could you decide for me?\p" - .string "Oh, you don’t need to decide the whole\n" - .string "party right now.\p" - .string "How about deciding just the first\n" - .string "POKéMON for me?$" - -gText_082BD325:: @ 82BD325 - .string "My {STR_VAR_1}? That’s great!\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082BD3B1:: @ 82BD3B1 - .string "Hi, my teacher {PLAYER}{STRING 5}!\n" - .string "I’m busy again today!\p" - .string "I have to do some cycling, shopping,\n" - .string "and humming.\p" - .string "I haven’t even had the time to decide\n" - .string "how to line up my POKéMON team.\p" - .string "So, how about checking out my team?\n" - .string "Which one should go first?$" - -gText_082BD493:: @ 82BD493 - .string "Okay, gotcha.\n" - .string "I have enough time at least to put\l" - .string "my {STR_VAR_1} at the head of the line!\p" - .string "Whoops, my girlfriend’s waiting!\n" - .string "Thanks! See you around!$" - -gText_082BD51C:: @ 82BD51C - .string "Yoohoo! Hiya, {PLAYER}!\n" - .string "You always walk around looking tough!\p" - .string "Listen, I need something from you\n" - .string "again! It’s the usual thing!\p" - .string "Drum roll, please!\n" - .string "The question I have is about my team.\p" - .string "Which POKéMON of mine should be first\n" - .string "to go out in a battle?$" - -gText_082BD609:: @ 82BD609 - .string "Hmhm!\n" - .string "My {STR_VAR_1}, you say!\l" - .string "Thanks for a most cool answer!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082BD697:: @ 82BD697 - .string "Thank you so much for stopping to\n" - .string "chat with me, {PLAYER}.\p" - .string "I know I’m taking advantage of your\n" - .string "kindness, but may I ask for advice?\p" - .string "I would like you to decide on the order\n" - .string "of my POKéMON team.\p" - .string "It would please me if you could decide\n" - .string "which POKéMON should come first.$" - -gText_082BD797:: @ 82BD797 - .string "My {STR_VAR_1} it is!\n" - .string "I will put it first right away!\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082BD806:: @ 82BD806 - .string "Eek! {PLAYER}!\n" - .string "I… I’m overjoyed to see you again!\p" - .string "My POKéMON have become much\n" - .string "stronger!\p" - .string "But I don’t always win. It seems to\n" - .string "depend on which POKéMON goes first.\p" - .string "{PLAYER}, please, I need your help!\p" - .string "Please decide which of my POKéMON\n" - .string "should go out first!$" - -gText_082BD8F5:: @ 82BD8F5 - .string "Sigh… I’m overwhelmed with happiness…\p" - .string "It’s like a dream having you decide\n" - .string "for me, {PLAYER}.\p" - .string "But perfectly understood!\n" - .string "I will go with my {STR_VAR_1} first!\p" - .string "I hope you’ll be willing to teach me\n" - .string "some more another time.$" - -gText_082BD9BE:: @ 82BD9BE - .string "Hello, hello!\n" - .string "My mentor, {PLAYER}{STRING 5}!\l" - .string "Hit me with your sage advice today!\p" - .string "You see, I pulled together a team of\n" - .string "three POKéMON. So far so good.\p" - .string "But the team’s battling order’s not\n" - .string "settled yet.\p" - .string "This is where you come in, {PLAYER}{STRING 5}!\n" - .string "You decide which POKéMON leads off!\p" - .string "Don’t be shy now.\n" - .string "Let’s blurt it out!$" - -gText_082BDAE1:: @ 82BDAE1 - .string "Uh-huh, my {STR_VAR_1} leads off!\n" - .string "OK, A-OK!\l" - .string "I’ll reorder the lineup, like, wham!\p" - .string "All right, thanks, as always!\n" - .string "Adios!$" - -gText_082BDB4E:: @ 82BDB4E - .string "{PLAYER}{STRING 5}, listen!\n" - .string "It’s a crisis!\p" - .string "My POKéMON, all three of them, go into\n" - .string "battle at once!\p" - .string "Of course that’s impossible!\n" - .string "Wahahaha!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at thinking about\l" - .string "how I should line up my POKéMON.\p" - .string "So, how about deciding for me which\n" - .string "POKéMON should go first, master?$" - -gText_082BDC6B:: @ 82BDC6B - .string "Okay, so it’s my {STR_VAR_1} you chose?\n" - .string "I’ll let any but that one go first!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082BDD0D:: @ 82BDD0D - .string "A-H-O-Y!\n" - .string "And that spells ahoy!\p" - .string "The rappin’ SAILOR am I!\n" - .string "I present to you a question\l" - .string "that’s pretty fly!\p" - .string "It’s a team lineup question\n" - .string "that begs your suggestion!\p" - .string "Out of this lot, which should go first\n" - .string "as the first on the spot?$" - -gText_082BDDEC:: @ 82BDDEC - .string "Okay, I hear you, sure I do!\n" - .string "I’ll switch them up, that I’ll do!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082BDE68:: @ 82BDE68 - .string "Yahoo, {PLAYER}!\n" - .string "How do you do?\p" - .string "What should I do? Go ahead and ask?\n" - .string "Uh-huh, I have something to ask!\l" - .string "Are you receiving me?\l" - .string "You are receiving me!\p" - .string "You have to decide, which of my\n" - .string "POKéMON is the first to ride!\l" - .string "Into battle, I mean to say.$" - -gText_082BDF4D:: @ 82BDF4D - .string "My {STR_VAR_1}? Yes!\n" - .string "That’ll do, there’s no distress!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082BDFD8:: @ 82BDFD8 - .string "…Oof…ooch… {PLAYER}{STRING 5}…\n" - .string "My stomach’s hurting all of a sudden…\p" - .string "…It’s getting better now…\p" - .string "I must’ve worried myself sick racking\n" - .string "my brains on how I should line up\l" - .string "my posse of POKéMON.\p" - .string "So, things being this way,\n" - .string "I need you to decide for me.\p" - .string "{PLAYER}{STRING 5}, which of my POKéMON should\n" - .string "go first? So I’d win, I mean.$" - -gText_082BE0FD:: @ 82BE0FD - .string "Hm, all right.\n" - .string "My {STR_VAR_1} goes first.\p" - .string "I’ll fix the lineup like that after\n" - .string "I have my supper.\p" - .string "I hope I can keep hitting you up\n" - .string "for help like this.$" - -gText_082BE189:: @ 82BE189 - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}?\p" - .string "Please, don’t look at me that way.\n" - .string "You’re making me feel all flustered.\p" - .string "Um…\n" - .string "I really need your advice.\p" - .string "It makes me bashful to say this,\n" - .string "but I chose my 3-POKéMON team.\l" - .string "I can’t decide on the order, though.\p" - .string "Which POKéMON should I send out first\n" - .string "so I at least look capable?$" - -gText_082BE2A5:: @ 82BE2A5 - .string "Oh… Okay!\n" - .string "I’ll lead with my {STR_VAR_1}.\p" - .string "I hope I can do my best without\n" - .string "getting all flustered.\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082BE33E:: @ 82BE33E - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really?\l" - .string "Perhaps you’re a clever look-alike?\p" - .string "Oh, no, no, no, don’t worry!\n" - .string "If you really are {PLAYER}, please\l" - .string "forget about my rudeness.\p" - .string "What I would like is your fine advice.\p" - .string "I have here my POKéMON team.\n" - .string "I would like you to tell me which one\l" - .string "should go first in a battle.$" - -gText_082BE46C:: @ 82BE46C - .string "My {STR_VAR_1}…\n" - .string "You aren’t pulling my leg?\p" - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I am as you see, but I shall do\n" - .string "my best.\p" - .string "Let us meet again!$" - -gText_082BE50D:: @ 82BE50D - .string "Snivel…\n" - .string "Oh, {PLAYER}!\p" - .string "What perfect timing!\n" - .string "There’s something I just can’t decide…\p" - .string "I can’t decide which POKéMON I should\n" - .string "be using.\p" - .string "I can’t decide between the POKéMON\n" - .string "{STR_VAR_1} and {STR_VAR_2}…\p" - .string "{PLAYER}, which do you think will give\n" - .string "even me a chance at winning?$" - -gText_082BE5F5:: @ 82BE5F5 - .string "Snivel… I… I understand!\n" - .string "Oh! I’m so sorry!\l" - .string "You’ve made me so happy, I’m crying…\p" - .string "I’ll do my best to catch one\n" - .string "{STR_VAR_1}!\p" - .string "Thank you so much!$" - -gText_082BE679:: @ 82BE679 - .string "Yay! It’s {PLAYER}!\n" - .string "Yay, you came at the right time, too!\l" - .string "I need your advice again!\p" - .string "Um, I’m all mixed up--should I use\n" - .string "my {STR_VAR_1} or {STR_VAR_2}…\p" - .string "Which do you think I should raise,\n" - .string "{PLAYER}?$" - -gText_082BE71E:: @ 82BE71E - .string "Oh, so my {STR_VAR_1} is better!\n" - .string "Okay, I’ll do that!\p" - .string "Thanks for teaching me!$" - -gText_082BE762:: @ 82BE762 - .string "{PLAYER}, hello!\n" - .string "I have a question I wanted to ask.\p" - .string "I’m in a dilemma over whether I should\n" - .string "raise one {STR_VAR_1} or {STR_VAR_2}.\p" - .string "Which POKéMON do you think will\n" - .string "be stronger?$" - -gText_082BE7F8:: @ 82BE7F8 - .string "{STR_VAR_1} is your choice?\n" - .string "Okay, I got it!\p" - .string "I’ll go catch a strong {STR_VAR_1}\n" - .string "right away!\p" - .string "See you again!$" - -gText_082BE850:: @ 82BE850 - .string "Hello, {PLAYER}…\p" - .string "Um, you’ve probably already forgotten\n" - .string "about someone like me…\p" - .string "…But that doesn’t matter if you\n" - .string "could give me advice…\p" - .string "I can’t decide on the one kind of\n" - .string "POKéMON I should raise…\p" - .string "I’ve narrowed the field to the POKéMON\n" - .string "{STR_VAR_1} and {STR_VAR_2}, but that’s\l" - .string "where I became stuck…\p" - .string "{PLAYER}, you probably don’t want to\n" - .string "bother, but please decide for me.$" - -gText_082BE99C:: @ 82BE99C - .string "But will a wild {STR_VAR_1} even pay\n" - .string "attention to me?\p" - .string "I will try!\p" - .string "But will I even be able to catch one…\n" - .string "No! I’ll do my best!\p" - .string "Thank you!$" - -gText_082BEA1B:: @ 82BEA1B - .string "Oh, {PLAYER}{STRING 5}! I’m so glad to see you!\n" - .string "I was about to go looking for you!\p" - .string "Can you decide what kind of POKéMON\n" - .string "I should use?\p" - .string "For instance…\n" - .string "How about the POKéMON {STR_VAR_1}\l" - .string "and {STR_VAR_2}?\p" - .string "Which one do you think would be\n" - .string "better?$" - -gText_082BEAE9:: @ 82BEAE9 - .string "{STR_VAR_1}? That’s great!\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082BEB72:: @ 82BEB72 - .string "If it isn’t {PLAYER}{STRING 5}! How’s it going?\n" - .string "I’m busy again as always!\p" - .string "I want to do good with POKéMON, too,\n" - .string "but I haven’t been able to decide\l" - .string "which POKéMON I should use.\p" - .string "You know how {STR_VAR_1} look strong?\n" - .string "But {STR_VAR_2} are tough to ignore.\p" - .string "{PLAYER}{STRING 5}, give me some of your good\n" - .string "advice! Which one’d be good for me?$" - -gText_082BEC8E:: @ 82BEC8E - .string "Okay, gotcha.\n" - .string "I’ll find time somehow and catch me\l" - .string "that {STR_VAR_1} you recommended.\p" - .string "I’m glad I met a good mentor in you.\n" - .string "Thanks! See you around!$" - -gText_082BED16:: @ 82BED16 - .string "Oh!\n" - .string "Yay, it’s {PLAYER}!\p" - .string "I didn’t waste any time boasting to\n" - .string "my friends about meeting you!\p" - .string "I need to tap your mind again today.\n" - .string "It’s an easy one for you!\p" - .string "Drum roll, please!\n" - .string "The question I have is…\p" - .string "If I were to raise a POKéMON,\n" - .string "and the choices were one {STR_VAR_1}\l" - .string "or {STR_VAR_2}, which should it be?$" - -gText_082BEE29:: @ 82BEE29 - .string "Ahhh!\n" - .string "{STR_VAR_1}, you say!\l" - .string "Thanks for a most cool answer!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082BEEB4:: @ 82BEEB4 - .string "Oh, is it you, {PLAYER}?\n" - .string "I’m delighted to see you again!\p" - .string "Ever since I became your apprentice,\n" - .string "my confidence has been blooming.\p" - .string "I think I’m ready to raise a POKéMON\n" - .string "of my own!\p" - .string "{PLAYER}, may I impose on you to choose\n" - .string "which POKéMON I should raise?\p" - .string "The choices are the POKéMON\n" - .string "{STR_VAR_1} or {STR_VAR_2}…\l" - .string "Which POKéMON is right for me?$" - -gText_082BEFE2:: @ 82BEFE2 - .string "One {STR_VAR_1} it is!\n" - .string "I will find one right away!\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082BF04E:: @ 82BF04E - .string "Eek! {PLAYER}! I met you again!\n" - .string "I… I’m overjoyed!\p" - .string "Oh-oh-oh, I know!\n" - .string "I shouldn’t pass up this opportunity!\p" - .string "May I ask a huge favor, {PLAYER}?\n" - .string "Please choose a POKéMON for me!\p" - .string "Please decide which would be better,\n" - .string "{STR_VAR_1} or {STR_VAR_2}!$" - -gText_082BF11D:: @ 82BF11D - .string "Wow! You decided for me!\n" - .string "One {STR_VAR_1} is what I’ll raise to\l" - .string "the best of my ability.\p" - .string "I hope you’ll be willing to teach me\n" - .string "some more another time.$" - -gText_082BF1A8:: @ 82BF1A8 - .string "Hey, hey!\n" - .string "My mentor, {PLAYER}{STRING 5}!\p" - .string "Hello, I’ve been looking for you\n" - .string "for some more of your sage advice!\p" - .string "Which kind of POKéMON would be right\n" - .string "for me, one {STR_VAR_1} or {STR_VAR_2}?\p" - .string "Don’t be shy now.\n" - .string "Let’s blurt it out!$" - -gText_082BF268:: @ 82BF268 - .string "Uh-huh, one {STR_VAR_1} it is!\n" - .string "OK, A-OK!\l" - .string "I’ll get one in a BALL, like, cram!\p" - .string "All right, thanks, as always!\n" - .string "Adios!$" - -gText_082BF2D1:: @ 82BF2D1 - .string "{PLAYER}{STRING 5}, listen! Big news!\n" - .string "I caught a mirage POKéMON!\p" - .string "Of course I’m lying!\n" - .string "Wahahaha!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at catching\l" - .string "POKéMON.\p" - .string "So, how about deciding for me which\n" - .string "kind of POKéMON I should catch,\l" - .string "master?\p" - .string "Which would be better?\n" - .string "{STR_VAR_1} or {STR_VAR_2}?$" - -gText_082BF3CF:: @ 82BF3CF - .string "Okay, so it’s {STR_VAR_1} you chose?\n" - .string "I’ll grab the other kind, then!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082BF46A:: @ 82BF46A - .string "A-H-O-Y!\n" - .string "And that spells ahoy!\p" - .string "The rappin’ SAILOR am I!\n" - .string "Surely you remember who am I?\p" - .string "Today, I have a POKéMON question\n" - .string "that begs your suggestion!\p" - .string "I have the choice between this\n" - .string "{STR_VAR_1} and {STR_VAR_2}, you see.\l" - .string "Which is the one to catch for me?$" - -gText_082BF551:: @ 82BF551 - .string "{STR_VAR_1}, you say, hey, hey!\n" - .string "I’ll go get me one right away!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082BF5C3:: @ 82BF5C3 - .string "Oh, wow, if it isn’t {PLAYER}!\p" - .string "What should I do? Get your advice?\n" - .string "Why not? I’m already talking to you!\p" - .string "It’s been a long time. Let me break\n" - .string "the ice. I’m also looking for advice!\l" - .string "Are you receiving me?\l" - .string "You are receiving me!\p" - .string "My POKéMON--which should I use?\n" - .string "It’s either {STR_VAR_1} or {STR_VAR_2}.\l" - .string "Which do you choose?$" - -gText_082BF6E5:: @ 82BF6E5 - .string "If that {STR_VAR_1} is the best,\n" - .string "I’ll do as you suggest!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082BF773:: @ 82BF773 - .string "Oh, hi, {PLAYER}{STRING 5}…\n" - .string "I have this horrible headache…\p" - .string "I must’ve worried too much about\n" - .string "the kind of POKéMON I should raise.\p" - .string "So, things being this way,\n" - .string "I need you to decide for me.\p" - .string "{PLAYER}{STRING 5}, if I had to choose between\n" - .string "the POKéMON {STR_VAR_1} and\l" - .string "{STR_VAR_2}, which should it be?$" - -gText_082BF869:: @ 82BF869 - .string "Hm, one {STR_VAR_1}, all right.\n" - .string "I’ll go look for one when I get better.\p" - .string "I hope I can keep hitting you up\n" - .string "for help like this.$" - -gText_082BF8DD:: @ 82BF8DD - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}…?\p" - .string "Please, don’t look at me that way.\n" - .string "I’m getting all flustered…\l" - .string "I… I need your advice.\p" - .string "I… I’m really embarrassed, but I can’t\n" - .string "decide which POKéMON to use.\p" - .string "If the choices were {STR_VAR_1} or\n" - .string "{STR_VAR_2}, which would be better?$" - -gText_082BF9BA:: @ 82BF9BA - .string "Oh… Okay!\n" - .string "I’ll do my best with one {STR_VAR_1}.\p" - .string "I hope I can do my best without\n" - .string "getting all flustered.\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082BFA5A:: @ 82BFA5A - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really real?\p" - .string "No, no, if you are real, it’s fine.\n" - .string "Incidentally, I would like to obtain\l" - .string "your advice.\p" - .string "It’s about the POKéMON I am to use.\p" - .string "If the choices are the POKéMON\n" - .string "{STR_VAR_1} and {STR_VAR_2}, which is\l" - .string "more worthy of me?$" - -gText_082BFB4E:: @ 82BFB4E - .string "{STR_VAR_1}?\n" - .string "Are you certain?\p" - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I do hope it is something even I can\n" - .string "handle with aplomb.\p" - .string "Let us meet again!$" - -gText_082BFBF2:: @ 82BFBF2 - .string "Waaah! Oh, {PLAYER}!\n" - .string "Snivel… Hiccup…\p" - .string "I have a dilemma!\n" - .string "I can’t decide on a move for\l" - .string "my {STR_VAR_1}…\p" - .string "Please, please, {PLAYER}.\n" - .string "Can you decide for me?\p" - .string "For my {STR_VAR_1}, which move would\n" - .string "be the better choice: {STR_VAR_2}\l" - .string "or {STR_VAR_3}?$" - -gText_082BFCAE:: @ 82BFCAE - .string "{STR_VAR_1}?\n" - .string "Waaaaah!\p" - .string "Oh! I’m so sorry, {PLAYER}!\n" - .string "You’ve made me so happy by deciding\l" - .string "the move, I’m crying…\p" - .string "Snivel…\n" - .string "Thank you so much!$" - -gText_082BFD26:: @ 82BFD26 - .string "Yay! Hi, {PLAYER}!\n" - .string "I need your advice again!\p" - .string "I want to teach my {STR_VAR_1}\n" - .string "a cool move.\p" - .string "I like either of the moves\n" - .string "{STR_VAR_2} or {STR_VAR_3}.\l" - .string "What’s your recommendation?$" - -gText_082BFDB1:: @ 82BFDB1 - .string "{STR_VAR_1} is better? I guess so!\n" - .string "Okay, I’ll go with that!\p" - .string "If we meet here again, please teach\n" - .string "me something else, teacher!$" - -gText_082BFE24:: @ 82BFE24 - .string "{PLAYER}, hello!\n" - .string "It’s about my {STR_VAR_1}, but I’m\l" - .string "worried about its moves.\p" - .string "You see, it’s the moves {STR_VAR_2}\n" - .string "and {STR_VAR_3}.\p" - .string "Which is stronger and better for\n" - .string "my {STR_VAR_1}?$" - -gText_082BFEAD:: @ 82BFEAD - .string "{STR_VAR_1} is your choice?\n" - .string "Okay, I got it!\p" - .string "I’ll go teach {STR_VAR_1} to\n" - .string "my POKéMON right away!\p" - .string "See you again!$" - -gText_082BFF0A:: @ 82BFF0A - .string "Ohhh, {PLAYER}…\n" - .string "I’m hopeless, no, really!\p" - .string "I’ve decided to raise a POKéMON,\n" - .string "but now I can’t even decide what\l" - .string "move I should let it learn…\p" - .string "I know that it doesn’t mean anything\n" - .string "to you, {PLAYER}.\p" - .string "But it means a lot to me…\p" - .string "Please, {PLAYER}, could you choose\n" - .string "a move for my {STR_VAR_1}?\p" - .string "If you could even choose between\n" - .string "{STR_VAR_2} and {STR_VAR_3}…$" - -gText_082C0032:: @ 82C0032 - .string "I understand!\p" - .string "But will it even be willing to learn\n" - .string "{STR_VAR_1} for me…\l" - .string "No! I’ll do my best!\p" - .string "Thank you!$" - -gText_082C0090:: @ 82C0090 - .string "Oh, {PLAYER}{STRING 5}!\n" - .string "I was just hoping to see you, too!\p" - .string "I was wondering what move would\n" - .string "be suitable for my {STR_VAR_1}.\p" - .string "I can’t decide, so can you decide\n" - .string "for me instead?\p" - .string "For instance… How about the moves\n" - .string "{STR_VAR_2} and {STR_VAR_3}?\l" - .string "Which one would be better?$" - -gText_082C016E:: @ 82C016E - .string "{STR_VAR_1}? That’s great!\p" - .string "Knowing that you made the decision,\n" - .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" - .string "I lose.\p" - .string "Okay, I’ll look to you for advice again.\n" - .string "Bye!$" - -gText_082C01F7:: @ 82C01F7 - .string "How could things be this busy?\n" - .string "Hey, if it isn’t {PLAYER}{STRING 5}!\l" - .string "How’s it going?\p" - .string "Since I got up this morning, I’ve done\n" - .string "my jogging, swimming, and cooking!\p" - .string "You wouldn’t believe how busy I am!\p" - .string "I can’t even decide what move\n" - .string "my {STR_VAR_1} should learn!\p" - .string "{STR_VAR_2} looks good, huh?\n" - .string "But {STR_VAR_3}’s also decent.\p" - .string "{PLAYER}{STRING 5}, give me some of your good\n" - .string "advice! Which move’d be good for me?$" - -gText_082C034C:: @ 82C034C - .string "Okay, gotcha.\n" - .string "I’ll make room in my schedule and\l" - .string "teach that move.\p" - .string "I’m glad I met a good mentor in you.\n" - .string "Thanks! See you around!$" - -gText_082C03CA:: @ 82C03CA - .string "Oh! Lucky!\n" - .string "I met you again, {PLAYER}!\l" - .string "I need to tap your mind again today.\p" - .string "Drum roll, please!\n" - .string "The question I have is…\p" - .string "For my {STR_VAR_1}, which is the move\n" - .string "best suited, {STR_VAR_2} or\l" - .string "{STR_VAR_3}?$" - -gText_082C046E:: @ 82C046E - .string "Ahhh!\n" - .string "{STR_VAR_1}, you say!\l" - .string "Thanks for a most cool answer!\p" - .string "I guess that’s about all I wanted\n" - .string "to ask you today.\p" - .string "Let’s meet here again, okay?\n" - .string "Thanks!$" - -gText_082C04F9:: @ 82C04F9 - .string "Oh, hello, {PLAYER}.\n" - .string "I trust you’ve been well?\p" - .string "I have to seek your advice again.\n" - .string "It’s about my dearest {STR_VAR_1}.\p" - .string "What would be the ideal move for\n" - .string "my lovable {STR_VAR_1}?\l" - .string "{STR_VAR_2} or {STR_VAR_3}?$" - -gText_082C0598:: @ 82C0598 - .string "{STR_VAR_1} it is!\n" - .string "I will teach that right away!\p" - .string "Thank you, {PLAYER}.\n" - .string "I hope I can count on you again.\l" - .string "Please take care!$" - -gText_082C0602:: @ 82C0602 - .string "Eek! {PLAYER}! I met you again!\n" - .string "I… I’m overjoyed!\p" - .string "Whenever I’m in need, you’re always\n" - .string "there for me, {PLAYER}!\p" - .string "Today, I want you to recommend\n" - .string "a move for me!\p" - .string "Please choose a move for\n" - .string "my {STR_VAR_1}!\p" - .string "Which move would be better,\n" - .string "{STR_VAR_2} or {STR_VAR_3}?$" - -gText_082C06D8:: @ 82C06D8 - .string "Oh-oh-oh! Thank you!\n" - .string "{STR_VAR_1} is it!\l" - .string "Perfectly understood!\p" - .string "I hope you’ll be willing to teach me\n" - .string "some more another time.$" - -gText_082C074A:: @ 82C074A - .string "Hola, {PLAYER}{STRING 5}, bueno!\n" - .string "I’m hoping for some more of\l" - .string "your sage advice today!\p" - .string "What would be the best move for\n" - .string "my {STR_VAR_1}?\p" - .string "It should be something that’ll\n" - .string "let me win just like that!\p" - .string "Would it be {STR_VAR_2}?\n" - .string "Or {STR_VAR_3}?$" - -gText_082C0809:: @ 82C0809 - .string "Uh-huh, {STR_VAR_1} it is!\n" - .string "Si, bueno!\l" - .string "I’ll get it taught, like, ka-blam!\p" - .string "All right, thanks, as always!\n" - .string "Adios!$" - -gText_082C086E:: @ 82C086E - .string "{PLAYER}{STRING 5}, it’s completely wild!\p" - .string "My POKéMON!\n" - .string "It learned six moves!\p" - .string "Of course I’m lying!\n" - .string "Wahahaha!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at choosing moves\l" - .string "for my POKéMON.\p" - .string "So, how about deciding for me which\n" - .string "kind of move I should teach?\p" - .string "{STR_VAR_2} or {STR_VAR_3}--which\n" - .string "would go with my {STR_VAR_1} best?$" - -gText_082C0982:: @ 82C0982 - .string "Okay, so it’s {STR_VAR_1} you chose?\n" - .string "I’ll choose another move, then!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks, master!\n" - .string "I hope you’ll keep teaching me!$" - -gText_082C0A1D:: @ 82C0A1D - .string "A-H-O-Y!\n" - .string "And that spells ahoy!\p" - .string "The rappin’ SAILOR am I!\n" - .string "I’m always with it, don’t ask me why.\p" - .string "Today, I have a move question\n" - .string "that begs your suggestion!\p" - .string "{STR_VAR_2} and {STR_VAR_3} are\n" - .string "the moves. What would be the best\l" - .string "for my {STR_VAR_1} so it grooves?$" - -gText_082C0AFD:: @ 82C0AFD - .string "{STR_VAR_1}, you say, hey, hey!\n" - .string "I’ll go teach that right away!\p" - .string "If it’s advice I ever need,\n" - .string "{PLAYER}, your word I’ll always heed!$" - -gText_082C0B6F:: @ 82C0B6F - .string "Oh, yeahah, if it isn’t {PLAYER}!\p" - .string "What should I do? Get your advice?\n" - .string "Why not? I’m already talking to you!\p" - .string "{PLAYER}, are you surprised by me?\n" - .string "I want your advice, can’t you see?\p" - .string "Are you receiving me?\n" - .string "You are receiving me!\p" - .string "My {STR_VAR_1}--what should it use?\n" - .string "It’s {STR_VAR_2} or {STR_VAR_3},\l" - .string "what do you choose?$" - -gText_082C0C7D:: @ 82C0C7D - .string "If that {STR_VAR_1} is the best,\n" - .string "I’ll do as you suggest!\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me.\p" - .string "See you again, my smart friend!$" - -gText_082C0D0B:: @ 82C0D0B - .string "Gahack! Gaah! Oh, {PLAYER}{STRING 5}…\n" - .string "I have this lousy cold, I do…\p" - .string "I want to pick a move for my POKéMON,\n" - .string "but I’m not up to it…\p" - .string "So, things being this way,\n" - .string "I need you to decide for me.\p" - .string "{PLAYER}{STRING 5}, if I had to choose between\n" - .string "{STR_VAR_2} and {STR_VAR_3} for\l" - .string "my {STR_VAR_1}, which would it be?$" - -gText_082C0DFE:: @ 82C0DFE - .string "Hm, {STR_VAR_1}, all right. Cough!\n" - .string "I’ll go teach it when I get better.\p" - .string "I hope I can keep hitting you up\n" - .string "for help like this.$" - -gText_082C0E71:: @ 82C0E71 - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}…?\p" - .string "Please, don’t look at me that way.\n" - .string "I’m getting all flustered…\l" - .string "I… I need your advice.\p" - .string "I… I’m really embarrassed, but I can’t\n" - .string "decide what move I should teach\l" - .string "my POKéMON.\p" - .string "It’s for my {STR_VAR_1}.\n" - .string "If the choices were {STR_VAR_2} or\l" - .string "{STR_VAR_3}, which would be better?$" - -gText_082C0F6D:: @ 82C0F6D - .string "Oh… Okay!\n" - .string "I’ll try that {STR_VAR_1}.\p" - .string "I hope I can teach that move…\n" - .string "This is so nerve-racking…\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "If we meet again, I hope you will be\l" - .string "as helpful.$" - -gText_082C1003:: @ 82C1003 - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really real?\p" - .string "Perhaps you’re one of those popular\n" - .string "mimics?\p" - .string "No, no, if you are real, it’s fine.\n" - .string "No need to be upset, I assure you!\p" - .string "Incidentally, I would like to obtain\n" - .string "your advice.\p" - .string "It’s about my {STR_VAR_1}.\p" - .string "Which move would be better for it to\n" - .string "use, {STR_VAR_2} or {STR_VAR_3}?$" - -gText_082C1122:: @ 82C1122 - .string "{STR_VAR_1}?\n" - .string "There’s no question about that?\p" - .string "I see. If that’s the case, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I do hope it is something even\n" - .string "my POKéMON can learn.\p" - .string "Let us meet again!$" - -gText_082C11D1:: @ 82C11D1 - .string "Oh… {PLAYER}?\n" - .string "It is {PLAYER}!\l" - .string "Oh! Sniff…sob… Please, listen!\p" - .string "I… When I battle, I get so nervous,\n" - .string "I can’t help crying even if I win…\p" - .string "I wish I could say something cool\n" - .string "when I win…\p" - .string "Please, please, {PLAYER}!\n" - .string "Could you maybe teach me something\l" - .string "cool to say when I win so I don’t cry?$" - -gText_082C12D5:: @ 82C12D5 - .string "{STR_VAR_1}\p" - .string "Awesome! Wicked! Awoooh!\n" - .string "It’s really cool!\p" - .string "Oh… I’m sorry…\n" - .string "I’m so happy, I’m crying…\p" - .string "Snivel… {PLAYER}!\n" - .string "Thank you so much for everything!\p" - .string "I will battle the best I can for\n" - .string "your sake, {PLAYER}!\p" - .string "{PLAYER}…\n" - .string "Next time… We should battle!$" - -gText_082C13AB:: @ 82C13AB - .string "Yay! It’s {PLAYER}! Hello!\n" - .string "I wanted to ask you something!\p" - .string "I want to say something cool when\n" - .string "I win a match.\p" - .string "Do you have a cool saying that\n" - .string "you could recommend?$" - -gText_082C1444:: @ 82C1444 - .string "{STR_VAR_1}\p" - .string "Oh, wow! That is so cool!\n" - .string "Okay, I’ll say that!\p" - .string "Thanks for teaching me all this time!\n" - .string "I’m going to do the best I can\l" - .string "wherever I go from now on!\p" - .string "When we meet again, it’ll be for\n" - .string "a battle!$" - -gText_082C1501:: @ 82C1501 - .string "{PLAYER}, hello!\p" - .string "My POKéMON and I are ready for\n" - .string "anything, except for one thing.\p" - .string "I think it would be good if I had\n" - .string "something to shout when I win.\p" - .string "Could you think up something good\n" - .string "to say?$" - -gText_082C15B6:: @ 82C15B6 - .string "{STR_VAR_1}\p" - .string "…Cool!\n" - .string "I will use that!\p" - .string "I’m going out to battle all over\n" - .string "the place.\p" - .string "Who knows, I may even get to battle\n" - .string "you one day, {PLAYER}.\p" - .string "Next time, let’s meet at a place\n" - .string "of battle!$" - -gText_082C165E:: @ 82C165E - .string "Hello, {PLAYER}…\n" - .string "I’m sorry to bug you, but I’m hopeless…\p" - .string "Even when…\n" - .string "Even when I win, I don’t have anything\l" - .string "special to say…\p" - .string "I know that it doesn’t mean anything\n" - .string "to you, {PLAYER}.\p" - .string "But it means a lot to me…\p" - .string "Please, {PLAYER}, what should I say\n" - .string "if I win a battle?$" - -gText_082C174F:: @ 82C174F - .string "{STR_VAR_1}\p" - .string "That’s inspired…\p" - .string "Uh… Is it okay for someone like me\n" - .string "to even say that?\p" - .string "No! I’ll do my best!\p" - .string "{PLAYER}, thank you so much for\n" - .string "putting up with me for so long…\p" - .string "I promise to do my best from now on.\p" - .string "I’m sure you’ll quickly forget about\n" - .string "someone like me, but let’s meet\l" - .string "somewhere again!$" - -gText_082C1862:: @ 82C1862 - .string "Oh, {PLAYER}{STRING 5}.\n" - .string "There’s something I want you to hear.\p" - .string "I know that I don’t always sound\n" - .string "nice or polite…\p" - .string "When I win a battle, I think I come\n" - .string "across as being arrogant.\p" - .string "I don’t want people to dislike me,\n" - .string "so I want to say something nice to\l" - .string "someone I beat.\p" - .string "But I can’t think of anything good!\n" - .string "Could you think something up for me?$" - -gText_082C19A0:: @ 82C19A0 - .string "{STR_VAR_1}\p" - .string "Not bad!\n" - .string "Yup, that’s what I’ll go with!\p" - .string "I’m going to hit the road and do what\n" - .string "I can with what you taught me in\l" - .string "my head and heart.\p" - .string "I’m sorry that I’ve been so pushy\n" - .string "with you!\p" - .string "Next time, we battle, okay?\n" - .string "See you!$" - -gText_082C1A76:: @ 82C1A76 - .string "Oh, I can’t get over how busy I am!\n" - .string "Oh, hey, I was looking for you, {PLAYER}{STRING 5}.\p" - .string "Are you well as usual?\n" - .string "Things haven’t changed for me at all.\p" - .string "I’ve got running, fighting, and mapping\n" - .string "to do. Why am I so busy?\p" - .string "But even though I’m busy, it’d be rude\n" - .string "to just turn on my heels and walk away\l" - .string "from a win without saying a word.\p" - .string "So, what would be a cool saying to\n" - .string "underline my coolness when I’m done\l" - .string "and walking away? {PLAYER}{STRING 5}, help me!$" - -gText_082C1C16:: @ 82C1C16 - .string "{STR_VAR_1}\p" - .string "Okay, gotcha.\n" - .string "I can find time to say that!\p" - .string "Honestly, I’m glad I met a good mentor\n" - .string "like you.\p" - .string "I’m going to make time somehow so\n" - .string "I can get into battling.\p" - .string "Thanks for everything, {PLAYER}{STRING 5}!\n" - .string "We have to battle, you and me, one day!$" - -gText_082C1CF5:: @ 82C1CF5 - .string "I lucked out again!\n" - .string "{PLAYER}! Am I glad to see you!\l" - .string "Like usual, I need your advice!\p" - .string "Drum roll, please!\n" - .string "The last question I have is…\p" - .string "If I win a battle and want to end\n" - .string "it with a cool flourish, what\l" - .string "should I say?$" - -gText_082C1DC1:: @ 82C1DC1 - .string "{STR_VAR_1}\p" - .string "That… That’s fabulous!\n" - .string "It’s dignified and cool! I claim it!\p" - .string "…Listen, I think I’m getting decent\n" - .string "at this, huh?\p" - .string "So, I’m thinking of challenging other\n" - .string "TRAINERS from now on.\p" - .string "{PLAYER}, your advice really helped me.\p" - .string "Maybe one day, there’ll be a time when\n" - .string "we battle!\p" - .string "Thank you for everything!$" - -gText_082C1EDC:: @ 82C1EDC - .string "Oh, {PLAYER}.\n" - .string "I’m so glad I met you!\p" - .string "I no longer have any concerns with\n" - .string "regard to my POKéMON.\p" - .string "It’s myself that worries me…\p" - .string "Do you know how a TRAINER says\n" - .string "a few things upon winning a battle?\p" - .string "Definitely, I wish I could do that,\n" - .string "too!\p" - .string "Please, what should I say when\n" - .string "I win a battle?$" - -gText_082C1FEC:: @ 82C1FEC - .string "{STR_VAR_1}\p" - .string "Ah! That saying! It refreshes me\n" - .string "and makes me feel reborn!\p" - .string "I must use that right away!\p" - .string "And now, I must take my leave,\n" - .string "{PLAYER}…\p" - .string "I will go out to battle many others,\n" - .string "but never will I forget your teachings.\p" - .string "Perhaps one day…\n" - .string "Farewell!$" - -gText_082C20D1:: @ 82C20D1 - .string "Eek! I spotted {PLAYER}!\n" - .string "I… I’m overjoyed to see you!\p" - .string "Oh-oh-oh! There’s something I just\n" - .string "had to ask you!\p" - .string "A little while ago, I won a battle.\n" - .string "That part was giddying!\p" - .string "But it made me so overjoyed that\n" - .string "I choked up and couldn’t say a thing!\p" - .string "So now, {PLAYER}, please, I want you to\n" - .string "think up an exit line for when I win!$" - -gText_082C21FF:: @ 82C21FF - .string "{STR_VAR_1}\p" - .string "Waaaaah!\n" - .string "I’m going to say that?!\l" - .string "I… I’m delirious with joy!\p" - .string "Th-th-thank you!\n" - .string "I have nothing left to regret now!\p" - .string "I’m going to travel now and battle\n" - .string "all sorts of people.\p" - .string "Everything, I owe it to you, {PLAYER}.\n" - .string "Really, really, thank you!\p" - .string "I’ve got to go now, but let’s meet\n" - .string "in battle one day!$" - -gText_082C231C:: @ 82C231C - .string "Hola, bueno!\n" - .string "{PLAYER}{STRING 5}!\p" - .string "You know, I’m getting the itch to roam\n" - .string "and battle where I may.\p" - .string "But before I do, I want your advice\n" - .string "once again, please!\p" - .string "If I were to win a battle, what would\n" - .string "be a good boast I could say to my\l" - .string "fallen TRAINER opponent?$" - -gText_082C2407:: @ 82C2407 - .string "{STR_VAR_1}\p" - .string "Uh-huh, that’s sweet!\n" - .string "Si, bueno!\l" - .string "I’ll try saying that, like, ham!\p" - .string "And now, it’s time to say good-bye!\n" - .string "Thanks for all sorts of things!\p" - .string "Give me a battle one day, OK?\n" - .string "Adios!$" - -gText_082C24B5:: @ 82C24B5 - .string "{PLAYER}{STRING 5}, there’s big trouble!\p" - .string "When I win a battle, I brag about it\n" - .string "for an hour at least!\p" - .string "Of course I’m lying!\n" - .string "Wahahaha!\p" - .string "This is no lie, though.\n" - .string "I’m not very good at chatting.\p" - .string "So, how about deciding for me what\n" - .string "I should say after winning a battle,\l" - .string "master?$" - -gText_082C25B1:: @ 82C25B1 - .string "{STR_VAR_1}\p" - .string "That’s what I should say, huh?\n" - .string "Then, I’ll stay away from that!\p" - .string "Just kidding!\n" - .string "I’ll obey your teaching, master!\p" - .string "Thanks for teaching me all this time,\n" - .string "master!\p" - .string "I’m finally understanding what being\n" - .string "a TRAINER is about.\p" - .string "I’m going to go out and win battles\n" - .string "against any TRAINER.\p" - .string "Maybe it’ll be you one day, master!\p" - .string "That’s all!\n" - .string "Farewell, my master!$" - -gText_082C2707:: @ 82C2707 - .string "A-H-O-Y!\n" - .string "And that spells ahoy!\p" - .string "The rappin’ SAILOR am I!\n" - .string "This will be my last question,\l" - .string "don’t you cry!\p" - .string "It’s a saying question\n" - .string "that begs your suggestion!\p" - .string "If I win a match, what can I say\n" - .string "in a real cool way?$" - -gText_082C27D4:: @ 82C27D4 - .string "{STR_VAR_1}\p" - .string "Perfect! That’s what I’ll use.\n" - .string "I was right to make you choose!\p" - .string "And now, I think it’d be best,\n" - .string "if I were to fly the nest!\p" - .string "Thanks for all you taught me.\n" - .string "I’ll be off on a battle spree!\p" - .string "B-O-N-V-O-Y-A-G-E!\n" - .string "And that spells bon voyage,\l" - .string "to you this is my homage!$" - -gText_082C28D6:: @ 82C28D6 - .string "Oh, yeah, {PLAYER}!\n" - .string "I found you again today!\p" - .string "What should I do? Ask you again?\n" - .string "Why not? I’m already asking you!\p" - .string "Anyways, {PLAYER}…\n" - .string "Are you receiving me?\l" - .string "You are receiving me!\l" - .string "I need some more advice for me!\p" - .string "It’s about what I should yell.\n" - .string "Something cool to holler when\l" - .string "a battle ends well.\p" - .string "Come on, I wanna hear you say it!$" - -gText_082C2A0B:: @ 82C2A0B - .string "{STR_VAR_1}\p" - .string "All right, all right!\n" - .string "I’ll use that because it’s so tight!\p" - .string "I’m out of things to ask you.\n" - .string "Waving bye is all that’s left to do.\p" - .string "But maybe one day we’ll meet, with one\n" - .string "destined to go down in defeat.\p" - .string "But, it really is time to say farewell.\p" - .string "Well, {PLAYER}, I have to roam free,\n" - .string "but don’t you forget about me!\p" - .string "Take care, {PLAYER}!\n" - .string "Love ya!$" - -gText_082C2B50:: @ 82C2B50 - .string "{PLAYER}{STRING 5}, I’m finished…\n" - .string "My nose won’t stop dripping…\p" - .string "I was trying to think up something\n" - .string "cool to say when I win a battle.\p" - .string "It inspired me so much, it made me cry,\n" - .string "and now my nose won’t stop running…\p" - .string "So, things being this way,\n" - .string "I need you to decide for me, {PLAYER}{STRING 5}.\p" - .string "When I win a battle,\n" - .string "what should I say?$" - -gText_082C2C77:: @ 82C2C77 - .string "{STR_VAR_1}\p" - .string "… … …That’s good.\n" - .string "No, it’s awe inspiring!\l" - .string "It’s bringing fresh tears to my eyes!\p" - .string "But in spite of my tears and runny\n" - .string "nose, I will use that saying!\p" - .string "I’m plumb out of things to ask you,\n" - .string "{PLAYER}{STRING 5}.\p" - .string "From now on, we’re rivals!\n" - .string "Thanks for everything!$" - -gText_082C2D67:: @ 82C2D67 - .string "Er… Um…\n" - .string "{PLAYER}{STRING 5}…\p" - .string "Please, don’t look at me that way.\n" - .string "You’re making me all nervous.\p" - .string "I… I need your advice again.\n" - .string "I’ll make it my last, though…\p" - .string "It’s really embarrassing to ask,\n" - .string "but what if I win a battle?\l" - .string "What should I say?$" - -gText_082C2E41:: @ 82C2E41 - .string "{STR_VAR_1}\p" - .string "Oh… Okay!\n" - .string "I’ll try to say that!\l" - .string "I might be too nervous to say it…\p" - .string "Thank you, {PLAYER}{STRING 5}.\n" - .string "I have to say good-bye now.\p" - .string "I’ll obey all that you’ve taught me,\n" - .string "{PLAYER}{STRING 5}, and do the best I can.$" - -gText_082C2EF5:: @ 82C2EF5 - .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" - .string "But are you really?\l" - .string "Perhaps a clever {PLAYER} DOLL?\p" - .string "Oh, no, no, no, don’t worry!\n" - .string "If you really are real, please\l" - .string "forget about my rudeness.\p" - .string "No need to be so angry. All I wish for\n" - .string "is more of your fine advice.\p" - .string "It concerns a saying.\p" - .string "More precisely, what should I say\n" - .string "if I win a battle?$" - -gText_082C3023:: @ 82C3023 - .string "{STR_VAR_1}\p" - .string "… … … … … …\n" - .string "When I win a match…\p" - .string "{STR_VAR_1}\p" - .string "…Are you serious?\p" - .string "I see. If you are serious, that’s fine.\n" - .string "I thank you for your time.\p" - .string "I do hope even I will be able to\n" - .string "put that saying to good use.\p" - .string "I seem to have run dry on what advice\n" - .string "I need.\p" - .string "I do believe it’s high time I bid you\n" - .string "farewell and strike out on my own.\p" - .string "Thank you, my mentor!\n" - .string "I apologize for my skepticism!$" - + .include "data/scripts/apprentice.inc" + gBattleDomeOpponentPotential1:: .string "The best candidate to be a champ!$" diff --git a/data/maps/BattleFrontier_BattleTowerLobby/events.inc b/data/maps/BattleFrontier_BattleTowerLobby/events.inc index 73bdeeb2b..740f01c0e 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/events.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/events.inc @@ -4,7 +4,7 @@ BattleFrontier_BattleTowerLobby_EventObjects: @ 853B638 object_event 3, EVENT_OBJ_GFX_WOMAN_7, 0, 17, 8, 3, MOVEMENT_TYPE_WANDER_AROUND, 1, 1, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_23EFB5, 0 object_event 4, EVENT_OBJ_GFX_BOY_1, 0, 15, 9, 3, MOVEMENT_TYPE_WANDER_AROUND, 1, 1, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_23EFBE, 0 object_event 5, EVENT_OBJ_GFX_REPORTER_F, 0, 11, 9, 3, MOVEMENT_TYPE_FACE_RIGHT, 0, 0, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_28CB96, 918 - object_event 6, EVENT_OBJ_GFX_HIPSTER, 0, 1, 5, 3, MOVEMENT_TYPE_FACE_DOWN, 1, 1, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_2B688D, 701 + object_event 6, EVENT_OBJ_GFX_HIPSTER, 0, 1, 5, 3, MOVEMENT_TYPE_FACE_DOWN, 1, 1, 0, 0, EventScript_Apprentice, 701 object_event 7, EVENT_OBJ_GFX_TEALA, 0, 10, 5, 3, MOVEMENT_TYPE_FACE_DOWN, 0, 0, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_23EA9F, 0 object_event 8, EVENT_OBJ_GFX_TEALA, 0, 14, 5, 3, MOVEMENT_TYPE_FACE_DOWN, 0, 0, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_23EC08, 0 object_event 9, EVENT_OBJ_GFX_TEALA, 0, 18, 5, 3, MOVEMENT_TYPE_FACE_DOWN, 0, 0, 0, 0, BattleFrontier_BattleTowerLobby_EventScript_23ED74, 0 diff --git a/data/scripts/apprentice.inc b/data/scripts/apprentice.inc new file mode 100644 index 000000000..1021fb8b2 --- /dev/null +++ b/data/scripts/apprentice.inc @@ -0,0 +1,2978 @@ +#include "constants/apprentice.h" + +EventScript_Apprentice:: @ 82B688D + lock + faceplayer + setvar VAR_0x8004, 0 + special sub_81A085C + compare VAR_RESULT, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6900 + setvar VAR_0x8004, 10 + special sub_81A085C + compare VAR_0x8004, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B68BE + checkflag FLAG_0x934 + goto_eq Script_Apprentice_ReleaseAndEnd + +BattleFrontier_BattleTowerLobby_EventScript_2B68BE: + setvar VAR_0x8004, 11 + special sub_81A085C + compare VAR_RESULT, 2 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69D3 + compare VAR_RESULT, 4 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6ACF + compare VAR_RESULT, 3 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C77 + compare VAR_RESULT, 1 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6D5C + compare VAR_RESULT, 5 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6DD4 + release + releaseall + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6900: + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 6 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 0 + special sub_81A085C + waitstate + +BattleFrontier_BattleTowerLobby_EventScript_2B6925: + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_YES_NO + special sub_81A085C + waitstate + compare VAR_RESULT, 1 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69BB + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 2 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_WHICH_LEVEL + special sub_81A085C + waitstate + setvar VAR_0x8004, 1 + setorcopyvar VAR_0x8005, VAR_RESULT + addvar VAR_0x8005, 1 + special sub_81A085C + setvar VAR_0x8004, 3 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 8 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 3 + special sub_81A085C + waitstate + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B69BB: + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 1 + special sub_81A085C + waitstate + goto BattleFrontier_BattleTowerLobby_EventScript_2B6925 + +BattleFrontier_BattleTowerLobby_EventScript_2B69D3: + setvar VAR_0x8004, 14 + setvar VAR_0x8005, 2 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 0 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 1 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 6 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_2SPECIES + special sub_81A085C + waitstate + copyvar VAR_0x8005, VAR_RESULT + compare VAR_0x8005, 0 + call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6ABA + compare VAR_0x8005, 1 + call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC0 + setvar VAR_0x8004, 12 + special sub_81A085C + copyvar VAR_0x8006, VAR_RESULT + setvar VAR_0x8004, 13 + special sub_81A085C + setvar VAR_0x8004, 5 + special sub_81A085C + setvar VAR_0x8004, 12 + special sub_81A085C + compare VAR_RESULT, 3 + call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC6 + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + copyvar VAR_0x8006, VAR_0x8007 + special sub_81A085C + setvar VAR_0x8004, 15 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 7 + special sub_81A085C + waitstate + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6ABA: + setvar VAR_0x8007, 0 + return + +BattleFrontier_BattleTowerLobby_EventScript_2B6AC0: + setvar VAR_0x8007, 1 + return + +BattleFrontier_BattleTowerLobby_EventScript_2B6AC6: + setvar VAR_0x8004, 4 + special sub_81A085C + return + +BattleFrontier_BattleTowerLobby_EventScript_2B6ACF: + setvar VAR_0x8004, 14 + setvar VAR_0x8005, 4 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 2 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 10 + special sub_81A085C + waitstate + setvar VAR_0x8004, 15 + special sub_81A085C + +BattleFrontier_BattleTowerLobby_EventScript_2B6B09: + fadescreen 1 + setvar VAR_RESULT, 0 + setvar VAR_0x8004, 19 + special sub_81A085C + waitstate + compare VAR_RESULT, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B81 + setvar VAR_0x8004, 20 + special sub_81A085C + compare VAR_RESULT, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C0C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 5 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 12 + special sub_81A085C + waitstate + setvar VAR_0x8004, 5 + special sub_81A085C + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6B81: + setvar VAR_0x8004, 14 + setvar VAR_0x8005, 4 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 2 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 13 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_GIVE + special sub_81A085C + waitstate + setvar VAR_0x8004, 15 + special sub_81A085C + compare VAR_RESULT, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 + +BattleFrontier_BattleTowerLobby_EventScript_2B6BD4: + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 14 + special sub_81A085C + waitstate + setvar VAR_0x8004, 5 + special sub_81A085C + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6C0C: + setvar VAR_0x8004, 14 + setvar VAR_0x8005, 4 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 5 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 2 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 16 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_GIVE + special sub_81A085C + waitstate + setvar VAR_0x8004, 15 + special sub_81A085C + compare VAR_RESULT, 0 + goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 + goto BattleFrontier_BattleTowerLobby_EventScript_2B6BD4 + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6C77: + setvar VAR_0x8004, 14 + setvar VAR_0x8005, 3 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 2 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 3 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 2 + setvar VAR_0x8006, 4 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 8 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_MOVES + special sub_81A085C + waitstate + copyvar VAR_0x8005, VAR_RESULT + compare VAR_0x8005, 0 + call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D50 + compare VAR_0x8005, 1 + call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D56 + setvar VAR_0x8004, 17 + special sub_81A085C + setvar VAR_0x8004, 5 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + copyvar VAR_0x8006, VAR_0x8007 + special sub_81A085C + setvar VAR_0x8004, 15 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 9 + special sub_81A085C + waitstate + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6D50: + setvar VAR_0x8007, 3 + return + +BattleFrontier_BattleTowerLobby_EventScript_2B6D56: + setvar VAR_0x8007, 4 + return + +BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 4 + special sub_81A085C + waitstate + setvar VAR_0x8004, 7 + setvar VAR_0x8005, APPRENTICE_ASK_3SPECIES + special sub_81A085C + waitstate + copyvar VAR_0x8005, VAR_RESULT + setvar VAR_0x8004, 18 + special sub_81A085C + setvar VAR_0x8004, 5 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 9 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 5 + special sub_81A085C + waitstate + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 11 + special sub_81A085C + waitstate + setvar VAR_0x8004, 25 + special sub_81A085C + setvar VAR_0x8004, 19 + call BattleFrontier_BattleTowerLobby_EventScript_271E7C + lock + faceplayer + setvar VAR_0x8004, 21 + special sub_81A085C + setvar VAR_0x8004, 16 + setvar VAR_0x8005, 0 + setvar VAR_0x8006, 7 + special sub_81A085C + setvar VAR_0x8004, 8 + setvar VAR_0x8005, 1 + setvar VAR_0x8006, 15 + special sub_81A085C + waitstate + setvar VAR_0x8004, 9 + special sub_81A085C + call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + release + releaseall + switch VAR_FACING + case 2, Script_Apprentice_LeaveGoRight + goto Script_Apprentice_Leave + end + +BattleFrontier_BattleTowerLobby_EventScript_2B6E4D: + setflag FLAG_0x2BD + setflag FLAG_0x934 + return + +Script_Apprentice_LeaveGoRight: + setvar VAR_0x8004, 24 + special sub_81A085C + compare VAR_0x8004, 0 + goto_eq Script_Apprentice_End + applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E94 + waitmovement 0 + end + +Script_Apprentice_Leave: + setvar VAR_0x8004, 24 + special sub_81A085C + compare VAR_0x8004, 0 + goto_eq Script_Apprentice_End + applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E95 + waitmovement 0 + end + +Script_Apprentice_ReleaseAndEnd: + release + releaseall + end + +Script_Apprentice_End: + end + +BattleFrontier_BattleTowerLobby_Movement_2B6E94: @ 82B6E94 + walk_fast_right + +BattleFrontier_BattleTowerLobby_Movement_2B6E95: @ 82B6E95 + walk_fast_down + walk_fast_down + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + walk_fast_right + set_invisible + slide_down + slide_down + slide_down + step_end + +gText_082B6EA5:: @ 82B6EA5 + .string "Um, I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" + .string "Snivel… This tension is getting to me…$" + +gText_082B6EEC:: @ 82B6EEC + .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" + .string "Here we come!$" + +gText_082B6F16:: @ 82B6F16 + .string "I’m the no. {STR_VAR_2} apprentice of {STR_VAR_1}!\n" + .string "Accept my challenge!$" + +gText_082B6F4C:: @ 82B6F4C + .string "Um… I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice…\n" + .string "Do you think someone like me can win?$" + +gText_082B6F92:: @ 82B6F92 + .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" + .string "I’ll let you challenge me!$" + +gText_082B6FC9:: @ 82B6FC9 + .string "I’m horribly busy, but I also happen\n" + .string "to be {STR_VAR_1}’s no. {STR_VAR_2} apprentice.$" + +gText_082B700C:: @ 82B700C + .string "I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" + .string "Glad to meet you!$" + +gText_082B703A:: @ 82B703A + .string "I serve as {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" + .string "May I begin?$" + +gText_082B706A:: @ 82B706A + .string "Eek! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" + .string "I’ll do my best!$" + +gText_082B709C:: @ 82B709C + .string "Yeehaw! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" + .string "Put ’em up!$" + +gText_082B70CC:: @ 82B70CC + .string "I’m {STR_VAR_1}’s 1,000th apprentice!\n" + .string "Actually, I’m no. {STR_VAR_2}! Here goes!$" + +gText_082B710A:: @ 82B710A + .string "Yeah, I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice!\n" + .string "Let’s get rockin’ and a-rollin’!$" + +gText_082B714D:: @ 82B714D + .string "Yippee-yahoo! I’m what you call\n" + .string "{STR_VAR_1}’s no. {STR_VAR_2} apprentice!$" + +gText_082B7185:: @ 82B7185 + .string "Cough! I’m {STR_VAR_1}’s no. {STR_VAR_2} apprentice.\n" + .string "Good to meet you! Cough!$" + +gText_082B71C1:: @ 82B71C1 + .string "This is nerve-racking…\n" + .string "I’m the no. {STR_VAR_2} apprentice of {STR_VAR_1}.$" + +gText_082B71F9:: @ 82B71F9 + .string "I am {STR_VAR_1}’s no. {STR_VAR_2} apprentice,\n" + .string "and that’s no lie.$" + +gText_082B7229:: @ 82B7229 + .string "Are you… {PLAYER}?\n" + .string "Oh! Sniff…sob…\p" + .string "Oh! S-sorry…\n" + .string "I’m so nervous, I can’t help crying…\p" + .string "I’m {STR_VAR_1}, and I really look up\n" + .string "to you, {PLAYER}.\p" + .string "I… I had this dream of one day meeting\n" + .string "you and asking you about POKéMON.\p" + .string "Please, please, {PLAYER}!\n" + .string "Please teach me about POKéMON!$" + +gText_082B731C:: @ 82B731C + .string "Oh… B-but…\n" + .string "Snivel… Waaaaaaah!\p" + .string "Please!\n" + .string "I’m begging you, please!$" + +gText_082B735B:: @ 82B735B + .string "Oh, really? You will?\n" + .string "Awesome! Wicked! Awoooh!\p" + .string "Oh… I’m sorry…\n" + .string "I’m so happy, I’m crying…\p" + .string "Um… Then please tell me!\n" + .string "It’s about the BATTLE TOWER.\p" + .string "Which would be better for me: Level 50\n" + .string "or the Open Level?$" + +gText_082B7423:: @ 82B7423 + .string "{STR_VAR_1}?\n" + .string "Waaaaah!\p" + .string "Oh! I’m so sorry!\n" + .string "You’ve made me happy by choosing\l" + .string "the level for me, and it’s made me cry…\p" + .string "Snivel…\n" + .string "Thank you so much!\l" + .string "Please talk with me again!$" + +gText_082B74C1:: @ 82B74C1 + .string "Wowee! You’re {PLAYER}, aren’t you?\n" + .string "You’re awesomely strong, aren’t you?\p" + .string "I’m {STR_VAR_1}!\n" + .string "I just became a TRAINER!\p" + .string "Please, {PLAYER}!\n" + .string "Can you be my teacher and tell me\l" + .string "lots about being a TRAINER?$" + +gText_082B756F:: @ 82B756F + .string "Aww, why?\n" + .string "Oh, please? Pretty please?\l" + .string "Please be my teacher, please!$" + +gText_082B75B2:: @ 82B75B2 + .string "Yay! Great!\p" + .string "The first thing I wanted to ask you is\n" + .string "about the BATTLE TOWER!\p" + .string "The Level 50 and Open Level Rooms…\n" + .string "Which would be perfect for me?$" + +gText_082B763F:: @ 82B763F + .string "{STR_VAR_1}, huh? That’s true!\n" + .string "I’ll do my best there!\p" + .string "If we meet here again, please teach\n" + .string "me something else, teacher!$" + +gText_082B76AC:: @ 82B76AC + .string "Um… Are you {PLAYER}?\n" + .string "My name is {STR_VAR_1}.\p" + .string "I want to become a POKéMON TRAINER,\n" + .string "but I don’t know what to do…\p" + .string "So I thought maybe I could ask you for\n" + .string "advice because you’re so famous.\p" + .string "{PLAYER}, could you give me advice?$" + +gText_082B7772:: @ 82B7772 + .string "Oh, but…\p" + .string "I sincerely want to become a POKéMON\n" + .string "TRAINER!\p" + .string "Please, can you answer my questions?$" + +gText_082B77CE:: @ 82B77CE + .string "Thank you!\n" + .string "Here’s my first question right away!\p" + .string "The BATTLE TOWER has two levels,\n" + .string "Level 50 and Open Level, right?\p" + .string "Which level do you think is more\n" + .string "suitable for me?$" + +gText_082B7871:: @ 82B7871 + .string "Oh, the {STR_VAR_1} challenge?\n" + .string "Understood!\p" + .string "If I have another question, I’ll come\n" + .string "back here for your advice!$" + +gText_082B78D4:: @ 82B78D4 + .string "Oh? Huh? You’re…\n" + .string "No, that can’t be true.\p" + .string "There isn’t any way that someone\n" + .string "like me could meet {PLAYER}.\p" + .string "…You really are {PLAYER}?\n" + .string "I can’t believe I’m talking to you!\p" + .string "When something this good happens,\n" + .string "only terrible things will happen to me\l" + .string "now, I just know it…\p" + .string "…I’m sorry…\n" + .string "I’m… {STR_VAR_1}…\p" + .string "There isn’t anything special about\n" + .string "me that I can be proud of…\p" + .string "I shouldn’t even say anything about\n" + .string "myself because you’ll forget…\p" + .string "I had this dream that if I ever met\n" + .string "you, {PLAYER}, that maybe I could ask\l" + .string "you for advice as a TRAINER.\p" + .string "But I don’t think you would agree\n" + .string "to that.\p" + .string "…Or will you be so kind as to give\n" + .string "me advice?$" + +gText_082B7B1A:: @ 82B7B1A + .string "I knew it…\p" + .string "It had to happen because I’m such\n" + .string "a really boring nobody…\p" + .string "But I thought just maybe…\n" + .string "You won’t reconsider, will you?\p" + .string "But I can’t give up just like that.\n" + .string "I’ll ask you while I’m still lucky!\p" + .string "Please, will you be so kind as to give\n" + .string "me advice?$" + +gText_082B7C13:: @ 82B7C13 + .string "Really? I can’t believe it!\n" + .string "I can’t believe you’ll advise me!\l" + .string "I… I’m so happy…\p" + .string "What I want to ask you is really\n" + .string "trivial, but I can’t decide…\p" + .string "At the BATTLE TOWER, they let you\n" + .string "choose Level 50 or Open Level.\p" + .string "Which course do you think even I may\n" + .string "have a chance at?$" + +gText_082B7D18:: @ 82B7D18 + .string "{STR_VAR_1}? Okay!\n" + .string "But do you really think someone like\l" + .string "me would have a chance?\p" + .string "I’ll do my best, even though I don’t\n" + .string "think it will work.\p" + .string "Thank you very much for spending\n" + .string "time with someone like me.$" + +gText_082B7DD4:: @ 82B7DD4 + .string "Oh! You’re {PLAYER}{STRING 5}, aren’t you?\p" + .string "I’ve heard that you’re tough at\n" + .string "POKéMON!\p" + .string "I’m {STR_VAR_1}!\n" + .string "I’ll be your friend!\p" + .string "Did you know?\p" + .string "You can’t win at the BATTLE FRONTIER\n" + .string "if all you know is what they teach at\l" + .string "the TRAINER’S SCHOOL.\p" + .string "I’m willing to listen to your advice.\n" + .string "You’ll agree, of course?$" + +gText_082B7EE5:: @ 82B7EE5 + .string "Huh? Why are you refusing me?\n" + .string "It’s me who’s asking you!\l" + .string "You have to reconsider!$" + +gText_082B7F35:: @ 82B7F35 + .string "Okay, so there is this something.\n" + .string "I want you to decide it for me.\p" + .string "You know that the BATTLE TOWER has\n" + .string "Level 50 and Open Level Rooms?\p" + .string "Which do you think would be good\n" + .string "for me, {PLAYER}{STRING 5}?$" + +gText_082B7FE8:: @ 82B7FE8 + .string "Okay, {STR_VAR_1} is suitable for me?\n" + .string "Thank you!\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082B8087:: @ 82B8087 + .string "Oh, hi, there! {PLAYER}{STRING 5}!\n" + .string "I know you because you’re famous!\l" + .string "Call me {STR_VAR_1}! Glad to meet you!\p" + .string "I’m a TRIATHLETE, so I keep myself\n" + .string "fit even while I raise POKéMON.\p" + .string "I’m also involved with other things\n" + .string "like work, napping, ballroom dancing…\p" + .string "Being this busy, it’s not so easy for\n" + .string "me to become a decent TRAINER.\p" + .string "So, I have a proposition!\p" + .string "There must be a reason why we met.\n" + .string "So, {PLAYER}{STRING 5}, how about sharing your\l" + .string "wisdom with me every so often?$" + +gText_082B822B:: @ 82B822B + .string "Oh, but, please?\n" + .string "A guy like me needs someone like\l" + .string "you, {PLAYER}{STRING 5}!\p" + .string "Honestly, I need your advice!$" + +gText_082B8286:: @ 82B8286 + .string "Thank you! That’s more like it!\n" + .string "So, let’s start with an easy one!\p" + .string "You know about the BATTLE TOWER’s\n" + .string "two courses, right?\l" + .string "You know, Level 50 and Open Level.\p" + .string "Me being a busy guy, which one should\n" + .string "I gear up for?$" + +gText_082B8356:: @ 82B8356 + .string "{STR_VAR_1}, huh? Okay, gotcha.\n" + .string "I’ll find time somehow and give it a go!\p" + .string "…Whoops, I’d better go to work!\n" + .string "Thanks! See you around!$" + +gText_082B83CE:: @ 82B83CE + .string "No way! Uh-uh!\n" + .string "Are you maybe the real {PLAYER}?\p" + .string "A-hah! Awesome! I’m {STR_VAR_1},\n" + .string "so pleased to meet you!\p" + .string "{PLAYER}, you’re very strong,\n" + .string "aren’t you?\p" + .string "Everyone’s talking about you!\p" + .string "Oh! I just had this great idea!\n" + .string "I’ll get advice off you, {PLAYER}!\l" + .string "I’m sure it will make me tougher!\p" + .string "Isn’t it a great idea?\n" + .string "Please, I want your advice!$" + +gText_082B84FC:: @ 82B84FC + .string "Ahahaha, you can pretend to be mean,\n" + .string "but you can’t fool me!\l" + .string "You really mean okay, don’t you?$" + +gText_082B8559:: @ 82B8559 + .string "Yay! I knew you’d have a big heart,\n" + .string "{PLAYER}!\p" + .string "What should I ask you first?\n" + .string "…Oh, I thought of something!\p" + .string "Drum roll, please!\n" + .string "The question I have is…\p" + .string "If I were to take a BATTLE TOWER\n" + .string "challenge, which way should I go?\p" + .string "Level 50 or Open Level?\n" + .string "Which suits me more?$" + +gText_082B8656:: @ 82B8656 + .string "Oh-oh-oh!\n" + .string "{STR_VAR_1}, you say!\l" + .string "Thank you for a totally cool reply!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082B86EA:: @ 82B86EA + .string "I beg your pardon, but…\n" + .string "Are you {PLAYER}?\p" + .string "I’m {STR_VAR_1}, and I am delighted to\n" + .string "make your acquaintance.\p" + .string "I have long been an admirer\n" + .string "of yours…\p" + .string "… … … … … …\p" + .string "Um… I hope you don’t find this\n" + .string "request too much of a burden, but…\p" + .string "May I become your apprentice,\n" + .string "{PLAYER}?$" + +gText_082B87DA:: @ 82B87DA + .string "Oh…!\p" + .string "… … … … … …\n" + .string "… … … … … …\p" + .string "…I must have fainted from shock.\n" + .string "I’m sorry, I must have misheard you.\p" + .string "Please! Please say that you will\n" + .string "accept me as your apprentice!$" + +gText_082B887C:: @ 82B887C + .string "Oh… I’m delighted!\p" + .string "I don’t wish to waste your time,\n" + .string "so please advise me on this.\p" + .string "I plan to take a BATTLE TOWER\n" + .string "challenge soon.\p" + .string "However, there are two levels…\p" + .string "Which would be most suitable for me?\n" + .string "Level 50 or Open Level?$" + +gText_082B8957:: @ 82B8957 + .string "{STR_VAR_1} is your choice!\n" + .string "I see. I will do my best!\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082B89C6:: @ 82B89C6 + .string "Eek! Eek! {PLAYER}!\n" + .string "You spoke to me!\l" + .string "I… I’m overjoyed!\p" + .string "Me! My name is {STR_VAR_1}!\n" + .string "I just became a TRAINER!\p" + .string "I’m delighted I met you, {PLAYER},\n" + .string "the big name in POKéMON circles!\p" + .string "Oh-oh-oh, I know!\n" + .string "May I ask a huge favor, {PLAYER}?\p" + .string "Please take me in as your apprentice!\n" + .string "I want to learn from you!$" + +gText_082B8ACF:: @ 82B8ACF + .string "Waaaah!\n" + .string "{PLAYER} turned me down…\l" + .string "It… It’s an invaluable experience!\p" + .string "{PLAYER}, please! I want to hear\n" + .string "an affirmative answer this time!\p" + .string "I beg you for your guidance!$" + +gText_082B8B66:: @ 82B8B66 + .string "Hieeeeh! {PLAYER} said yes!\n" + .string "{PLAYER} said yes!\p" + .string "I won’t be able to sleep tonight…\n" + .string "Thank you ever so much!\p" + .string "Then, here’s my question!\p" + .string "At the BATTLE TOWER, what is right\n" + .string "for me, Level 50 or Open Level?$" + +gText_082B8C20:: @ 82B8C20 + .string "{STR_VAR_1}! Perfectly understood!\n" + .string "I understand perfectly!\l" + .string "I’m deliriously delighted!\p" + .string "I hope you’ll be willing to teach me\n" + .string "some more another time.$" + +gText_082B8CAA:: @ 82B8CAA + .string "Whoa! Could you be…\n" + .string "Might you be… {PLAYER}{STRING 5}?!\l" + .string "That strong and famous TRAINER?\l" + .string "Well, hello, aren’t I just the luckiest!\p" + .string "Hello, the name’s {STR_VAR_1}!\p" + .string "I’ve been on the lookout for\n" + .string "a POKéMON teacher.\p" + .string "And with impeccably good timing,\n" + .string "along came you, {PLAYER}{STRING 5}!\p" + .string "So, there you have it, {PLAYER}{STRING 5}!\n" + .string "Let me apprentice under you!$" + +gText_082B8DD3:: @ 82B8DD3 + .string "Gwaaaah!\n" + .string "You’re quite cool and tough…\p" + .string "Don’t be that way, please.\n" + .string "I’m asking you!$" + +gText_082B8E24:: @ 82B8E24 + .string "Oh, yeah! That’s a solid reply!\n" + .string "Excellent, I might add!\p" + .string "So how about a first piece of advice\n" + .string "on the BATTLE TOWER?\p" + .string "If I were to go, what would be better?\n" + .string "Level 50 or Open Level?$" + +gText_082B8ED5:: @ 82B8ED5 + .string "Uh-huh, {STR_VAR_1} it is!\n" + .string "OK, A-OK!\l" + .string "I’ll go show my mettle, like, jam!\p" + .string "All right, I’ll look to you as my mentor!\n" + .string "Adios!$" + +gText_082B8F45:: @ 82B8F45 + .string "Oh, hey, {PLAYER}{STRING 5}, right?\n" + .string "The police were looking for you!\p" + .string "… … …\n" + .string "Of course I’m lying!\p" + .string "Me, I’m {STR_VAR_1}. Despite the way\n" + .string "I look, I’m the POKéMON CHAMPION!\l" + .string "…That’s a lie, too!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at battling.\p" + .string "So, how about you becoming my master\n" + .string "about all things POKéMON?$" + +gText_082B905F:: @ 82B905F + .string "If you’re going to act cold like that,\n" + .string "I’ll show you what I’ll do!\p" + .string "Waaah! Waaah! Waaah!\n" + .string "Hiccup!\p" + .string "Hahaha, that was my FAKE TEARS!\p" + .string "Come on, will you please be\n" + .string "my POKéMON master?$" + +gText_082B910E:: @ 82B910E + .string "Yippee!\n" + .string "I’ll buy you a boat for that!\p" + .string "Of course I’m lying again!\n" + .string "But… Thank you, master!\p" + .string "You know how there’s Level 50 and\n" + .string "Open Level at the BATTLE TOWER?\p" + .string "I’m having trouble deciding which\n" + .string "level I should challenge…\p" + .string "Can you decide for me, master?$" + +gText_082B9204:: @ 82B9204 + .string "Okay, so {STR_VAR_1} is better!\n" + .string "I’ll go to the other level, then!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082B929C:: @ 82B929C + .string "A-H-O-Y!\n" + .string "And that spells ahoy, and it means hi!\p" + .string "I’m {STR_VAR_1}, the rappin’ SAILOR\n" + .string "am I!\p" + .string "Your turn now, tell me a little about\n" + .string "yourself, give it a try!\p" + .string "Uh-huh, uh-huh!\n" + .string "{PLAYER}{STRING 5}’s your name,\l" + .string "and POKéMON’s your game!\p" + .string "And you’re at a delicate age\n" + .string "when all the world’s your stage!\p" + .string "Anyway, I just want to say,\n" + .string "that you’re the tenth TRAINER\l" + .string "I’ve spoken to today.\p" + .string "Let’s make that a celebration!\n" + .string "Become my mentor for commemoration!$" + +gText_082B9438:: @ 82B9438 + .string "But!\n" + .string "You have to work with me!\p" + .string "Don’t be such a tease!\n" + .string "Become my mentor, please!$" + +gText_082B9488:: @ 82B9488 + .string "That’s it!\n" + .string "{PLAYER}, you’ve got the spirit!\p" + .string "So here’s my first question\n" + .string "that begs your suggestion!\p" + .string "It’s about the BATTLE TOWER,\n" + .string "and it hinges on my power!\p" + .string "Level 50 and Open Level there be,\n" + .string "which is the one that’s good for me?$" + +gText_082B9564:: @ 82B9564 + .string "Okay, {STR_VAR_1} it is, you say!\n" + .string "I’ll go and take it on my way!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082B95D8:: @ 82B95D8 + .string "Say, hey, aren’t you {PLAYER}?\n" + .string "What should I do? Talk to you?\l" + .string "Why not? I’m already talking to you!\p" + .string "{PLAYER}, are you surprised at me?\n" + .string "I’d better tell you who I happen to be!\p" + .string "{STR_VAR_1} is what you can call me.\n" + .string "The brightest star in guitardom,\l" + .string "that’s me!\p" + .string "Are you receiving me?\n" + .string "You are receiving me!\p" + .string "My luck’s at its best,\n" + .string "I’ll hit you with a request!\p" + .string "{PLAYER}, let me be your underling!\n" + .string "I want you to teach me everything!$" + +gText_082B9763:: @ 82B9763 + .string "You’re turning me down, then?\n" + .string "I’ll just have to ask you again!\p" + .string "{PLAYER}, I beg to be your underling!\n" + .string "I need you to teach me everything!$" + +gText_082B97E5:: @ 82B97E5 + .string "Lucky, yeah, woohoo!\n" + .string "Should I pop a question to you?\p" + .string "Since we’re near the BATTLE TOWER,\n" + .string "how about a question about its power?\p" + .string "Of the choices you see,\n" + .string "which is the right one for me?$" + +gText_082B989A:: @ 82B989A + .string "If {STR_VAR_1} is what you suggest,\n" + .string "it must be the very best!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082B992D:: @ 82B992D + .string "Oh, hi! You there!\n" + .string "Can I get you to massage my shoulder?\p" + .string "…Yes, there! That’s it!\n" + .string "Ouch, ouch! Oooh, that feels great!\p" + .string "My name’s {STR_VAR_1}.\n" + .string "I take karate training, but my body’s\l" + .string "not built to take the abuse…\p" + .string "I decided I’ll battle POKéMON and\n" + .string "toughen myself up.\p" + .string "You’re {PLAYER}{STRING 5}, aren’t you?\n" + .string "The POKéMON LEAGUE CHAMP?\p" + .string "Listen, can I get you to give me\n" + .string "advice?$" + +gText_082B9A84:: @ 82B9A84 + .string "Oh, why?\p" + .string "I won’t be a big bother, I promise!\n" + .string "Please?$" + +gText_082B9AB9:: @ 82B9AB9 + .string "Thank you. Mighty good of you!\n" + .string "…Cough! Cough!\p" + .string "Oogh, I have to toughen up quick…\p" + .string "I’ll be heading off to the BATTLE TOWER\n" + .string "right away, but what would be better\l" + .string "for me? Level 50 or Open Level?$" + +gText_082B9B76:: @ 82B9B76 + .string "Hm, all right. That’s {STR_VAR_1}.\n" + .string "I’ll go there right away.\p" + .string "I hope I can keep hitting you up for\n" + .string "help--after all, you’re my mentor!$" + +gText_082B9BF2:: @ 82B9BF2 + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}…?\p" + .string "Please, don’t look at me that way.\n" + .string "You’re making me all self-conscious.\p" + .string "I… I’m {STR_VAR_1}.\p" + .string "I’m really embarrassed to say this,\n" + .string "but I explore ancient ruins and such.\p" + .string "I’m even more embarrassed to admit\n" + .string "I’m interested in the BATTLE FRONTIER.\p" + .string "{PLAYER}{STRING 5}, you have a reputation as\n" + .string "a tough TRAINER…\p" + .string "It’s hard for me to say this,\n" + .string "but I want to ask something.\p" + .string "Could you become my teacher and\n" + .string "give me advice?$" + +gText_082B9D83:: @ 82B9D83 + .string "Please don’t brush me off like this!\n" + .string "I can’t live with the humiliation.\p" + .string "Please become my teacher!\n" + .string "I need your advice!$" + +gText_082B9DF9:: @ 82B9DF9 + .string "Th-thank you…\p" + .string "But please don’t look at me like that.\n" + .string "It makes me all flustered.\p" + .string "Please, answer me without looking\n" + .string "at my eyes.\p" + .string "At the BATTLE TOWER…\n" + .string "Which level should I attempt?$" + +gText_082B9EAA:: @ 82B9EAA + .string "Oh… Okay!\n" + .string "I’ll try my hand at that.\p" + .string "I hope I can make a valiant challenge\n" + .string "without getting all flustered…\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082B9F55:: @ 82B9F55 + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really real?\p" + .string "You may call me {STR_VAR_1}.\p" + .string "I have been toying with the idea of\n" + .string "apprenticing under a strong TRAINER.\p" + .string "So, I must say I’m lucky you came along!\n" + .string "…You really are {PLAYER}{STRING 5}, yes?\p" + .string "No, no, if you are real, it’s fine.\n" + .string "I merely want you to recognize me\l" + .string "as your apprentice.$" + +gText_082BA084:: @ 82BA084 + .string "Oh?\n" + .string "But what would compel you to refuse?\p" + .string "I apologize for being skeptical about\n" + .string "your identity.\p" + .string "Please accept my apology and\n" + .string "accept me as your apprentice.$" + +gText_082BA11D:: @ 82BA11D + .string "You really are accepting me?\n" + .string "I don’t wish to celebrate prematurely.\p" + .string "If it is true, I apologize.\n" + .string "But now, I need your advice.\p" + .string "If I were to enter the BATTLE TOWER,\n" + .string "what would be worthy of me?\l" + .string "Level 50 or Open Level?$" + +gText_082BA1F3:: @ 82BA1F3 + .string "{STR_VAR_1}?\n" + .string "Are you certain?\p" + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I realize I can annoy, but it delights\n" + .string "me that you have accepted me.\p" + .string "Let us meet again!$" + +gText_082BA2A3:: @ 82BA2A3 + .string "Sigh… Sob…\n" + .string "Oh, {PLAYER}!\p" + .string "I’m all tangled up in a dilemma\n" + .string "that I can’t decide.\p" + .string "I can’t decide what I should make\n" + .string "my {STR_VAR_1} hold.\p" + .string "Please tell me, {PLAYER}.\n" + .string "What item should I make it hold?$" + +gText_082BA34E:: @ 82BA34E + .string "Oh, really? I shouldn’t make\n" + .string "my {STR_VAR_1} hold anything?$" + +gText_082BA380:: @ 82BA380 + .string "Oh, okay! I’m delighted it’s settled!\n" + .string "Awesome! Wicked! Awoooh!\p" + .string "Thank you so much!$" + +gText_082BA3D2:: @ 82BA3D2 + .string "Oh, I’m so glad…\n" + .string "I think I have that {STR_VAR_1}, too.\p" + .string "I’m delighted it’s settled!\n" + .string "Awesome! Wicked! Awoooh!\p" + .string "Thank you so much!$" + +gText_082BA448:: @ 82BA448 + .string "Waaaah! Please don’t be mean!\p" + .string "That item {STR_VAR_1} was already\n" + .string "recommended to me before, sob…\p" + .string "Or do you mean I shouldn’t make\n" + .string "my {STR_VAR_2} hold anything?$" + +gText_082BA4D3:: @ 82BA4D3 + .string "Yay! It’s {PLAYER}!\n" + .string "Great! I wanted to ask you something!\p" + .string "Do you make your POKéMON hold items?\n" + .string "I want to make mine hold items, but…\p" + .string "What item would be good for\n" + .string "{STR_VAR_1} to hold?\p" + .string "What do you think?$" + +gText_082BA58C:: @ 82BA58C + .string "Huh? You mean my {STR_VAR_1} doesn’t\n" + .string "have to hold anything?$" + +gText_082BA5BF:: @ 82BA5BF + .string "Oh, I get it! I’ll do that!\n" + .string "Thanks for teaching me!$" + +gText_082BA5F3:: @ 82BA5F3 + .string "Oh, wow! One {STR_VAR_1}, huh?\n" + .string "Okay, I’ll do that!\p" + .string "Thanks for teaching me!$" + +gText_082BA635:: @ 82BA635 + .string "Oh, uh, no, that’s not what I meant.\n" + .string "I want to know about a different item\l" + .string "than the ones I already know.\p" + .string "Or do you mean that my POKéMON doesn’t\n" + .string "have to hold anything this time?$" + +gText_082BA6E6:: @ 82BA6E6 + .string "{PLAYER}, hello!\n" + .string "It’s about my {STR_VAR_1}…\p" + .string "I want to make it hold a good item.\n" + .string "What would be good for it?$" + +gText_082BA742:: @ 82BA742 + .string "Oh, then my {STR_VAR_1} doesn’t have\n" + .string "to hold anything?$" + +gText_082BA770:: @ 82BA770 + .string "Okay, I got it!\n" + .string "See you again!$" + +gText_082BA78F:: @ 82BA78F + .string "Oh, the item {STR_VAR_1}?\n" + .string "Understood!\p" + .string "I’ll do my best to find one!\n" + .string "See you again!$" + +gText_082BA7D8:: @ 82BA7D8 + .string "Somebody taught me about\n" + .string "the {STR_VAR_1} already.\p" + .string "I want my POKéMON to hold a different\n" + .string "kind of item.\p" + .string "Or do you think {STR_VAR_2} doesn’t\n" + .string "have to hold anything?$" + +gText_082BA867:: @ 82BA867 + .string "Hello, {PLAYER}…\n" + .string "I’m sorry to disturb you, but I have\l" + .string "something else I wanted to ask you.\p" + .string "I don’t think I’m good enough to win\n" + .string "matches on my own, so I’m thinking of\l" + .string "making my {STR_VAR_1} hold an item.\p" + .string "But I don’t know what would be good.\p" + .string "{PLAYER}, please, could you decide\n" + .string "for me?$" + +gText_082BA96B:: @ 82BA96B + .string "A POKéMON belonging to someone like me\n" + .string "would be better off without an item?$" + +gText_082BA9B7:: @ 82BA9B7 + .string "I understand…\n" + .string "You’re saying I shouldn’t rely on items.\l" + .string "I’ll do my best not to!\p" + .string "Thank you very much!$" + +gText_082BAA1B:: @ 82BAA1B + .string "The item {STR_VAR_1}, okay.\n" + .string "I’m not sure if I can get one…\l" + .string "No! I’ll do my best to get it.\p" + .string "Thank you very much!$" + +gText_082BAA81:: @ 82BAA81 + .string "Oh, but…\n" + .string "I think I’ve heard about that before…\p" + .string "Is it maybe because I haven’t handled\n" + .string "the item {STR_VAR_1} very well?\p" + .string "Or do you mean I shouldn’t make\n" + .string "my {STR_VAR_2} hold anything?$" + +gText_082BAB22:: @ 82BAB22 + .string "Oh, {PLAYER}{STRING 5}.\n" + .string "There’s something I wanted to ask you.\p" + .string "You know how you decided which\n" + .string "POKéMON I should have for me?\p" + .string "But I never asked you what item\n" + .string "it should be holding.\p" + .string "Since you already gave me advice,\n" + .string "how about seeing this to the end?\p" + .string "What would be good? I want to make\n" + .string "my {STR_VAR_1} hold something.$" + +gText_082BAC43:: @ 82BAC43 + .string "Oh! So my {STR_VAR_1} should do\n" + .string "the best it can empty-handed?$" + +gText_082BAC78:: @ 82BAC78 + .string "If you think that’s best, I’ll do that.\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082BAD17:: @ 82BAD17 + .string "The item {STR_VAR_1}, huh?\n" + .string "Not bad. I’ll use it!\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082BADB6:: @ 82BADB6 + .string "Huh? What are you saying?\n" + .string "You told me about the {STR_VAR_1}\l" + .string "already before.\p" + .string "Or do you mean my {STR_VAR_2} should\n" + .string "do the best it can empty-handed?$" + +gText_082BAE36:: @ 82BAE36 + .string "Yo, {PLAYER}{STRING 5}!\p" + .string "We’re both busy, but we seem to run\n" + .string "into each other often anyway!\p" + .string "Today I have to do some walking,\n" + .string "cleaning, and brushing.\p" + .string "I haven’t even had the time to buy\n" + .string "my precious {STR_VAR_1} anything.\p" + .string "I don’t have any time, so how about\n" + .string "giving me advice on what I should make\l" + .string "my {STR_VAR_1} hold?$" + +gText_082BAF4E:: @ 82BAF4E + .string "Oh, so me being a busy guy, you say\n" + .string "my {STR_VAR_1} doesn’t need anything?$" + +gText_082BAF8F:: @ 82BAF8F + .string "Okay, gotcha.\n" + .string "I won’t need any time for that.\p" + .string "Thanks today!\n" + .string "See you around!$" + +gText_082BAFDB:: @ 82BAFDB + .string "Okay, gotcha.\n" + .string "I’ll find time somehow and find\l" + .string "that {STR_VAR_1} you recommended.\p" + .string "I’m glad I met a good mentor in you.\n" + .string "Thanks! See you around!$" + +gText_082BB05F:: @ 82BB05F + .string "Huh? I already know about\n" + .string "that {STR_VAR_1}.\p" + .string "Oh, right, I get it.\n" + .string "So me being a busy guy, you say\l" + .string "my {STR_VAR_2} doesn’t need anything?$" + +gText_082BB0D4:: @ 82BB0D4 + .string "Hiya, {PLAYER}! It’s me!\n" + .string "I need to tap your mind again today.\l" + .string "Please, I need your advice!\p" + .string "Drum roll, please!\n" + .string "The question I have is…\p" + .string "If I want to make my {STR_VAR_1} hold\n" + .string "an item, what should it be?$" + +gText_082BB18C:: @ 82BB18C + .string "Is that right? My {STR_VAR_1} doesn’t\n" + .string "need to hold an item, you’re saying.$" + +gText_082BB1CE:: @ 82BB1CE + .string "Okay, that’s what I’ll do!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082BB242:: @ 82BB242 + .string "Uh-huh! One {STR_VAR_1}.\n" + .string "What a cool choice!\l" + .string "I’ll definitely try that!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082BB2D9:: @ 82BB2D9 + .string "Ahahah! That’s silly!\n" + .string "You already told me about that\l" + .string "{STR_VAR_1} before!\p" + .string "Are you feeling okay, {PLAYER}?\p" + .string "Oh, wait! My {STR_VAR_2} doesn’t\n" + .string "need to hold an item, you’re saying.$" + +gText_082BB370:: @ 82BB370 + .string "Hello, {PLAYER}. I hope you’ve been\n" + .string "keeping well.\p" + .string "May I approach you for advice?\p" + .string "In a recent battle, my opponent\n" + .string "seemed to have given his POKéMON\l" + .string "an item to hold.\p" + .string "As a result, I was defeated…\p" + .string "I don’t wish to be left behind.\n" + .string "I would like to make my {STR_VAR_1}\l" + .string "hold an item, too.\p" + .string "It would please me if you could decide\n" + .string "what would be right for my POKéMON…$" + +gText_082BB4C3:: @ 82BB4C3 + .string "In other words… My POKéMON has\n" + .string "no need to hold an item?$" + +gText_082BB4FB:: @ 82BB4FB + .string "I understand clearly now!\n" + .string "I will keep trying like this.\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082BB575:: @ 82BB575 + .string "One {STR_VAR_1} it is!\n" + .string "I will order it right away.\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082BB5E1:: @ 82BB5E1 + .string "You’ve already told me about that,\n" + .string "and I already have it.\p" + .string "Or are you saying… My POKéMON has\n" + .string "no need to hold an item?$" + +gText_082BB656:: @ 82BB656 + .string "Eek! {PLAYER}!\n" + .string "I… I’m overjoyed to see you again!\p" + .string "Oh-oh-oh! There’s something I just\n" + .string "had to ask you, {PLAYER}!\p" + .string "Please decide what my {STR_VAR_1}\n" + .string "should be holding!$" + +gText_082BB6E5:: @ 82BB6E5 + .string "Oh, wow! I didn’t expect that answer!\n" + .string "So, a hold item isn’t necessary?$" + +gText_082BB72C:: @ 82BB72C + .string "Perfectly understood!\n" + .string "I’ll keep at this without an item!\p" + .string "I hope you’ll be willing to teach me\n" + .string "some more another time.$" + +gText_082BB7A2:: @ 82BB7A2 + .string "{STR_VAR_1}! I’ll use that!\p" + .string "Um… Could it be, {PLAYER}, you also\n" + .string "make your POKéMON hold that item?\p" + .string "I’ll be sure to get it!\n" + .string "I hope you’ll be willing to teach me\l" + .string "some more another time.$" + +gText_082BB84A:: @ 82BB84A + .string "Oh? You recommended that\n" + .string "{STR_VAR_1} before, too.\p" + .string "Or is it the best thing to hold?\n" + .string "Or do you mean that my {STR_VAR_2}\l" + .string "doesn’t need anything to hold?$" + +gText_082BB8CD:: @ 82BB8CD + .string "Hola!\n" + .string "My maestro, {PLAYER}{STRING 5}!\p" + .string "I want to hit you up for advice on\n" + .string "POKéMON tools.\p" + .string "What do you think would be good for\n" + .string "my {STR_VAR_1} to hold?\p" + .string "Don’t be shy now.\n" + .string "Let’s blurt it out!$" + +gText_082BB970:: @ 82BB970 + .string "Oh? So, you’re saying my {STR_VAR_1}\n" + .string "can win without holding any item?$" + +gText_082BB9AE:: @ 82BB9AE + .string "Si, bueno!\n" + .string "I’ll give it my best shot, like, slam!\p" + .string "All right, thanks, as always!\n" + .string "Adios!$" + +gText_082BBA05:: @ 82BBA05 + .string "Uh-huh, that’s one {STR_VAR_1}?\n" + .string "Si, bueno!\l" + .string "I’ll go find me one, like, bam!\p" + .string "All right, thanks, as always!\n" + .string "Adios!$" + +gText_082BBA6C:: @ 82BBA6C + .string "No, no! You already told me about\n" + .string "that {STR_VAR_1} thing before.\p" + .string "Oh, now wait just one minute here…\n" + .string "So, you’re saying my {STR_VAR_2}\l" + .string "can win without holding any item?$" + +gText_082BBB01:: @ 82BBB01 + .string "{PLAYER}{STRING 5}, something unbelievable\n" + .string "has happened!\p" + .string "I woke up this morning, and my POKéMON\n" + .string "had 10 NUGGETS!\p" + .string "Of course I’m lying!\n" + .string "Wahahaha!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at thinking about\l" + .string "what items POKéMON should hold.\p" + .string "So, how about deciding for me what\n" + .string "my {STR_VAR_1} should hold, master?$" + +gText_082BBC1C:: @ 82BBC1C + .string "What’s that mean?\n" + .string "Don’t make it hold anything?$" + +gText_082BBC4B:: @ 82BBC4B + .string "Okay, so it shouldn’t hold anything.\n" + .string "Then, I’d better get something for it!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082BBCF6:: @ 82BBCF6 + .string "Okay, so it’s one {STR_VAR_1}!\n" + .string "I’ll make it hold anything but that!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082BBD90:: @ 82BBD90 + .string "Um, you told me about that before,\n" + .string "didn’t you?\p" + .string "Isn’t there something else?\p" + .string "Or do you mean, don’t make\n" + .string "my {STR_VAR_2} hold anything?$" + +gText_082BBE0B:: @ 82BBE0B + .string "A-H-O-Y!\n" + .string "And that spells ahoy!\p" + .string "The rappin’ SAILOR am I!\n" + .string "I present to you a question\l" + .string "that’s pretty fly!\p" + .string "It’s an item question\n" + .string "that begs your suggestion!\p" + .string "My {STR_VAR_1} needs an item to hold,\n" + .string "What should it be, if I may be bold?$" + +gText_082BBEE5:: @ 82BBEE5 + .string "Is that right?\n" + .string "My {STR_VAR_1} doesn’t need to be\l" + .string "holding anything tight?$" + +gText_082BBF25:: @ 82BBF25 + .string "Okay, I hear you, sure I do!\n" + .string "My POKéMON will go empty-handed, too!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082BBFA4:: @ 82BBFA4 + .string "Okay, one {STR_VAR_1},\n" + .string "that’s what I’ll use.\l" + .string "I was right to make you choose!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082BC024:: @ 82BC024 + .string "Okay, one {STR_VAR_1}, you say?\n" + .string "You told me that the other day.\l" + .string "I need a new idea, a brand new way.\p" + .string "Or, what, is that right?\n" + .string "My POKéMON doesn’t need to hold\l" + .string "anything tight?$" + +gText_082BC0C8:: @ 82BC0C8 + .string "Say, hey, {PLAYER}!\n" + .string "I found you again today!\p" + .string "What should I do? Get your advice?\n" + .string "Why not? I’m already talking to you!\p" + .string "{PLAYER}, are you getting sick of me?\n" + .string "Nah, no way, that can’t be.\p" + .string "Will you hear me out?\n" + .string "I’m looking for advice--that’s what\l" + .string "I’m talking about.\p" + .string "It’s about a hold item for\n" + .string "my {STR_VAR_1} that’d be good.\l" + .string "My indecision is making me brood.$" + +gText_082BC213:: @ 82BC213 + .string "My {STR_VAR_1} needs nothing?\n" + .string "Doesn’t need to hold anything?$" + +gText_082BC247:: @ 82BC247 + .string "If holding nothing is the best,\n" + .string "I’ll do as you suggest!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082BC2DD:: @ 82BC2DD + .string "If holding that {STR_VAR_1} is\n" + .string "the best, I’ll do as you suggest!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082BC373:: @ 82BC373 + .string "Haven’t I heard about that\n" + .string "{STR_VAR_1} before?\l" + .string "I’m certain I have, that’s for sure!\p" + .string "I need a new something!\n" + .string "Or, my {STR_VAR_2} needs nothing?\l" + .string "Doesn’t need to hold anything?$" + +gText_082BC40E:: @ 82BC40E + .string "Gwah! Ouch! {PLAYER}{STRING 5}, my arm’s broken!\n" + .string "Don’t touch it, please!\p" + .string "I must’ve broken it while I was trying\n" + .string "out different hold items with my posse\l" + .string "of POKéMON.\p" + .string "So, things being this way,\n" + .string "I need you to decide for me.\p" + .string "{PLAYER}{STRING 5}, what do you think would be\n" + .string "good for my {STR_VAR_1} to hold?$" + +gText_082BC514:: @ 82BC514 + .string "Ouch…\p" + .string "So your suggestion is my {STR_VAR_1}\n" + .string "doesn’t have to hold anything?$" + +gText_082BC555:: @ 82BC555 + .string "Hm, all right. That would be easier\n" + .string "for me, the way things are now.\p" + .string "I hope I can keep hitting you up\n" + .string "for help like this.$" + +gText_082BC5CE:: @ 82BC5CE + .string "Hm, all right. That’s one {STR_VAR_1}.\n" + .string "My POKéMON’s arm is fine, so I’ll make\l" + .string "it hold that item right away.\p" + .string "I hope I can keep hitting you up\n" + .string "for help like this.$" + +gText_082BC666:: @ 82BC666 + .string "No, no, you told me about that\n" + .string "{STR_VAR_1} before, remember?\p" + .string "How about telling me something\n" + .string "even better?\p" + .string "Oh, wait a second.\n" + .string "So your suggestion is my {STR_VAR_2}\l" + .string "doesn’t have to hold anything?$" + +gText_082BC714:: @ 82BC714 + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}…\p" + .string "Please, don’t look at me that way.\n" + .string "My POKéMON don’t have anything.\p" + .string "I… I’m really embarrassed about this,\n" + .string "but I really need your advice.\p" + .string "I can’t decide what hold item would\n" + .string "make my {STR_VAR_1} strong.\p" + .string "{PLAYER}{STRING 5}, what do you think would\n" + .string "be good?$" + +gText_082BC808:: @ 82BC808 + .string "Oh… Then, you think it would be better\n" + .string "if my {STR_VAR_1} didn’t have an item?$" + +gText_082BC84D:: @ 82BC84D + .string "Oh… Okay!\n" + .string "I’ll go without an item.\p" + .string "This is nerve-racking, though.\n" + .string "Wouldn’t it be too cool?\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082BC8EA:: @ 82BC8EA + .string "Oh… Okay!\n" + .string "I’ll go with that {STR_VAR_1}.\p" + .string "This is nerve-racking, though.\n" + .string "Wouldn’t it be too cool?\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082BC984:: @ 82BC984 + .string "B-but I already heard about that.\p" + .string "Please don’t brush me off like this!\n" + .string "I can’t live with the humiliation.\p" + .string "Oh… Am I jumping to conclusions?\n" + .string "Do you think it would be better if\l" + .string "my {STR_VAR_2} didn’t have an item?$" + +gText_082BCA4D:: @ 82BCA4D + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really?\l" + .string "Perhaps you’re a twin?\p" + .string "Oh, no, no, no, don’t worry!\n" + .string "If you really are {PLAYER}, please\l" + .string "forget about my rudeness.\p" + .string "What I would like is some more of\n" + .string "your fine advice.\p" + .string "I have here my {STR_VAR_1} that I wish\n" + .string "to make hold a convenient item.\p" + .string "What would be worthy of it?$" + +gText_082BCB75:: @ 82BCB75 + .string "It’s better if it held nothing?\n" + .string "Are you certain?$" + +gText_082BCBA6:: @ 82BCBA6 + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "Let us meet again!$" + +gText_082BCBFC:: @ 82BCBFC + .string "One {STR_VAR_1}?\n" + .string "Are you certain?\p" + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I do hope my POKéMON will be able to\n" + .string "put it to good use.\p" + .string "Let us meet again!$" + +gText_082BCCA4:: @ 82BCCA4 + .string "No, no, wait a minute.\n" + .string "I believe you taught me that before.\p" + .string "I would like you to recommend\n" + .string "something different this time.\p" + .string "Perhaps you’re suggesting that\n" + .string "my {STR_VAR_2} should hold nothing?\l" + .string "Are you certain?$" + +gText_082BCD68:: @ 82BCD68 + .string "Waah, {PLAYER}!\n" + .string "I have a dilemma, sob…\p" + .string "I want to begin battling other people,\n" + .string "but I don’t know what to do.\p" + .string "How should I line up my POKéMON\n" + .string "so they’ll be at their strongest?\p" + .string "Please tell me, {PLAYER}.\n" + .string "If you were me, which of these POKéMON\l" + .string "would you send out first?$" + +gText_082BCE64:: @ 82BCE64 + .string "My {STR_VAR_1} should go first?\n" + .string "Waaaaah!\p" + .string "Oh! I’m so sorry!\n" + .string "You’ve made me happy by choosing\l" + .string "my first POKéMON, and it’s made me cry…\p" + .string "Thank you so much!$" + +gText_082BCEF2:: @ 82BCEF2 + .string "Yay! It’s {PLAYER}!\n" + .string "Great! I wanted to ask you something!\p" + .string "Um, of my POKéMON, which do you\n" + .string "think should go out first?$" + +gText_082BCF61:: @ 82BCF61 + .string "My {STR_VAR_1}? That’s true.\n" + .string "Okay, I’ll do that!\p" + .string "Thanks for teaching me!$" + +gText_082BCFA1:: @ 82BCFA1 + .string "{PLAYER}, hello!\p" + .string "I think, in a battle, it’s very important\n" + .string "which POKéMON comes out first.\p" + .string "Out of the POKéMON that I have,\n" + .string "which would be good to send out first?$" + +gText_082BD03C:: @ 82BD03C + .string "My {STR_VAR_1} goes first?\n" + .string "Okay, I got it!\p" + .string "See you again!$" + +gText_082BD06D:: @ 82BD06D + .string "Hello, {PLAYER}…\n" + .string "I’m sorry to disturb you again with\l" + .string "another question.\p" + .string "I have so little confidence, I don’t\n" + .string "know what I’d do without you, {PLAYER}.\p" + .string "It may be a waste of time for me to\n" + .string "even worry about it, but I just can’t\l" + .string "decide something…\p" + .string "Which of my POKéMON should I send\n" + .string "out first in a battle?$" + +gText_082BD18A:: @ 82BD18A + .string "My {STR_VAR_1}?\n" + .string "Understood!\p" + .string "I can’t believe that you would bother\n" + .string "to answer my questions so often!\p" + .string "I’m so grateful that you would even\n" + .string "speak with me… Thank you!$" + +gText_082BD222:: @ 82BD222 + .string "Oh, {PLAYER}{STRING 5}! It’s me!\n" + .string "I’m so glad to see you because I have\l" + .string "this little problem.\p" + .string "I can’t decide how my POKéMON should\n" + .string "be lined up. Could you decide for me?\p" + .string "Oh, you don’t need to decide the whole\n" + .string "party right now.\p" + .string "How about deciding just the first\n" + .string "POKéMON for me?$" + +gText_082BD325:: @ 82BD325 + .string "My {STR_VAR_1}? That’s great!\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082BD3B1:: @ 82BD3B1 + .string "Hi, my teacher {PLAYER}{STRING 5}!\n" + .string "I’m busy again today!\p" + .string "I have to do some cycling, shopping,\n" + .string "and humming.\p" + .string "I haven’t even had the time to decide\n" + .string "how to line up my POKéMON team.\p" + .string "So, how about checking out my team?\n" + .string "Which one should go first?$" + +gText_082BD493:: @ 82BD493 + .string "Okay, gotcha.\n" + .string "I have enough time at least to put\l" + .string "my {STR_VAR_1} at the head of the line!\p" + .string "Whoops, my girlfriend’s waiting!\n" + .string "Thanks! See you around!$" + +gText_082BD51C:: @ 82BD51C + .string "Yoohoo! Hiya, {PLAYER}!\n" + .string "You always walk around looking tough!\p" + .string "Listen, I need something from you\n" + .string "again! It’s the usual thing!\p" + .string "Drum roll, please!\n" + .string "The question I have is about my team.\p" + .string "Which POKéMON of mine should be first\n" + .string "to go out in a battle?$" + +gText_082BD609:: @ 82BD609 + .string "Hmhm!\n" + .string "My {STR_VAR_1}, you say!\l" + .string "Thanks for a most cool answer!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082BD697:: @ 82BD697 + .string "Thank you so much for stopping to\n" + .string "chat with me, {PLAYER}.\p" + .string "I know I’m taking advantage of your\n" + .string "kindness, but may I ask for advice?\p" + .string "I would like you to decide on the order\n" + .string "of my POKéMON team.\p" + .string "It would please me if you could decide\n" + .string "which POKéMON should come first.$" + +gText_082BD797:: @ 82BD797 + .string "My {STR_VAR_1} it is!\n" + .string "I will put it first right away!\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082BD806:: @ 82BD806 + .string "Eek! {PLAYER}!\n" + .string "I… I’m overjoyed to see you again!\p" + .string "My POKéMON have become much\n" + .string "stronger!\p" + .string "But I don’t always win. It seems to\n" + .string "depend on which POKéMON goes first.\p" + .string "{PLAYER}, please, I need your help!\p" + .string "Please decide which of my POKéMON\n" + .string "should go out first!$" + +gText_082BD8F5:: @ 82BD8F5 + .string "Sigh… I’m overwhelmed with happiness…\p" + .string "It’s like a dream having you decide\n" + .string "for me, {PLAYER}.\p" + .string "But perfectly understood!\n" + .string "I will go with my {STR_VAR_1} first!\p" + .string "I hope you’ll be willing to teach me\n" + .string "some more another time.$" + +gText_082BD9BE:: @ 82BD9BE + .string "Hello, hello!\n" + .string "My mentor, {PLAYER}{STRING 5}!\l" + .string "Hit me with your sage advice today!\p" + .string "You see, I pulled together a team of\n" + .string "three POKéMON. So far so good.\p" + .string "But the team’s battling order’s not\n" + .string "settled yet.\p" + .string "This is where you come in, {PLAYER}{STRING 5}!\n" + .string "You decide which POKéMON leads off!\p" + .string "Don’t be shy now.\n" + .string "Let’s blurt it out!$" + +gText_082BDAE1:: @ 82BDAE1 + .string "Uh-huh, my {STR_VAR_1} leads off!\n" + .string "OK, A-OK!\l" + .string "I’ll reorder the lineup, like, wham!\p" + .string "All right, thanks, as always!\n" + .string "Adios!$" + +gText_082BDB4E:: @ 82BDB4E + .string "{PLAYER}{STRING 5}, listen!\n" + .string "It’s a crisis!\p" + .string "My POKéMON, all three of them, go into\n" + .string "battle at once!\p" + .string "Of course that’s impossible!\n" + .string "Wahahaha!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at thinking about\l" + .string "how I should line up my POKéMON.\p" + .string "So, how about deciding for me which\n" + .string "POKéMON should go first, master?$" + +gText_082BDC6B:: @ 82BDC6B + .string "Okay, so it’s my {STR_VAR_1} you chose?\n" + .string "I’ll let any but that one go first!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082BDD0D:: @ 82BDD0D + .string "A-H-O-Y!\n" + .string "And that spells ahoy!\p" + .string "The rappin’ SAILOR am I!\n" + .string "I present to you a question\l" + .string "that’s pretty fly!\p" + .string "It’s a team lineup question\n" + .string "that begs your suggestion!\p" + .string "Out of this lot, which should go first\n" + .string "as the first on the spot?$" + +gText_082BDDEC:: @ 82BDDEC + .string "Okay, I hear you, sure I do!\n" + .string "I’ll switch them up, that I’ll do!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082BDE68:: @ 82BDE68 + .string "Yahoo, {PLAYER}!\n" + .string "How do you do?\p" + .string "What should I do? Go ahead and ask?\n" + .string "Uh-huh, I have something to ask!\l" + .string "Are you receiving me?\l" + .string "You are receiving me!\p" + .string "You have to decide, which of my\n" + .string "POKéMON is the first to ride!\l" + .string "Into battle, I mean to say.$" + +gText_082BDF4D:: @ 82BDF4D + .string "My {STR_VAR_1}? Yes!\n" + .string "That’ll do, there’s no distress!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082BDFD8:: @ 82BDFD8 + .string "…Oof…ooch… {PLAYER}{STRING 5}…\n" + .string "My stomach’s hurting all of a sudden…\p" + .string "…It’s getting better now…\p" + .string "I must’ve worried myself sick racking\n" + .string "my brains on how I should line up\l" + .string "my posse of POKéMON.\p" + .string "So, things being this way,\n" + .string "I need you to decide for me.\p" + .string "{PLAYER}{STRING 5}, which of my POKéMON should\n" + .string "go first? So I’d win, I mean.$" + +gText_082BE0FD:: @ 82BE0FD + .string "Hm, all right.\n" + .string "My {STR_VAR_1} goes first.\p" + .string "I’ll fix the lineup like that after\n" + .string "I have my supper.\p" + .string "I hope I can keep hitting you up\n" + .string "for help like this.$" + +gText_082BE189:: @ 82BE189 + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}?\p" + .string "Please, don’t look at me that way.\n" + .string "You’re making me feel all flustered.\p" + .string "Um…\n" + .string "I really need your advice.\p" + .string "It makes me bashful to say this,\n" + .string "but I chose my 3-POKéMON team.\l" + .string "I can’t decide on the order, though.\p" + .string "Which POKéMON should I send out first\n" + .string "so I at least look capable?$" + +gText_082BE2A5:: @ 82BE2A5 + .string "Oh… Okay!\n" + .string "I’ll lead with my {STR_VAR_1}.\p" + .string "I hope I can do my best without\n" + .string "getting all flustered.\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082BE33E:: @ 82BE33E + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really?\l" + .string "Perhaps you’re a clever look-alike?\p" + .string "Oh, no, no, no, don’t worry!\n" + .string "If you really are {PLAYER}, please\l" + .string "forget about my rudeness.\p" + .string "What I would like is your fine advice.\p" + .string "I have here my POKéMON team.\n" + .string "I would like you to tell me which one\l" + .string "should go first in a battle.$" + +gText_082BE46C:: @ 82BE46C + .string "My {STR_VAR_1}…\n" + .string "You aren’t pulling my leg?\p" + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I am as you see, but I shall do\n" + .string "my best.\p" + .string "Let us meet again!$" + +gText_082BE50D:: @ 82BE50D + .string "Snivel…\n" + .string "Oh, {PLAYER}!\p" + .string "What perfect timing!\n" + .string "There’s something I just can’t decide…\p" + .string "I can’t decide which POKéMON I should\n" + .string "be using.\p" + .string "I can’t decide between the POKéMON\n" + .string "{STR_VAR_1} and {STR_VAR_2}…\p" + .string "{PLAYER}, which do you think will give\n" + .string "even me a chance at winning?$" + +gText_082BE5F5:: @ 82BE5F5 + .string "Snivel… I… I understand!\n" + .string "Oh! I’m so sorry!\l" + .string "You’ve made me so happy, I’m crying…\p" + .string "I’ll do my best to catch one\n" + .string "{STR_VAR_1}!\p" + .string "Thank you so much!$" + +gText_082BE679:: @ 82BE679 + .string "Yay! It’s {PLAYER}!\n" + .string "Yay, you came at the right time, too!\l" + .string "I need your advice again!\p" + .string "Um, I’m all mixed up--should I use\n" + .string "my {STR_VAR_1} or {STR_VAR_2}…\p" + .string "Which do you think I should raise,\n" + .string "{PLAYER}?$" + +gText_082BE71E:: @ 82BE71E + .string "Oh, so my {STR_VAR_1} is better!\n" + .string "Okay, I’ll do that!\p" + .string "Thanks for teaching me!$" + +gText_082BE762:: @ 82BE762 + .string "{PLAYER}, hello!\n" + .string "I have a question I wanted to ask.\p" + .string "I’m in a dilemma over whether I should\n" + .string "raise one {STR_VAR_1} or {STR_VAR_2}.\p" + .string "Which POKéMON do you think will\n" + .string "be stronger?$" + +gText_082BE7F8:: @ 82BE7F8 + .string "{STR_VAR_1} is your choice?\n" + .string "Okay, I got it!\p" + .string "I’ll go catch a strong {STR_VAR_1}\n" + .string "right away!\p" + .string "See you again!$" + +gText_082BE850:: @ 82BE850 + .string "Hello, {PLAYER}…\p" + .string "Um, you’ve probably already forgotten\n" + .string "about someone like me…\p" + .string "…But that doesn’t matter if you\n" + .string "could give me advice…\p" + .string "I can’t decide on the one kind of\n" + .string "POKéMON I should raise…\p" + .string "I’ve narrowed the field to the POKéMON\n" + .string "{STR_VAR_1} and {STR_VAR_2}, but that’s\l" + .string "where I became stuck…\p" + .string "{PLAYER}, you probably don’t want to\n" + .string "bother, but please decide for me.$" + +gText_082BE99C:: @ 82BE99C + .string "But will a wild {STR_VAR_1} even pay\n" + .string "attention to me?\p" + .string "I will try!\p" + .string "But will I even be able to catch one…\n" + .string "No! I’ll do my best!\p" + .string "Thank you!$" + +gText_082BEA1B:: @ 82BEA1B + .string "Oh, {PLAYER}{STRING 5}! I’m so glad to see you!\n" + .string "I was about to go looking for you!\p" + .string "Can you decide what kind of POKéMON\n" + .string "I should use?\p" + .string "For instance…\n" + .string "How about the POKéMON {STR_VAR_1}\l" + .string "and {STR_VAR_2}?\p" + .string "Which one do you think would be\n" + .string "better?$" + +gText_082BEAE9:: @ 82BEAE9 + .string "{STR_VAR_1}? That’s great!\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082BEB72:: @ 82BEB72 + .string "If it isn’t {PLAYER}{STRING 5}! How’s it going?\n" + .string "I’m busy again as always!\p" + .string "I want to do good with POKéMON, too,\n" + .string "but I haven’t been able to decide\l" + .string "which POKéMON I should use.\p" + .string "You know how {STR_VAR_1} look strong?\n" + .string "But {STR_VAR_2} are tough to ignore.\p" + .string "{PLAYER}{STRING 5}, give me some of your good\n" + .string "advice! Which one’d be good for me?$" + +gText_082BEC8E:: @ 82BEC8E + .string "Okay, gotcha.\n" + .string "I’ll find time somehow and catch me\l" + .string "that {STR_VAR_1} you recommended.\p" + .string "I’m glad I met a good mentor in you.\n" + .string "Thanks! See you around!$" + +gText_082BED16:: @ 82BED16 + .string "Oh!\n" + .string "Yay, it’s {PLAYER}!\p" + .string "I didn’t waste any time boasting to\n" + .string "my friends about meeting you!\p" + .string "I need to tap your mind again today.\n" + .string "It’s an easy one for you!\p" + .string "Drum roll, please!\n" + .string "The question I have is…\p" + .string "If I were to raise a POKéMON,\n" + .string "and the choices were one {STR_VAR_1}\l" + .string "or {STR_VAR_2}, which should it be?$" + +gText_082BEE29:: @ 82BEE29 + .string "Ahhh!\n" + .string "{STR_VAR_1}, you say!\l" + .string "Thanks for a most cool answer!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082BEEB4:: @ 82BEEB4 + .string "Oh, is it you, {PLAYER}?\n" + .string "I’m delighted to see you again!\p" + .string "Ever since I became your apprentice,\n" + .string "my confidence has been blooming.\p" + .string "I think I’m ready to raise a POKéMON\n" + .string "of my own!\p" + .string "{PLAYER}, may I impose on you to choose\n" + .string "which POKéMON I should raise?\p" + .string "The choices are the POKéMON\n" + .string "{STR_VAR_1} or {STR_VAR_2}…\l" + .string "Which POKéMON is right for me?$" + +gText_082BEFE2:: @ 82BEFE2 + .string "One {STR_VAR_1} it is!\n" + .string "I will find one right away!\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082BF04E:: @ 82BF04E + .string "Eek! {PLAYER}! I met you again!\n" + .string "I… I’m overjoyed!\p" + .string "Oh-oh-oh, I know!\n" + .string "I shouldn’t pass up this opportunity!\p" + .string "May I ask a huge favor, {PLAYER}?\n" + .string "Please choose a POKéMON for me!\p" + .string "Please decide which would be better,\n" + .string "{STR_VAR_1} or {STR_VAR_2}!$" + +gText_082BF11D:: @ 82BF11D + .string "Wow! You decided for me!\n" + .string "One {STR_VAR_1} is what I’ll raise to\l" + .string "the best of my ability.\p" + .string "I hope you’ll be willing to teach me\n" + .string "some more another time.$" + +gText_082BF1A8:: @ 82BF1A8 + .string "Hey, hey!\n" + .string "My mentor, {PLAYER}{STRING 5}!\p" + .string "Hello, I’ve been looking for you\n" + .string "for some more of your sage advice!\p" + .string "Which kind of POKéMON would be right\n" + .string "for me, one {STR_VAR_1} or {STR_VAR_2}?\p" + .string "Don’t be shy now.\n" + .string "Let’s blurt it out!$" + +gText_082BF268:: @ 82BF268 + .string "Uh-huh, one {STR_VAR_1} it is!\n" + .string "OK, A-OK!\l" + .string "I’ll get one in a BALL, like, cram!\p" + .string "All right, thanks, as always!\n" + .string "Adios!$" + +gText_082BF2D1:: @ 82BF2D1 + .string "{PLAYER}{STRING 5}, listen! Big news!\n" + .string "I caught a mirage POKéMON!\p" + .string "Of course I’m lying!\n" + .string "Wahahaha!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at catching\l" + .string "POKéMON.\p" + .string "So, how about deciding for me which\n" + .string "kind of POKéMON I should catch,\l" + .string "master?\p" + .string "Which would be better?\n" + .string "{STR_VAR_1} or {STR_VAR_2}?$" + +gText_082BF3CF:: @ 82BF3CF + .string "Okay, so it’s {STR_VAR_1} you chose?\n" + .string "I’ll grab the other kind, then!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082BF46A:: @ 82BF46A + .string "A-H-O-Y!\n" + .string "And that spells ahoy!\p" + .string "The rappin’ SAILOR am I!\n" + .string "Surely you remember who am I?\p" + .string "Today, I have a POKéMON question\n" + .string "that begs your suggestion!\p" + .string "I have the choice between this\n" + .string "{STR_VAR_1} and {STR_VAR_2}, you see.\l" + .string "Which is the one to catch for me?$" + +gText_082BF551:: @ 82BF551 + .string "{STR_VAR_1}, you say, hey, hey!\n" + .string "I’ll go get me one right away!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082BF5C3:: @ 82BF5C3 + .string "Oh, wow, if it isn’t {PLAYER}!\p" + .string "What should I do? Get your advice?\n" + .string "Why not? I’m already talking to you!\p" + .string "It’s been a long time. Let me break\n" + .string "the ice. I’m also looking for advice!\l" + .string "Are you receiving me?\l" + .string "You are receiving me!\p" + .string "My POKéMON--which should I use?\n" + .string "It’s either {STR_VAR_1} or {STR_VAR_2}.\l" + .string "Which do you choose?$" + +gText_082BF6E5:: @ 82BF6E5 + .string "If that {STR_VAR_1} is the best,\n" + .string "I’ll do as you suggest!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082BF773:: @ 82BF773 + .string "Oh, hi, {PLAYER}{STRING 5}…\n" + .string "I have this horrible headache…\p" + .string "I must’ve worried too much about\n" + .string "the kind of POKéMON I should raise.\p" + .string "So, things being this way,\n" + .string "I need you to decide for me.\p" + .string "{PLAYER}{STRING 5}, if I had to choose between\n" + .string "the POKéMON {STR_VAR_1} and\l" + .string "{STR_VAR_2}, which should it be?$" + +gText_082BF869:: @ 82BF869 + .string "Hm, one {STR_VAR_1}, all right.\n" + .string "I’ll go look for one when I get better.\p" + .string "I hope I can keep hitting you up\n" + .string "for help like this.$" + +gText_082BF8DD:: @ 82BF8DD + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}…?\p" + .string "Please, don’t look at me that way.\n" + .string "I’m getting all flustered…\l" + .string "I… I need your advice.\p" + .string "I… I’m really embarrassed, but I can’t\n" + .string "decide which POKéMON to use.\p" + .string "If the choices were {STR_VAR_1} or\n" + .string "{STR_VAR_2}, which would be better?$" + +gText_082BF9BA:: @ 82BF9BA + .string "Oh… Okay!\n" + .string "I’ll do my best with one {STR_VAR_1}.\p" + .string "I hope I can do my best without\n" + .string "getting all flustered.\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082BFA5A:: @ 82BFA5A + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really real?\p" + .string "No, no, if you are real, it’s fine.\n" + .string "Incidentally, I would like to obtain\l" + .string "your advice.\p" + .string "It’s about the POKéMON I am to use.\p" + .string "If the choices are the POKéMON\n" + .string "{STR_VAR_1} and {STR_VAR_2}, which is\l" + .string "more worthy of me?$" + +gText_082BFB4E:: @ 82BFB4E + .string "{STR_VAR_1}?\n" + .string "Are you certain?\p" + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I do hope it is something even I can\n" + .string "handle with aplomb.\p" + .string "Let us meet again!$" + +gText_082BFBF2:: @ 82BFBF2 + .string "Waaah! Oh, {PLAYER}!\n" + .string "Snivel… Hiccup…\p" + .string "I have a dilemma!\n" + .string "I can’t decide on a move for\l" + .string "my {STR_VAR_1}…\p" + .string "Please, please, {PLAYER}.\n" + .string "Can you decide for me?\p" + .string "For my {STR_VAR_1}, which move would\n" + .string "be the better choice: {STR_VAR_2}\l" + .string "or {STR_VAR_3}?$" + +gText_082BFCAE:: @ 82BFCAE + .string "{STR_VAR_1}?\n" + .string "Waaaaah!\p" + .string "Oh! I’m so sorry, {PLAYER}!\n" + .string "You’ve made me so happy by deciding\l" + .string "the move, I’m crying…\p" + .string "Snivel…\n" + .string "Thank you so much!$" + +gText_082BFD26:: @ 82BFD26 + .string "Yay! Hi, {PLAYER}!\n" + .string "I need your advice again!\p" + .string "I want to teach my {STR_VAR_1}\n" + .string "a cool move.\p" + .string "I like either of the moves\n" + .string "{STR_VAR_2} or {STR_VAR_3}.\l" + .string "What’s your recommendation?$" + +gText_082BFDB1:: @ 82BFDB1 + .string "{STR_VAR_1} is better? I guess so!\n" + .string "Okay, I’ll go with that!\p" + .string "If we meet here again, please teach\n" + .string "me something else, teacher!$" + +gText_082BFE24:: @ 82BFE24 + .string "{PLAYER}, hello!\n" + .string "It’s about my {STR_VAR_1}, but I’m\l" + .string "worried about its moves.\p" + .string "You see, it’s the moves {STR_VAR_2}\n" + .string "and {STR_VAR_3}.\p" + .string "Which is stronger and better for\n" + .string "my {STR_VAR_1}?$" + +gText_082BFEAD:: @ 82BFEAD + .string "{STR_VAR_1} is your choice?\n" + .string "Okay, I got it!\p" + .string "I’ll go teach {STR_VAR_1} to\n" + .string "my POKéMON right away!\p" + .string "See you again!$" + +gText_082BFF0A:: @ 82BFF0A + .string "Ohhh, {PLAYER}…\n" + .string "I’m hopeless, no, really!\p" + .string "I’ve decided to raise a POKéMON,\n" + .string "but now I can’t even decide what\l" + .string "move I should let it learn…\p" + .string "I know that it doesn’t mean anything\n" + .string "to you, {PLAYER}.\p" + .string "But it means a lot to me…\p" + .string "Please, {PLAYER}, could you choose\n" + .string "a move for my {STR_VAR_1}?\p" + .string "If you could even choose between\n" + .string "{STR_VAR_2} and {STR_VAR_3}…$" + +gText_082C0032:: @ 82C0032 + .string "I understand!\p" + .string "But will it even be willing to learn\n" + .string "{STR_VAR_1} for me…\l" + .string "No! I’ll do my best!\p" + .string "Thank you!$" + +gText_082C0090:: @ 82C0090 + .string "Oh, {PLAYER}{STRING 5}!\n" + .string "I was just hoping to see you, too!\p" + .string "I was wondering what move would\n" + .string "be suitable for my {STR_VAR_1}.\p" + .string "I can’t decide, so can you decide\n" + .string "for me instead?\p" + .string "For instance… How about the moves\n" + .string "{STR_VAR_2} and {STR_VAR_3}?\l" + .string "Which one would be better?$" + +gText_082C016E:: @ 82C016E + .string "{STR_VAR_1}? That’s great!\p" + .string "Knowing that you made the decision,\n" + .string "{PLAYER}{STRING 5}, I won’t be so upset if\l" + .string "I lose.\p" + .string "Okay, I’ll look to you for advice again.\n" + .string "Bye!$" + +gText_082C01F7:: @ 82C01F7 + .string "How could things be this busy?\n" + .string "Hey, if it isn’t {PLAYER}{STRING 5}!\l" + .string "How’s it going?\p" + .string "Since I got up this morning, I’ve done\n" + .string "my jogging, swimming, and cooking!\p" + .string "You wouldn’t believe how busy I am!\p" + .string "I can’t even decide what move\n" + .string "my {STR_VAR_1} should learn!\p" + .string "{STR_VAR_2} looks good, huh?\n" + .string "But {STR_VAR_3}’s also decent.\p" + .string "{PLAYER}{STRING 5}, give me some of your good\n" + .string "advice! Which move’d be good for me?$" + +gText_082C034C:: @ 82C034C + .string "Okay, gotcha.\n" + .string "I’ll make room in my schedule and\l" + .string "teach that move.\p" + .string "I’m glad I met a good mentor in you.\n" + .string "Thanks! See you around!$" + +gText_082C03CA:: @ 82C03CA + .string "Oh! Lucky!\n" + .string "I met you again, {PLAYER}!\l" + .string "I need to tap your mind again today.\p" + .string "Drum roll, please!\n" + .string "The question I have is…\p" + .string "For my {STR_VAR_1}, which is the move\n" + .string "best suited, {STR_VAR_2} or\l" + .string "{STR_VAR_3}?$" + +gText_082C046E:: @ 82C046E + .string "Ahhh!\n" + .string "{STR_VAR_1}, you say!\l" + .string "Thanks for a most cool answer!\p" + .string "I guess that’s about all I wanted\n" + .string "to ask you today.\p" + .string "Let’s meet here again, okay?\n" + .string "Thanks!$" + +gText_082C04F9:: @ 82C04F9 + .string "Oh, hello, {PLAYER}.\n" + .string "I trust you’ve been well?\p" + .string "I have to seek your advice again.\n" + .string "It’s about my dearest {STR_VAR_1}.\p" + .string "What would be the ideal move for\n" + .string "my lovable {STR_VAR_1}?\l" + .string "{STR_VAR_2} or {STR_VAR_3}?$" + +gText_082C0598:: @ 82C0598 + .string "{STR_VAR_1} it is!\n" + .string "I will teach that right away!\p" + .string "Thank you, {PLAYER}.\n" + .string "I hope I can count on you again.\l" + .string "Please take care!$" + +gText_082C0602:: @ 82C0602 + .string "Eek! {PLAYER}! I met you again!\n" + .string "I… I’m overjoyed!\p" + .string "Whenever I’m in need, you’re always\n" + .string "there for me, {PLAYER}!\p" + .string "Today, I want you to recommend\n" + .string "a move for me!\p" + .string "Please choose a move for\n" + .string "my {STR_VAR_1}!\p" + .string "Which move would be better,\n" + .string "{STR_VAR_2} or {STR_VAR_3}?$" + +gText_082C06D8:: @ 82C06D8 + .string "Oh-oh-oh! Thank you!\n" + .string "{STR_VAR_1} is it!\l" + .string "Perfectly understood!\p" + .string "I hope you’ll be willing to teach me\n" + .string "some more another time.$" + +gText_082C074A:: @ 82C074A + .string "Hola, {PLAYER}{STRING 5}, bueno!\n" + .string "I’m hoping for some more of\l" + .string "your sage advice today!\p" + .string "What would be the best move for\n" + .string "my {STR_VAR_1}?\p" + .string "It should be something that’ll\n" + .string "let me win just like that!\p" + .string "Would it be {STR_VAR_2}?\n" + .string "Or {STR_VAR_3}?$" + +gText_082C0809:: @ 82C0809 + .string "Uh-huh, {STR_VAR_1} it is!\n" + .string "Si, bueno!\l" + .string "I’ll get it taught, like, ka-blam!\p" + .string "All right, thanks, as always!\n" + .string "Adios!$" + +gText_082C086E:: @ 82C086E + .string "{PLAYER}{STRING 5}, it’s completely wild!\p" + .string "My POKéMON!\n" + .string "It learned six moves!\p" + .string "Of course I’m lying!\n" + .string "Wahahaha!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at choosing moves\l" + .string "for my POKéMON.\p" + .string "So, how about deciding for me which\n" + .string "kind of move I should teach?\p" + .string "{STR_VAR_2} or {STR_VAR_3}--which\n" + .string "would go with my {STR_VAR_1} best?$" + +gText_082C0982:: @ 82C0982 + .string "Okay, so it’s {STR_VAR_1} you chose?\n" + .string "I’ll choose another move, then!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks, master!\n" + .string "I hope you’ll keep teaching me!$" + +gText_082C0A1D:: @ 82C0A1D + .string "A-H-O-Y!\n" + .string "And that spells ahoy!\p" + .string "The rappin’ SAILOR am I!\n" + .string "I’m always with it, don’t ask me why.\p" + .string "Today, I have a move question\n" + .string "that begs your suggestion!\p" + .string "{STR_VAR_2} and {STR_VAR_3} are\n" + .string "the moves. What would be the best\l" + .string "for my {STR_VAR_1} so it grooves?$" + +gText_082C0AFD:: @ 82C0AFD + .string "{STR_VAR_1}, you say, hey, hey!\n" + .string "I’ll go teach that right away!\p" + .string "If it’s advice I ever need,\n" + .string "{PLAYER}, your word I’ll always heed!$" + +gText_082C0B6F:: @ 82C0B6F + .string "Oh, yeahah, if it isn’t {PLAYER}!\p" + .string "What should I do? Get your advice?\n" + .string "Why not? I’m already talking to you!\p" + .string "{PLAYER}, are you surprised by me?\n" + .string "I want your advice, can’t you see?\p" + .string "Are you receiving me?\n" + .string "You are receiving me!\p" + .string "My {STR_VAR_1}--what should it use?\n" + .string "It’s {STR_VAR_2} or {STR_VAR_3},\l" + .string "what do you choose?$" + +gText_082C0C7D:: @ 82C0C7D + .string "If that {STR_VAR_1} is the best,\n" + .string "I’ll do as you suggest!\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me.\p" + .string "See you again, my smart friend!$" + +gText_082C0D0B:: @ 82C0D0B + .string "Gahack! Gaah! Oh, {PLAYER}{STRING 5}…\n" + .string "I have this lousy cold, I do…\p" + .string "I want to pick a move for my POKéMON,\n" + .string "but I’m not up to it…\p" + .string "So, things being this way,\n" + .string "I need you to decide for me.\p" + .string "{PLAYER}{STRING 5}, if I had to choose between\n" + .string "{STR_VAR_2} and {STR_VAR_3} for\l" + .string "my {STR_VAR_1}, which would it be?$" + +gText_082C0DFE:: @ 82C0DFE + .string "Hm, {STR_VAR_1}, all right. Cough!\n" + .string "I’ll go teach it when I get better.\p" + .string "I hope I can keep hitting you up\n" + .string "for help like this.$" + +gText_082C0E71:: @ 82C0E71 + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}…?\p" + .string "Please, don’t look at me that way.\n" + .string "I’m getting all flustered…\l" + .string "I… I need your advice.\p" + .string "I… I’m really embarrassed, but I can’t\n" + .string "decide what move I should teach\l" + .string "my POKéMON.\p" + .string "It’s for my {STR_VAR_1}.\n" + .string "If the choices were {STR_VAR_2} or\l" + .string "{STR_VAR_3}, which would be better?$" + +gText_082C0F6D:: @ 82C0F6D + .string "Oh… Okay!\n" + .string "I’ll try that {STR_VAR_1}.\p" + .string "I hope I can teach that move…\n" + .string "This is so nerve-racking…\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "If we meet again, I hope you will be\l" + .string "as helpful.$" + +gText_082C1003:: @ 82C1003 + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really real?\p" + .string "Perhaps you’re one of those popular\n" + .string "mimics?\p" + .string "No, no, if you are real, it’s fine.\n" + .string "No need to be upset, I assure you!\p" + .string "Incidentally, I would like to obtain\n" + .string "your advice.\p" + .string "It’s about my {STR_VAR_1}.\p" + .string "Which move would be better for it to\n" + .string "use, {STR_VAR_2} or {STR_VAR_3}?$" + +gText_082C1122:: @ 82C1122 + .string "{STR_VAR_1}?\n" + .string "There’s no question about that?\p" + .string "I see. If that’s the case, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I do hope it is something even\n" + .string "my POKéMON can learn.\p" + .string "Let us meet again!$" + +gText_082C11D1:: @ 82C11D1 + .string "Oh… {PLAYER}?\n" + .string "It is {PLAYER}!\l" + .string "Oh! Sniff…sob… Please, listen!\p" + .string "I… When I battle, I get so nervous,\n" + .string "I can’t help crying even if I win…\p" + .string "I wish I could say something cool\n" + .string "when I win…\p" + .string "Please, please, {PLAYER}!\n" + .string "Could you maybe teach me something\l" + .string "cool to say when I win so I don’t cry?$" + +gText_082C12D5:: @ 82C12D5 + .string "{STR_VAR_1}\p" + .string "Awesome! Wicked! Awoooh!\n" + .string "It’s really cool!\p" + .string "Oh… I’m sorry…\n" + .string "I’m so happy, I’m crying…\p" + .string "Snivel… {PLAYER}!\n" + .string "Thank you so much for everything!\p" + .string "I will battle the best I can for\n" + .string "your sake, {PLAYER}!\p" + .string "{PLAYER}…\n" + .string "Next time… We should battle!$" + +gText_082C13AB:: @ 82C13AB + .string "Yay! It’s {PLAYER}! Hello!\n" + .string "I wanted to ask you something!\p" + .string "I want to say something cool when\n" + .string "I win a match.\p" + .string "Do you have a cool saying that\n" + .string "you could recommend?$" + +gText_082C1444:: @ 82C1444 + .string "{STR_VAR_1}\p" + .string "Oh, wow! That is so cool!\n" + .string "Okay, I’ll say that!\p" + .string "Thanks for teaching me all this time!\n" + .string "I’m going to do the best I can\l" + .string "wherever I go from now on!\p" + .string "When we meet again, it’ll be for\n" + .string "a battle!$" + +gText_082C1501:: @ 82C1501 + .string "{PLAYER}, hello!\p" + .string "My POKéMON and I are ready for\n" + .string "anything, except for one thing.\p" + .string "I think it would be good if I had\n" + .string "something to shout when I win.\p" + .string "Could you think up something good\n" + .string "to say?$" + +gText_082C15B6:: @ 82C15B6 + .string "{STR_VAR_1}\p" + .string "…Cool!\n" + .string "I will use that!\p" + .string "I’m going out to battle all over\n" + .string "the place.\p" + .string "Who knows, I may even get to battle\n" + .string "you one day, {PLAYER}.\p" + .string "Next time, let’s meet at a place\n" + .string "of battle!$" + +gText_082C165E:: @ 82C165E + .string "Hello, {PLAYER}…\n" + .string "I’m sorry to bug you, but I’m hopeless…\p" + .string "Even when…\n" + .string "Even when I win, I don’t have anything\l" + .string "special to say…\p" + .string "I know that it doesn’t mean anything\n" + .string "to you, {PLAYER}.\p" + .string "But it means a lot to me…\p" + .string "Please, {PLAYER}, what should I say\n" + .string "if I win a battle?$" + +gText_082C174F:: @ 82C174F + .string "{STR_VAR_1}\p" + .string "That’s inspired…\p" + .string "Uh… Is it okay for someone like me\n" + .string "to even say that?\p" + .string "No! I’ll do my best!\p" + .string "{PLAYER}, thank you so much for\n" + .string "putting up with me for so long…\p" + .string "I promise to do my best from now on.\p" + .string "I’m sure you’ll quickly forget about\n" + .string "someone like me, but let’s meet\l" + .string "somewhere again!$" + +gText_082C1862:: @ 82C1862 + .string "Oh, {PLAYER}{STRING 5}.\n" + .string "There’s something I want you to hear.\p" + .string "I know that I don’t always sound\n" + .string "nice or polite…\p" + .string "When I win a battle, I think I come\n" + .string "across as being arrogant.\p" + .string "I don’t want people to dislike me,\n" + .string "so I want to say something nice to\l" + .string "someone I beat.\p" + .string "But I can’t think of anything good!\n" + .string "Could you think something up for me?$" + +gText_082C19A0:: @ 82C19A0 + .string "{STR_VAR_1}\p" + .string "Not bad!\n" + .string "Yup, that’s what I’ll go with!\p" + .string "I’m going to hit the road and do what\n" + .string "I can with what you taught me in\l" + .string "my head and heart.\p" + .string "I’m sorry that I’ve been so pushy\n" + .string "with you!\p" + .string "Next time, we battle, okay?\n" + .string "See you!$" + +gText_082C1A76:: @ 82C1A76 + .string "Oh, I can’t get over how busy I am!\n" + .string "Oh, hey, I was looking for you, {PLAYER}{STRING 5}.\p" + .string "Are you well as usual?\n" + .string "Things haven’t changed for me at all.\p" + .string "I’ve got running, fighting, and mapping\n" + .string "to do. Why am I so busy?\p" + .string "But even though I’m busy, it’d be rude\n" + .string "to just turn on my heels and walk away\l" + .string "from a win without saying a word.\p" + .string "So, what would be a cool saying to\n" + .string "underline my coolness when I’m done\l" + .string "and walking away? {PLAYER}{STRING 5}, help me!$" + +gText_082C1C16:: @ 82C1C16 + .string "{STR_VAR_1}\p" + .string "Okay, gotcha.\n" + .string "I can find time to say that!\p" + .string "Honestly, I’m glad I met a good mentor\n" + .string "like you.\p" + .string "I’m going to make time somehow so\n" + .string "I can get into battling.\p" + .string "Thanks for everything, {PLAYER}{STRING 5}!\n" + .string "We have to battle, you and me, one day!$" + +gText_082C1CF5:: @ 82C1CF5 + .string "I lucked out again!\n" + .string "{PLAYER}! Am I glad to see you!\l" + .string "Like usual, I need your advice!\p" + .string "Drum roll, please!\n" + .string "The last question I have is…\p" + .string "If I win a battle and want to end\n" + .string "it with a cool flourish, what\l" + .string "should I say?$" + +gText_082C1DC1:: @ 82C1DC1 + .string "{STR_VAR_1}\p" + .string "That… That’s fabulous!\n" + .string "It’s dignified and cool! I claim it!\p" + .string "…Listen, I think I’m getting decent\n" + .string "at this, huh?\p" + .string "So, I’m thinking of challenging other\n" + .string "TRAINERS from now on.\p" + .string "{PLAYER}, your advice really helped me.\p" + .string "Maybe one day, there’ll be a time when\n" + .string "we battle!\p" + .string "Thank you for everything!$" + +gText_082C1EDC:: @ 82C1EDC + .string "Oh, {PLAYER}.\n" + .string "I’m so glad I met you!\p" + .string "I no longer have any concerns with\n" + .string "regard to my POKéMON.\p" + .string "It’s myself that worries me…\p" + .string "Do you know how a TRAINER says\n" + .string "a few things upon winning a battle?\p" + .string "Definitely, I wish I could do that,\n" + .string "too!\p" + .string "Please, what should I say when\n" + .string "I win a battle?$" + +gText_082C1FEC:: @ 82C1FEC + .string "{STR_VAR_1}\p" + .string "Ah! That saying! It refreshes me\n" + .string "and makes me feel reborn!\p" + .string "I must use that right away!\p" + .string "And now, I must take my leave,\n" + .string "{PLAYER}…\p" + .string "I will go out to battle many others,\n" + .string "but never will I forget your teachings.\p" + .string "Perhaps one day…\n" + .string "Farewell!$" + +gText_082C20D1:: @ 82C20D1 + .string "Eek! I spotted {PLAYER}!\n" + .string "I… I’m overjoyed to see you!\p" + .string "Oh-oh-oh! There’s something I just\n" + .string "had to ask you!\p" + .string "A little while ago, I won a battle.\n" + .string "That part was giddying!\p" + .string "But it made me so overjoyed that\n" + .string "I choked up and couldn’t say a thing!\p" + .string "So now, {PLAYER}, please, I want you to\n" + .string "think up an exit line for when I win!$" + +gText_082C21FF:: @ 82C21FF + .string "{STR_VAR_1}\p" + .string "Waaaaah!\n" + .string "I’m going to say that?!\l" + .string "I… I’m delirious with joy!\p" + .string "Th-th-thank you!\n" + .string "I have nothing left to regret now!\p" + .string "I’m going to travel now and battle\n" + .string "all sorts of people.\p" + .string "Everything, I owe it to you, {PLAYER}.\n" + .string "Really, really, thank you!\p" + .string "I’ve got to go now, but let’s meet\n" + .string "in battle one day!$" + +gText_082C231C:: @ 82C231C + .string "Hola, bueno!\n" + .string "{PLAYER}{STRING 5}!\p" + .string "You know, I’m getting the itch to roam\n" + .string "and battle where I may.\p" + .string "But before I do, I want your advice\n" + .string "once again, please!\p" + .string "If I were to win a battle, what would\n" + .string "be a good boast I could say to my\l" + .string "fallen TRAINER opponent?$" + +gText_082C2407:: @ 82C2407 + .string "{STR_VAR_1}\p" + .string "Uh-huh, that’s sweet!\n" + .string "Si, bueno!\l" + .string "I’ll try saying that, like, ham!\p" + .string "And now, it’s time to say good-bye!\n" + .string "Thanks for all sorts of things!\p" + .string "Give me a battle one day, OK?\n" + .string "Adios!$" + +gText_082C24B5:: @ 82C24B5 + .string "{PLAYER}{STRING 5}, there’s big trouble!\p" + .string "When I win a battle, I brag about it\n" + .string "for an hour at least!\p" + .string "Of course I’m lying!\n" + .string "Wahahaha!\p" + .string "This is no lie, though.\n" + .string "I’m not very good at chatting.\p" + .string "So, how about deciding for me what\n" + .string "I should say after winning a battle,\l" + .string "master?$" + +gText_082C25B1:: @ 82C25B1 + .string "{STR_VAR_1}\p" + .string "That’s what I should say, huh?\n" + .string "Then, I’ll stay away from that!\p" + .string "Just kidding!\n" + .string "I’ll obey your teaching, master!\p" + .string "Thanks for teaching me all this time,\n" + .string "master!\p" + .string "I’m finally understanding what being\n" + .string "a TRAINER is about.\p" + .string "I’m going to go out and win battles\n" + .string "against any TRAINER.\p" + .string "Maybe it’ll be you one day, master!\p" + .string "That’s all!\n" + .string "Farewell, my master!$" + +gText_082C2707:: @ 82C2707 + .string "A-H-O-Y!\n" + .string "And that spells ahoy!\p" + .string "The rappin’ SAILOR am I!\n" + .string "This will be my last question,\l" + .string "don’t you cry!\p" + .string "It’s a saying question\n" + .string "that begs your suggestion!\p" + .string "If I win a match, what can I say\n" + .string "in a real cool way?$" + +gText_082C27D4:: @ 82C27D4 + .string "{STR_VAR_1}\p" + .string "Perfect! That’s what I’ll use.\n" + .string "I was right to make you choose!\p" + .string "And now, I think it’d be best,\n" + .string "if I were to fly the nest!\p" + .string "Thanks for all you taught me.\n" + .string "I’ll be off on a battle spree!\p" + .string "B-O-N-V-O-Y-A-G-E!\n" + .string "And that spells bon voyage,\l" + .string "to you this is my homage!$" + +gText_082C28D6:: @ 82C28D6 + .string "Oh, yeah, {PLAYER}!\n" + .string "I found you again today!\p" + .string "What should I do? Ask you again?\n" + .string "Why not? I’m already asking you!\p" + .string "Anyways, {PLAYER}…\n" + .string "Are you receiving me?\l" + .string "You are receiving me!\l" + .string "I need some more advice for me!\p" + .string "It’s about what I should yell.\n" + .string "Something cool to holler when\l" + .string "a battle ends well.\p" + .string "Come on, I wanna hear you say it!$" + +gText_082C2A0B:: @ 82C2A0B + .string "{STR_VAR_1}\p" + .string "All right, all right!\n" + .string "I’ll use that because it’s so tight!\p" + .string "I’m out of things to ask you.\n" + .string "Waving bye is all that’s left to do.\p" + .string "But maybe one day we’ll meet, with one\n" + .string "destined to go down in defeat.\p" + .string "But, it really is time to say farewell.\p" + .string "Well, {PLAYER}, I have to roam free,\n" + .string "but don’t you forget about me!\p" + .string "Take care, {PLAYER}!\n" + .string "Love ya!$" + +gText_082C2B50:: @ 82C2B50 + .string "{PLAYER}{STRING 5}, I’m finished…\n" + .string "My nose won’t stop dripping…\p" + .string "I was trying to think up something\n" + .string "cool to say when I win a battle.\p" + .string "It inspired me so much, it made me cry,\n" + .string "and now my nose won’t stop running…\p" + .string "So, things being this way,\n" + .string "I need you to decide for me, {PLAYER}{STRING 5}.\p" + .string "When I win a battle,\n" + .string "what should I say?$" + +gText_082C2C77:: @ 82C2C77 + .string "{STR_VAR_1}\p" + .string "… … …That’s good.\n" + .string "No, it’s awe inspiring!\l" + .string "It’s bringing fresh tears to my eyes!\p" + .string "But in spite of my tears and runny\n" + .string "nose, I will use that saying!\p" + .string "I’m plumb out of things to ask you,\n" + .string "{PLAYER}{STRING 5}.\p" + .string "From now on, we’re rivals!\n" + .string "Thanks for everything!$" + +gText_082C2D67:: @ 82C2D67 + .string "Er… Um…\n" + .string "{PLAYER}{STRING 5}…\p" + .string "Please, don’t look at me that way.\n" + .string "You’re making me all nervous.\p" + .string "I… I need your advice again.\n" + .string "I’ll make it my last, though…\p" + .string "It’s really embarrassing to ask,\n" + .string "but what if I win a battle?\l" + .string "What should I say?$" + +gText_082C2E41:: @ 82C2E41 + .string "{STR_VAR_1}\p" + .string "Oh… Okay!\n" + .string "I’ll try to say that!\l" + .string "I might be too nervous to say it…\p" + .string "Thank you, {PLAYER}{STRING 5}.\n" + .string "I have to say good-bye now.\p" + .string "I’ll obey all that you’ve taught me,\n" + .string "{PLAYER}{STRING 5}, and do the best I can.$" + +gText_082C2EF5:: @ 82C2EF5 + .string "Hm? You appear to be {PLAYER}{STRING 5}…\n" + .string "But are you really?\l" + .string "Perhaps a clever {PLAYER} DOLL?\p" + .string "Oh, no, no, no, don’t worry!\n" + .string "If you really are real, please\l" + .string "forget about my rudeness.\p" + .string "No need to be so angry. All I wish for\n" + .string "is more of your fine advice.\p" + .string "It concerns a saying.\p" + .string "More precisely, what should I say\n" + .string "if I win a battle?$" + +gText_082C3023:: @ 82C3023 + .string "{STR_VAR_1}\p" + .string "… … … … … …\n" + .string "When I win a match…\p" + .string "{STR_VAR_1}\p" + .string "…Are you serious?\p" + .string "I see. If you are serious, that’s fine.\n" + .string "I thank you for your time.\p" + .string "I do hope even I will be able to\n" + .string "put that saying to good use.\p" + .string "I seem to have run dry on what advice\n" + .string "I need.\p" + .string "I do believe it’s high time I bid you\n" + .string "farewell and strike out on my own.\p" + .string "Thank you, my mentor!\n" + .string "I apologize for my skepticism!$" diff --git a/include/apprentice.h b/include/apprentice.h index 98185e3c2..86c6250a0 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -7,11 +7,13 @@ struct ApprenticeTrainer { u8 name[6][PLAYER_NAME_LENGTH + 1]; // For all six languages. u16 otId; - u16 facilityClass; + u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; u8 rest[14]; }; extern const struct ApprenticeTrainer gApprentices[]; +const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language); + #endif // GUARD_APPRENTICE_H diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h new file mode 100644 index 000000000..7fa78bfbe --- /dev/null +++ b/include/constants/apprentice.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CONSTANTS_APPRENTICE_H +#define GUARD_CONSTANTS_APPRENTICE_H + +#define APPRENTICE_ASK_WHICH_LEVEL 0 +#define APPRENTICE_ASK_3SPECIES 1 +#define APPRENTICE_ASK_2SPECIES 2 +#define APPRENTICE_ASK_MOVES 3 +#define APPRENTICE_ASK_GIVE 4 +#define APPRENTICE_ASK_YES_NO 6 + +#endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/item_menu.h b/include/item_menu.h index 8a474bc0f..59316e948 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -54,6 +54,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC14(void); void sub_81AAC50(void); void sub_81AAC70(void); +void sub_81AAC28(void); void bag_menu_mail_related(void); void CB2_BagMenuFromStartMenu(void); u8 sub_81ABB2C(u8 pocketId); diff --git a/src/apprentice.c b/src/apprentice.c index a0237706c..9f26b561c 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -1,5 +1,6 @@ #include "global.h" #include "apprentice.h" +#include "constants/apprentice.h" #include "string_util.h" #include "script.h" #include "text.h" @@ -10,11 +11,16 @@ #include "menu.h" #include "script_menu.h" #include "party_menu.h" +#include "item_menu.h" #include "data2.h" #include "task.h" +#include "item.h" #include "sound.h" +#include "battle_tower.h" #include "event_data.h" +#include "international_string_util.h" #include "field_player_avatar.h" +#include "new_game.h" #include "event_object_movement.h" #include "constants/items.h" #include "constants/songs.h" @@ -36,6 +42,9 @@ struct Unk030062F0Struct extern struct Unk030062ECStruct *gUnknown_030062EC; extern struct Unk030062F0Struct *gUnknown_030062F0; +extern void (*gUnknown_030062F4)(void); + +extern void sub_8165AE8(struct Apprentice *); extern const u8 *const gUnknown_08611330[]; extern const u8 *const gUnknown_08610FF0[][2]; @@ -49,6 +58,11 @@ extern const u8 gUnknown_086114D3[]; extern const bool8 gUnknown_08611370[]; extern void (* const gUnknown_086114E0[])(void); +extern const u8 gUnknown_085DCEDC[]; +extern const u8 gUnknown_085DCF0E[]; +extern const u8 gUnknown_085DCEFA[]; +extern const u8 gUnknown_085DCF2C[]; + // text extern const u8 gText_Give[]; extern const u8 gText_NoNeed[]; @@ -57,12 +71,12 @@ extern const u8 gText_No[]; // This file's functions. void sub_81A087C(void); -u16 sub_819FF98(u8 arg0); -bool8 sub_81A0194(u8 arg0, u16 moveId); -void sub_81A0804(bool8 noBButton, u8 itemsCount, u8 windowId); -u8 sub_81A0784(u8 left, u8 top, u8 width, u8 height); -void sub_81A07E8(u8 windowId); -void sub_81A172C(void (*func)(void)); +static u16 sub_819FF98(u8 arg0); +static bool8 sub_81A0194(u8 arg0, u16 moveId); +static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId); +static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height); +static void RemoveAndHideWindow(u8 windowId); +static void ExecuteFuncAfterButtonPress(void (*func)(void)); void sub_819F99C(u8 id) { @@ -274,7 +288,7 @@ void sub_819FD64(void) speciesArrId = ((speciesArrId) >> (a0 << 2)) & 0xF; \ } -u16 sub_819FF98(u8 arg0) +static u16 sub_819FF98(u8 arg0) { u8 i, j; u8 id; @@ -380,7 +394,7 @@ u16 sub_819FF98(u8 arg0) return moveId; } -bool8 sub_81A0194(u8 arg0, u16 moveId) +static bool8 sub_81A0194(u8 arg0, u16 moveId) { u8 i; @@ -498,7 +512,7 @@ void sub_81A0390(u8 arg0) } } -void sub_81A04E4(u8 arg0) +static void CreateMenuWithAnswers(u8 arg0) { u8 i; u8 windowId; @@ -511,13 +525,13 @@ void sub_81A04E4(u8 arg0) switch (arg0) { - case 0: + case APPRENTICE_ASK_WHICH_LEVEL: left = 0x12; top = 8; strings[0] = gText_Lv50; strings[1] = gText_OpenLevel; break; - case 1: + case APPRENTICE_ASK_3SPECIES: count = 3; left = 0x12; top = 6; @@ -531,7 +545,7 @@ void sub_81A04E4(u8 arg0) strings[i] = gSpeciesNames[species]; } break; - case 2: + case APPRENTICE_ASK_2SPECIES: left = 0x12; top = 8; if (gSaveBlock2Ptr->field_B1_1 > 2) @@ -539,19 +553,19 @@ void sub_81A04E4(u8 arg0) strings[1] = gSpeciesNames[gUnknown_030062F0->unk2]; strings[0] = gSpeciesNames[gUnknown_030062F0->unk0]; break; - case 3: + case APPRENTICE_ASK_MOVES: left = 0x11; top = 8; strings[0] = gMoveNames[gUnknown_030062F0->unk4]; strings[1] = gMoveNames[gUnknown_030062F0->unk6]; break; - case 4: + case APPRENTICE_ASK_GIVE: left = 0x12; top = 8; strings[0] = gText_Give; strings[1] = gText_NoNeed; break; - case 6: + case APPRENTICE_ASK_YES_NO: left = 0x14; top = 8; strings[0] = gText_Yes; @@ -573,21 +587,21 @@ void sub_81A04E4(u8 arg0) width = convert_pixel_width_to_tile_width(pixelWidth); left = sub_80E2D5C(left, width); - windowId = sub_81A0784(left, top, width, count * 2); + windowId = CreateAndShowWindow(left, top, width, count * 2); SetStandardWindowBorderStyle(windowId, 0); for (i = 0; i < count; i++) AddTextPrinterParameterized(windowId, 1, strings[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, 0); - sub_81A0804(TRUE, count, windowId); + CreateChooseAnswerTask(TRUE, count, windowId); } #define tNoBButton data[4] #define tWrapAround data[5] #define tWindowId data[6] -void sub_81A070C(u8 taskId) +void Task_ChooseAnswer(u8 taskId) { s8 input; s16 *data = gTasks[taskId].data; @@ -613,12 +627,12 @@ void sub_81A070C(u8 taskId) break; } - sub_81A07E8(tWindowId); + RemoveAndHideWindow(tWindowId); DestroyTask(taskId); EnableBothScriptContexts(); } -u8 sub_81A0784(u8 left, u8 top, u8 width, u8 height) +static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height) { u8 windowId; struct WindowTemplate winTemplate = CreateWindowTemplate(0, left + 1, top + 1, width, height, 15, 100); @@ -629,15 +643,15 @@ u8 sub_81A0784(u8 left, u8 top, u8 width, u8 height) return windowId; } -void sub_81A07E8(u8 windowId) +static void RemoveAndHideWindow(u8 windowId) { sub_8198070(windowId, TRUE); RemoveWindow(windowId); } -void sub_81A0804(bool8 noBButton, u8 itemsCount, u8 windowId) +static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId) { - u8 taskId = CreateTask(sub_81A070C, 80); + u8 taskId = CreateTask(Task_ChooseAnswer, 80); gTasks[taskId].tNoBButton = noBButton; if (itemsCount > 3) @@ -734,22 +748,22 @@ void sub_81A09D0(void) void sub_81A0A20(void) { - sub_81A04E4(gSpecialVar_0x8005); + CreateMenuWithAnswers(gSpecialVar_0x8005); } -void sub_81A0A34(u8 taskId) +static void Task_WaitForPrintingMessage(u8 taskId) { if (!RunTextPrintersAndIsPrinter0Active()) { DestroyTask(taskId); if (gSpecialVar_0x8005) - sub_81A172C(EnableBothScriptContexts); + ExecuteFuncAfterButtonPress(EnableBothScriptContexts); else EnableBothScriptContexts(); } } -void sub_81A0A70(void) +static void PrintMessage(void) { const u8 *string; @@ -829,7 +843,7 @@ void sub_81A0A70(void) StringExpandPlaceholders(gStringVar4, string); AddTextPrinterForMessage(TRUE); - CreateTask(sub_81A0A34, 1); + CreateTask(Task_WaitForPrintingMessage, 1); } void sub_81A0C9C(void) @@ -839,7 +853,7 @@ void sub_81A0C9C(void) sub_808B864(); sub_808BCF4(); NewMenuHelpers_DrawDialogueFrame(0, 1); - sub_81A0A70(); + PrintMessage(); } void sub_81A0CC0(void) @@ -945,3 +959,459 @@ void sub_81A0FE4(void) { FREE_AND_SET_NULL(gUnknown_030062F0); } + +void sub_81A0FFC(void) +{ + u8 *stringDst; + u8 text[16]; + u32 speciesArrayId; + + switch (gSpecialVar_0x8005) + { + case 0: + stringDst = gStringVar1; + break; + case 1: + stringDst = gStringVar2; + break; + case 2: + stringDst = gStringVar3; + break; + default: + return; + } + + switch (gSpecialVar_0x8006) + { + case 0: + StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk0]); + break; + case 1: + StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk2]); + break; + case 2: + StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk0]); + break; + case 3: + StringCopy(stringDst, gMoveNames[gUnknown_030062F0->unk4]); + break; + case 4: + StringCopy(stringDst, gMoveNames[gUnknown_030062F0->unk6]); + break; + case 5: + StringCopy(stringDst, ItemId_GetName(gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2)); + break; + case 6: + TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(gSaveBlock2Ptr->field_B0, LANGUAGE_ENGLISH), LANGUAGE_ENGLISH); + StringCopy(stringDst, text); + break; + case 8: + if (gSaveBlock2Ptr->field_B1_0 == 1) + StringCopy(stringDst, gText_Lv50); + else + StringCopy(stringDst, gText_OpenLevel); + break; + case 7: + ConvertBattleFrontierTrainerSpeechToString(gSaveBlock2Ptr->field_DC[0].easyChatWords); + StringCopy(stringDst, gStringVar4); + break; + case 9: + if (gSaveBlock2Ptr->field_B1_2 < 3) + { + APPRENTICE_SPECIES_ID(speciesArrayId, gSaveBlock2Ptr->field_B1_2); + } + else + { + speciesArrayId = 0; + } + StringCopy(stringDst, gSpeciesNames[gApprentices[gSaveBlock2Ptr->field_B0].species[speciesArrayId]]); + break; + } +} + +void sub_81A11F8(void) +{ + gSaveBlock2Ptr->field_B1_2 = gSpecialVar_0x8005; +} + +void sub_81A1218(void) +{ + sub_81AAC28(); +} + +#ifdef NONMATCHING +void sub_81A1224(void) +{ + u8 count; + u8 i, j; + + if (gSaveBlock2Ptr->field_B1_1 < 3) + return; + + count = 0; + for (j = 0; j < 9 && gSaveBlock2Ptr->field_B8[j].unk0_0; count++, j++) + ; + + for (i = 0; i < count && i < gSaveBlock2Ptr->field_B1_1 - 3; i++) + { + if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 1 + && gSaveBlock2Ptr->field_B8[i].unk0_3 + && gSaveBlock2Ptr->field_B8[i].unk2 == gSpecialVar_0x8005) + { + gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_3 = 0; + gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2 = gSpecialVar_0x8005; + gSpecialVar_Result = i; + return; + } + } + + gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_3 = 1; + gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2 = gSpecialVar_0x8005; + gSpecialVar_Result = 1; +} +#else +NAKED +void sub_81A1224(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + ldr r1, =gSaveBlock2Ptr\n\ + ldr r3, [r1]\n\ + adds r0, r3, 0\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + adds r7, r1, 0\n\ + cmp r0, 0x2\n\ + bhi _081A1242\n\ + b _081A1362\n\ +_081A1242:\n\ + movs r5, 0\n\ + movs r2, 0\n\ + adds r0, r3, 0\n\ + adds r0, 0xB8\n\ + ldrb r0, [r0]\n\ + lsls r0, 30\n\ + ldr r1, =gSpecialVar_0x8005\n\ + mov r12, r1\n\ + ldr r1, =gSpecialVar_Result\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _081A127C\n\ + adds r3, r7, 0\n\ +_081A125C:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x8\n\ + bhi _081A127C\n\ + ldr r0, [r3]\n\ + lsls r1, r2, 2\n\ + adds r0, r1\n\ + adds r0, 0xB8\n\ + ldrb r0, [r0]\n\ + lsls r0, 30\n\ + cmp r0, 0\n\ + bne _081A125C\n\ +_081A127C:\n\ + movs r4, 0\n\ + cmp r4, r5\n\ + bcs _081A1322\n\ + ldr r0, [r7]\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + cmp r4, r0\n\ + bge _081A1322\n\ + adds r6, r7, 0\n\ + mov r9, r4\n\ +_081A1296:\n\ + ldr r3, [r6]\n\ + lsls r0, r4, 2\n\ + adds r2, r3, r0\n\ + adds r0, r2, 0\n\ + adds r0, 0xB8\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 30\n\ + lsrs r0, 30\n\ + cmp r0, 0x1\n\ + bne _081A1308\n\ + lsrs r0, r1, 6\n\ + cmp r0, 0\n\ + beq _081A1308\n\ + adds r0, r2, 0\n\ + adds r0, 0xBA\n\ + ldrh r0, [r0]\n\ + mov r2, r12\n\ + ldrh r2, [r2]\n\ + cmp r0, r2\n\ + bne _081A1308\n\ + adds r0, r3, 0\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + lsls r0, 2\n\ + adds r0, r3, r0\n\ + adds r0, 0xB8\n\ + ldrb r2, [r0]\n\ + movs r1, 0x3F\n\ + ands r1, r2\n\ + strb r1, [r0]\n\ + ldr r1, [r6]\n\ + adds r0, r1, 0\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + lsls r0, 2\n\ + adds r1, r0\n\ + mov r2, r12\n\ + ldrh r0, [r2]\n\ + adds r1, 0xBA\n\ + strh r0, [r1]\n\ + mov r1, r9\n\ + mov r0, r8\n\ + strh r1, [r0]\n\ + b _081A1362\n\ + .pool\n\ +_081A1308:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, r5\n\ + bcs _081A1322\n\ + ldr r0, [r6]\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + cmp r4, r0\n\ + blt _081A1296\n\ +_081A1322:\n\ + ldr r2, [r7]\n\ + adds r0, r2, 0\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + lsls r0, 2\n\ + adds r2, r0\n\ + adds r2, 0xB8\n\ + ldrb r1, [r2]\n\ + movs r0, 0x3F\n\ + ands r0, r1\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldr r1, [r7]\n\ + adds r0, r1, 0\n\ + adds r0, 0xB1\n\ + ldrb r0, [r0]\n\ + lsls r0, 26\n\ + lsrs r0, 28\n\ + subs r0, 0x3\n\ + lsls r0, 2\n\ + adds r1, r0\n\ + mov r2, r12\n\ + ldrh r0, [r2]\n\ + adds r1, 0xBA\n\ + strh r0, [r1]\n\ + movs r0, 0x1\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ +_081A1362:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ +"); +} +#endif // NONMATCHING + +void sub_81A1370(void) +{ + s32 i; + s32 r10; + s32 r9; + + if (gSaveBlock2Ptr->field_DC[0].playerName[0] == EOS) + return; + + for (i = 0; i < 3; i++) + { + if (gSaveBlock2Ptr->field_DC[i + 1].playerName[0] == EOS) + { + gSaveBlock2Ptr->field_DC[i + 1] = gSaveBlock2Ptr->field_DC[0]; + return; + } + } + + r10 = 0xFFFF; + r9 = -1; + for (i = 1; i < 4; i++) + { + if (ReadUnalignedWord(gSaveBlock2Ptr->field_DC[i].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId) + && gSaveBlock2Ptr->field_DC[i].field_2 < r10) + { + r10 = gSaveBlock2Ptr->field_DC[i].field_2; + r9 = i; + } + } + + if (r9 > 0) + gSaveBlock2Ptr->field_DC[r9] = gSaveBlock2Ptr->field_DC[0]; +} + +void sub_81A1438(void) +{ + u8 i; + + gSaveBlock2Ptr->field_DC[0].field_0_0 = gSaveBlock2Ptr->field_B0; + gSaveBlock2Ptr->field_DC[0].field_0_1 = gSaveBlock2Ptr->field_B1_0; + + for (i = 0; i < 9 && gSaveBlock2Ptr->field_B8[i].unk0_0; i++) + ; + + gSaveBlock2Ptr->field_DC[0].field_1 = i; + if (gSaveBlock2Ptr->field_DC[0].field_2 < 255) + gSaveBlock2Ptr->field_DC[0].field_2++; + + sub_81A0390(gSaveBlock2Ptr->field_DC[0].field_1); + for (i = 0; i < 4; i++) + gSaveBlock2Ptr->field_DC[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; + + StringCopy(gSaveBlock2Ptr->field_DC[0].playerName, gSaveBlock2Ptr->playerName); + gSaveBlock2Ptr->field_DC[0].language = gGameLanguage; + sub_8165AE8(&gSaveBlock2Ptr->field_DC[0]); +} + +void sub_81A150C(void) +{ + u8 i; + u8 mapObjectGfxId; + u8 class = gApprentices[gSaveBlock2Ptr->field_DC[0].field_0_0].facilityClass; + + for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++) + ; + + if (i != 30) + { + mapObjectGfxId = gUnknown_085DCF0E[i]; + VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId); + } + else + { + for (i = 0; i < 20 && gUnknown_085DCEFA[i] != class; i++) + ; + + if (i != 20) + { + mapObjectGfxId = gUnknown_085DCF2C[i]; + VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId); + } + } +} + +void sub_81A15A4(void) +{ + u8 i; + u8 mapObjectGfxId; + u8 class = gApprentices[gSaveBlock2Ptr->field_B0].facilityClass; + + for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++) + ; + + if (i != 30) + { + mapObjectGfxId = gUnknown_085DCF0E[i]; + VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId); + } + else + { + for (i = 0; i < 20 && gUnknown_085DCEFA[i] != class; i++) + ; + + if (i != 20) + { + mapObjectGfxId = gUnknown_085DCF2C[i]; + VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId); + } + } +} + +void sub_81A1638(void) +{ + gSpecialVar_0x8004 = 1; +} + +void sub_81A1644(void) +{ + gSpecialVar_0x8004 = 1; +} + +const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language) +{ + const struct ApprenticeTrainer *apprentice = &gApprentices[apprenticeId]; + + switch (language) + { + case LANGUAGE_JAPANESE: + return apprentice->name[0]; + case LANGUAGE_ENGLISH: + return apprentice->name[1]; + case LANGUAGE_FRENCH: + return apprentice->name[2]; + case LANGUAGE_ITALIAN: + return apprentice->name[3]; + case LANGUAGE_GERMAN: + return apprentice->name[4]; + case LANGUAGE_SPANISH: + default: + return apprentice->name[5]; + } +} + +void sub_81A16B4(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + SwitchTaskToFollowupFunc(taskId); +} + +static void Task_ExecuteFuncAfterButtonPress(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + gUnknown_030062F4 = (void*)(u32)(((u16)gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 0x10))); + gUnknown_030062F4(); + DestroyTask(taskId); + } +} + +static void ExecuteFuncAfterButtonPress(void (*func)(void)) +{ + u8 taskId = CreateTask(Task_ExecuteFuncAfterButtonPress, 1); + gTasks[taskId].data[0] = (u32)(func); + gTasks[taskId].data[1] = (u32)(func) >> 16; +} + +void sub_81A175C(TaskFunc taskFunc) +{ + u8 taskId = CreateTask(sub_81A16B4, 1); + SetTaskFuncWithFollowupFunc(taskId, sub_81A16B4, taskFunc); +} diff --git a/src/pokemon.c b/src/pokemon.c index bb2fc753c..327b76a7b 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -80,7 +80,6 @@ extern u8 StorageGetCurrentBox(void); extern void set_unknown_box_id(u8); extern void sub_803FA70(u8 battlerId); extern u8 sav1_map_get_name(void); -extern const u8 *sub_81A1650(u8, u8 language); extern u8 GetFrontierEnemyMonLevel(u8); extern bool8 InBattlePyramid(void); extern bool8 InBattlePike(void); @@ -2901,7 +2900,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m language = src->language; SetMonData(mon, MON_DATA_LANGUAGE, &language); - SetMonData(mon, MON_DATA_OT_NAME, sub_81A1650(src->field_0_0, language)); + SetMonData(mon, MON_DATA_OT_NAME, GetApprenticeNameInLanguage(src->field_0_0, language)); CalculateMonStats(mon); } From 145df4906326488874b3f75ef96f99e85b18f2a0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 14:35:51 +0200 Subject: [PATCH 05/10] Document more of apprentice --- asm/battle_frontier_2.s | 2 +- asm/battle_tower.s | 2 +- data/scripts/apprentice.inc | 211 +++++++++------------------------ include/apprentice.h | 1 + include/constants/apprentice.h | 11 ++ include/global.h | 11 +- src/apprentice.c | 110 +++++++++-------- src/pokemon.c | 10 +- src/record_mixing.c | 8 +- 9 files changed, 141 insertions(+), 225 deletions(-) diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index f8334b5a5..7f987ce4b 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -3620,7 +3620,7 @@ _081A3758: adds r0, 0x70 lsls r0, 24 lsrs r0, 24 - bl sub_819F99C + bl CopyFriendsApprenticeChallengeText b _081A38F8 _081A3766: movs r0, 0xFA diff --git a/asm/battle_tower.s b/asm/battle_tower.s index aa6e3d779..0f319ab1e 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2831,7 +2831,7 @@ _0816399C: adds r0, 0x70 lsls r0, 24 lsrs r0, 24 - bl sub_819F99C + bl CopyFriendsApprenticeChallengeText _081639A8: pop {r0} bx r0 diff --git a/data/scripts/apprentice.inc b/data/scripts/apprentice.inc index 1021fb8b2..d157c0b45 100644 --- a/data/scripts/apprentice.inc +++ b/data/scripts/apprentice.inc @@ -1,5 +1,26 @@ #include "constants/apprentice.h" +.macro apprentice_msg waitbuttonpress which +setvar VAR_0x8004, 8 +setvar VAR_0x8005, \waitbuttonpress +setvar VAR_0x8006, \which +special sub_81A085C +.endm + +.macro apprentice_buff whichstringvar tobuff +setvar VAR_0x8004, 16 +setvar VAR_0x8005, \whichstringvar +setvar VAR_0x8006, \tobuff +special sub_81A085C +.endm + +.macro apprentice_menu which +setvar VAR_0x8004, 7 +setvar VAR_0x8005, \which +special sub_81A085C +waitstate +.endm + EventScript_Apprentice:: @ 82B688D lock faceplayer @@ -32,46 +53,25 @@ BattleFrontier_BattleTowerLobby_EventScript_2B68BE: end BattleFrontier_BattleTowerLobby_EventScript_2B6900: - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 6 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 0 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_NAME + apprentice_msg FALSE, 0 waitstate BattleFrontier_BattleTowerLobby_EventScript_2B6925: - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_YES_NO - special sub_81A085C - waitstate + apprentice_menu APPRENTICE_ASK_YES_NO compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69BB - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_WHICH_LEVEL - special sub_81A085C + apprentice_msg FALSE, 2 waitstate + apprentice_menu APPRENTICE_ASK_WHICH_LEVEL setvar VAR_0x8004, 1 setorcopyvar VAR_0x8005, VAR_RESULT addvar VAR_0x8005, 1 special sub_81A085C setvar VAR_0x8004, 3 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 8 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 3 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_LEVEL + apprentice_msg TRUE, 3 waitstate call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D release @@ -82,10 +82,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6925: end BattleFrontier_BattleTowerLobby_EventScript_2B69BB: - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 1 - special sub_81A085C + apprentice_msg FALSE, 1 waitstate goto BattleFrontier_BattleTowerLobby_EventScript_2B6925 @@ -93,23 +90,11 @@ BattleFrontier_BattleTowerLobby_EventScript_2B69D3: setvar VAR_0x8004, 14 setvar VAR_0x8005, 2 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 0 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 1 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 6 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_2SPECIES - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_SPECIES1 + apprentice_buff 1, APPRENTICE_BUFF_SPECIES2 + apprentice_msg FALSE, 6 waitstate + apprentice_menu APPRENTICE_ASK_2SPECIES copyvar VAR_0x8005, VAR_RESULT compare VAR_0x8005, 0 call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6ABA @@ -132,10 +117,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B69D3: special sub_81A085C setvar VAR_0x8004, 15 special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 7 - special sub_81A085C + apprentice_msg TRUE, 7 waitstate call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D release @@ -162,14 +144,8 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6ACF: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 10 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 + apprentice_msg TRUE, 10 waitstate setvar VAR_0x8004, 15 special sub_81A085C @@ -186,14 +162,8 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B09: special sub_81A085C compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C0C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 5 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 12 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_ITEM + apprentice_msg TRUE, 12 waitstate setvar VAR_0x8004, 5 special sub_81A085C @@ -209,29 +179,17 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B81: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 13 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_GIVE - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 + apprentice_msg FALSE, 13 waitstate + apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 special sub_81A085C compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 BattleFrontier_BattleTowerLobby_EventScript_2B6BD4: - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 14 - special sub_81A085C + apprentice_msg TRUE, 14 waitstate setvar VAR_0x8004, 5 special sub_81A085C @@ -247,23 +205,11 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C0C: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 5 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 16 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_GIVE - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_ITEM + apprentice_buff 1, APPRENTICE_BUFF_SPECIES3 + apprentice_msg FALSE, 16 waitstate + apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 special sub_81A085C compare VAR_RESULT, 0 @@ -275,27 +221,12 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C77: setvar VAR_0x8004, 14 setvar VAR_0x8005, 3 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 2 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 3 - special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 2 - setvar VAR_0x8006, 4 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 8 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_MOVES - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 + apprentice_buff 1, APPRENTICE_BUFF_MOVE1 + apprentice_buff 2, APPRENTICE_BUFF_MOVE2 + apprentice_msg FALSE, 8 waitstate + apprentice_menu APPRENTICE_ASK_MOVES copyvar VAR_0x8005, VAR_RESULT compare VAR_0x8005, 0 call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D50 @@ -311,10 +242,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C77: special sub_81A085C setvar VAR_0x8004, 15 special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 9 - special sub_81A085C + apprentice_msg TRUE, 9 waitstate call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D release @@ -333,28 +261,16 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D56: return BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 4 - special sub_81A085C - waitstate - setvar VAR_0x8004, 7 - setvar VAR_0x8005, APPRENTICE_ASK_3SPECIES - special sub_81A085C + apprentice_msg FALSE, 4 waitstate + apprentice_menu APPRENTICE_ASK_3SPECIES copyvar VAR_0x8005, VAR_RESULT setvar VAR_0x8004, 18 special sub_81A085C setvar VAR_0x8004, 5 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 9 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 5 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_SPECIES4 + apprentice_msg TRUE, 5 waitstate call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D release @@ -365,10 +281,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: end BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 11 - special sub_81A085C + apprentice_msg TRUE, 11 waitstate setvar VAR_0x8004, 25 special sub_81A085C @@ -378,14 +291,8 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: faceplayer setvar VAR_0x8004, 21 special sub_81A085C - setvar VAR_0x8004, 16 - setvar VAR_0x8005, 0 - setvar VAR_0x8006, 7 - special sub_81A085C - setvar VAR_0x8004, 8 - setvar VAR_0x8005, 1 - setvar VAR_0x8006, 15 - special sub_81A085C + apprentice_buff 0, APPRENTICE_BUFF_EASY_CHAT + apprentice_msg TRUE, 15 waitstate setvar VAR_0x8004, 9 special sub_81A085C diff --git a/include/apprentice.h b/include/apprentice.h index 86c6250a0..90383b737 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -14,6 +14,7 @@ struct ApprenticeTrainer extern const struct ApprenticeTrainer gApprentices[]; +void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId); const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language); #endif // GUARD_APPRENTICE_H diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 7fa78bfbe..9db58bb8e 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -8,4 +8,15 @@ #define APPRENTICE_ASK_GIVE 4 #define APPRENTICE_ASK_YES_NO 6 +#define APPRENTICE_BUFF_SPECIES1 0 +#define APPRENTICE_BUFF_SPECIES2 1 +#define APPRENTICE_BUFF_SPECIES3 2 +#define APPRENTICE_BUFF_MOVE1 3 +#define APPRENTICE_BUFF_MOVE2 4 +#define APPRENTICE_BUFF_ITEM 5 +#define APPRENTICE_BUFF_NAME 6 +#define APPRENTICE_BUFF_EASY_CHAT 7 +#define APPRENTICE_BUFF_LEVEL 8 +#define APPRENTICE_BUFF_SPECIES4 9 + #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/global.h b/include/global.h index 0100d04db..43e829dcf 100644 --- a/include/global.h +++ b/include/global.h @@ -304,11 +304,10 @@ struct ApprenticeMon struct Apprentice { - u8 field_0_0:5; - u8 field_0_1:2; + u8 id:5; + u8 lvlMode:2; // + 1 u8 field_1; - u8 field_2; - u8 field_3; + u8 number; struct ApprenticeMon monData[3]; u16 easyChatWords[6]; u8 playerId[4]; @@ -514,7 +513,7 @@ struct SaveBlock2 /*0xA8*/ u32 field_A8; /*0xAC*/ u32 encryptionKey; - // TODO: fix and verify labels + // Possibly player's apprentice, will document once battle tower is decompiled. /*0xB0*/ u8 field_B0; /*0xB1*/ u8 field_B1_0:2; /*0xB1*/ u8 field_B1_1:4; @@ -524,7 +523,7 @@ struct SaveBlock2 /*0xB3*/ u8 field_B3; /*0xB4*/ u8 field_B4[3]; /*0xB8*/ struct Sav2_B8 field_B8[9]; - /*0xDC*/ struct Apprentice field_DC[4]; + /*0xDC*/ struct Apprentice apprentices[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; diff --git a/src/apprentice.c b/src/apprentice.c index 9f26b561c..b4b20f672 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -78,21 +78,19 @@ static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height); static void RemoveAndHideWindow(u8 windowId); static void ExecuteFuncAfterButtonPress(void (*func)(void)); -void sub_819F99C(u8 id) +void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId) { u8 i, var; const u8 *str; - var = gSaveBlock2Ptr->field_DC[id].field_2; - for (i = 0; var != 0 && i < 4; i++) - { - var /= 10; - } + var = gSaveBlock2Ptr->apprentices[saveblockApprenticeId].number; + for (i = 0; var != 0 && i < 4; var /= 10, i++) + ; - StringCopy7(gStringVar1, gSaveBlock2Ptr->field_DC[id].playerName); - ConvertInternationalString(gStringVar1, gSaveBlock2Ptr->field_DC[id].language); - ConvertIntToDecimalStringN(gStringVar2, gSaveBlock2Ptr->field_DC[id].field_2, STR_CONV_MODE_RIGHT_ALIGN, i); - str = gUnknown_08611330[gSaveBlock2Ptr->field_DC[id].field_0_0]; + StringCopy7(gStringVar1, gSaveBlock2Ptr->apprentices[saveblockApprenticeId].playerName); + ConvertInternationalString(gStringVar1, gSaveBlock2Ptr->apprentices[saveblockApprenticeId].language); + ConvertIntToDecimalStringN(gStringVar2, gSaveBlock2Ptr->apprentices[saveblockApprenticeId].number, STR_CONV_MODE_RIGHT_ALIGN, i); + str = gUnknown_08611330[gSaveBlock2Ptr->apprentices[saveblockApprenticeId].id]; StringExpandPlaceholders(gStringVar4, str); } @@ -109,7 +107,7 @@ void sub_819FA5C(struct Apprentice *apprentice) apprentice->easyChatWords[i] |= 0xFFFF; apprentice->playerName[0] = EOS; - apprentice->field_0_0 = 16; + apprentice->id = 16; } void sub_819FAA0(void) @@ -120,16 +118,16 @@ void sub_819FAA0(void) for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) - gSaveBlock2Ptr->field_DC[i].easyChatWords[j] |= 0xFFFF; - gSaveBlock2Ptr->field_DC[i].field_0_0 = 16; - gSaveBlock2Ptr->field_DC[i].playerName[0] = EOS; - gSaveBlock2Ptr->field_DC[i].field_0_1 = 0; - gSaveBlock2Ptr->field_DC[i].field_2 = 0; - gSaveBlock2Ptr->field_DC[i].field_1 = 0; + gSaveBlock2Ptr->apprentices[i].easyChatWords[j] |= 0xFFFF; + gSaveBlock2Ptr->apprentices[i].id = 16; + gSaveBlock2Ptr->apprentices[i].playerName[0] = EOS; + gSaveBlock2Ptr->apprentices[i].lvlMode = 0; + gSaveBlock2Ptr->apprentices[i].number = 0; + gSaveBlock2Ptr->apprentices[i].field_1 = 0; for (j = 0; j < 4; j++) - gSaveBlock2Ptr->field_DC[i].playerId[j] = 0; - gSaveBlock2Ptr->field_DC[i].language = gGameLanguage; - gSaveBlock2Ptr->field_DC[i].unk40 = 0; + gSaveBlock2Ptr->apprentices[i].playerId[j] = 0; + gSaveBlock2Ptr->apprentices[i].language = gGameLanguage; + gSaveBlock2Ptr->apprentices[i].unk40 = 0; } sub_81A087C(); @@ -142,19 +140,19 @@ bool8 sub_819FBB0(void) void sub_819FBC8(void) { - if (gSaveBlock2Ptr->field_DC[0].field_2 == 0) + if (gSaveBlock2Ptr->apprentices[0].number == 0) { do { gSaveBlock2Ptr->field_B0 = gUnknown_08611548[Random() % ARRAY_COUNT(gUnknown_08611548)]; - } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->field_DC[0].field_0_0); + } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->apprentices[0].id); } else { do { gSaveBlock2Ptr->field_B0 = Random() % 16; - } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->field_DC[0].field_0_0); + } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->apprentices[0].id); } } @@ -472,16 +470,16 @@ void sub_81A0390(u8 arg0) for (i = 0; i < 3; i++) { - gSaveBlock2Ptr->field_DC[0].monData[i].species = 0; - gSaveBlock2Ptr->field_DC[0].monData[i].item = 0; + gSaveBlock2Ptr->apprentices[0].monData[i].species = 0; + gSaveBlock2Ptr->apprentices[0].monData[i].item = 0; for (j = 0; j < 4; j++) - gSaveBlock2Ptr->field_DC[0].monData[i].moves[j] = 0; + gSaveBlock2Ptr->apprentices[0].monData[i].moves[j] = 0; } j = gSaveBlock2Ptr->field_B1_2; for (i = 0; i < 3; i++) { - apprenticeMons[j] = &gSaveBlock2Ptr->field_DC[0].monData[i]; + apprenticeMons[j] = &gSaveBlock2Ptr->apprentices[0].monData[i]; j = (j + 1) % 3; } @@ -983,39 +981,39 @@ void sub_81A0FFC(void) switch (gSpecialVar_0x8006) { - case 0: + case APPRENTICE_BUFF_SPECIES1: StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk0]); break; - case 1: + case APPRENTICE_BUFF_SPECIES2: StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk2]); break; - case 2: + case APPRENTICE_BUFF_SPECIES3: StringCopy(stringDst, gSpeciesNames[gUnknown_030062F0->unk0]); break; - case 3: + case APPRENTICE_BUFF_MOVE1: StringCopy(stringDst, gMoveNames[gUnknown_030062F0->unk4]); break; - case 4: + case APPRENTICE_BUFF_MOVE2: StringCopy(stringDst, gMoveNames[gUnknown_030062F0->unk6]); break; - case 5: + case APPRENTICE_BUFF_ITEM: StringCopy(stringDst, ItemId_GetName(gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2)); break; - case 6: + case APPRENTICE_BUFF_NAME: TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(gSaveBlock2Ptr->field_B0, LANGUAGE_ENGLISH), LANGUAGE_ENGLISH); StringCopy(stringDst, text); break; - case 8: + case APPRENTICE_BUFF_LEVEL: if (gSaveBlock2Ptr->field_B1_0 == 1) StringCopy(stringDst, gText_Lv50); else StringCopy(stringDst, gText_OpenLevel); break; - case 7: - ConvertBattleFrontierTrainerSpeechToString(gSaveBlock2Ptr->field_DC[0].easyChatWords); + case APPRENTICE_BUFF_EASY_CHAT: + ConvertBattleFrontierTrainerSpeechToString(gSaveBlock2Ptr->apprentices[0].easyChatWords); StringCopy(stringDst, gStringVar4); break; - case 9: + case APPRENTICE_BUFF_SPECIES4: if (gSaveBlock2Ptr->field_B1_2 < 3) { APPRENTICE_SPECIES_ID(speciesArrayId, gSaveBlock2Ptr->field_B1_2); @@ -1250,14 +1248,14 @@ void sub_81A1370(void) s32 r10; s32 r9; - if (gSaveBlock2Ptr->field_DC[0].playerName[0] == EOS) + if (gSaveBlock2Ptr->apprentices[0].playerName[0] == EOS) return; for (i = 0; i < 3; i++) { - if (gSaveBlock2Ptr->field_DC[i + 1].playerName[0] == EOS) + if (gSaveBlock2Ptr->apprentices[i + 1].playerName[0] == EOS) { - gSaveBlock2Ptr->field_DC[i + 1] = gSaveBlock2Ptr->field_DC[0]; + gSaveBlock2Ptr->apprentices[i + 1] = gSaveBlock2Ptr->apprentices[0]; return; } } @@ -1266,46 +1264,46 @@ void sub_81A1370(void) r9 = -1; for (i = 1; i < 4; i++) { - if (ReadUnalignedWord(gSaveBlock2Ptr->field_DC[i].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId) - && gSaveBlock2Ptr->field_DC[i].field_2 < r10) + if (ReadUnalignedWord(gSaveBlock2Ptr->apprentices[i].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId) + && gSaveBlock2Ptr->apprentices[i].number < r10) { - r10 = gSaveBlock2Ptr->field_DC[i].field_2; + r10 = gSaveBlock2Ptr->apprentices[i].number; r9 = i; } } if (r9 > 0) - gSaveBlock2Ptr->field_DC[r9] = gSaveBlock2Ptr->field_DC[0]; + gSaveBlock2Ptr->apprentices[r9] = gSaveBlock2Ptr->apprentices[0]; } void sub_81A1438(void) { u8 i; - gSaveBlock2Ptr->field_DC[0].field_0_0 = gSaveBlock2Ptr->field_B0; - gSaveBlock2Ptr->field_DC[0].field_0_1 = gSaveBlock2Ptr->field_B1_0; + gSaveBlock2Ptr->apprentices[0].id = gSaveBlock2Ptr->field_B0; + gSaveBlock2Ptr->apprentices[0].lvlMode = gSaveBlock2Ptr->field_B1_0; for (i = 0; i < 9 && gSaveBlock2Ptr->field_B8[i].unk0_0; i++) ; - gSaveBlock2Ptr->field_DC[0].field_1 = i; - if (gSaveBlock2Ptr->field_DC[0].field_2 < 255) - gSaveBlock2Ptr->field_DC[0].field_2++; + gSaveBlock2Ptr->apprentices[0].field_1 = i; + if (gSaveBlock2Ptr->apprentices[0].number < 255) + gSaveBlock2Ptr->apprentices[0].number++; - sub_81A0390(gSaveBlock2Ptr->field_DC[0].field_1); + sub_81A0390(gSaveBlock2Ptr->apprentices[0].field_1); for (i = 0; i < 4; i++) - gSaveBlock2Ptr->field_DC[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; + gSaveBlock2Ptr->apprentices[0].playerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; - StringCopy(gSaveBlock2Ptr->field_DC[0].playerName, gSaveBlock2Ptr->playerName); - gSaveBlock2Ptr->field_DC[0].language = gGameLanguage; - sub_8165AE8(&gSaveBlock2Ptr->field_DC[0]); + StringCopy(gSaveBlock2Ptr->apprentices[0].playerName, gSaveBlock2Ptr->playerName); + gSaveBlock2Ptr->apprentices[0].language = gGameLanguage; + sub_8165AE8(&gSaveBlock2Ptr->apprentices[0]); } void sub_81A150C(void) { u8 i; u8 mapObjectGfxId; - u8 class = gApprentices[gSaveBlock2Ptr->field_DC[0].field_0_0].facilityClass; + u8 class = gApprentices[gSaveBlock2Ptr->apprentices[0].id].facilityClass; for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++) ; diff --git a/src/pokemon.c b/src/pokemon.c index 327b76a7b..40f7e94b2 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -2877,13 +2877,13 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m s32 i; u16 evAmount; u8 language; - u32 otId = gApprentices[src->field_0_0].otId; - u32 personality = ((gApprentices[src->field_0_0].otId >> 8) | ((gApprentices[src->field_0_0].otId & 0xFF) << 8)) - + src->monData[monId].species + src->field_2; + u32 otId = gApprentices[src->id].otId; + u32 personality = ((gApprentices[src->id].otId >> 8) | ((gApprentices[src->id].otId & 0xFF) << 8)) + + src->monData[monId].species + src->number; CreateMon(mon, src->monData[monId].species, - GetFrontierEnemyMonLevel(src->field_0_1 - 1), + GetFrontierEnemyMonLevel(src->lvlMode - 1), 0x1F, TRUE, personality, @@ -2900,7 +2900,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m language = src->language; SetMonData(mon, MON_DATA_LANGUAGE, &language); - SetMonData(mon, MON_DATA_OT_NAME, GetApprenticeNameInLanguage(src->field_0_0, language)); + SetMonData(mon, MON_DATA_OT_NAME, GetApprenticeNameInLanguage(src->id, language)); CalculateMonStats(mon); } diff --git a/src/record_mixing.c b/src/record_mixing.c index 8d0022f17..2f28ff360 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -199,7 +199,7 @@ static void SetSrcLookupPointers(void) gUnknown_03001148 = &gUnknown_02039F9C; sBattleTowerSave = &gSaveBlock2Ptr->frontier.battleTower; sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady; - gUnknown_03001154 = gSaveBlock2Ptr->field_DC; + gUnknown_03001154 = gSaveBlock2Ptr->apprentices; sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.battleTower; } @@ -1675,7 +1675,7 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2 r8 = 0; for (i = 0; i < 2; i++) { - if (structPtr[i].playerName[0] != EOS && !sub_80E841C(&structPtr[i], gSaveBlock2Ptr->field_DC)) + if (structPtr[i].playerName[0] != EOS && !sub_80E841C(&structPtr[i], gSaveBlock2Ptr->apprentices)) { r7++; r8 = i; @@ -1686,14 +1686,14 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2 { case 1: structId = gSaveBlock2Ptr->field_B2_1 + 1; - gSaveBlock2Ptr->field_DC[structId] = structPtr[r8]; + gSaveBlock2Ptr->apprentices[structId] = structPtr[r8]; gSaveBlock2Ptr->field_B2_1 = (gSaveBlock2Ptr->field_B2_1 + 1) % 3; break; case 2: for (i = 0; i < 2; i++) { structId = ((i ^ 1) + gSaveBlock2Ptr->field_B2_1) % 3 + 1; - gSaveBlock2Ptr->field_DC[structId] = structPtr[i]; + gSaveBlock2Ptr->apprentices[structId] = structPtr[i]; } gSaveBlock2Ptr->field_B2_1 = (gSaveBlock2Ptr->field_B2_1 + 2) % 3; break; From af7aa624cdf63e97faeb5f7c2bfde90163d259d7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 15:23:14 +0200 Subject: [PATCH 06/10] make aprentice compile --- src/easy_chat.c | 2 +- src/record_mixing.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/easy_chat.c b/src/easy_chat.c index 50ed0a649..7d25d1430 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -352,7 +352,7 @@ void easy_chat_input_maybe(void) words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014; break; case 19: - words = gSaveBlock2Ptr->field_DC[0].easyChatWords; + words = gSaveBlock2Ptr->apprentices[0].easyChatWords; break; case 20: words = sub_801B058(); diff --git a/src/record_mixing.c b/src/record_mixing.c index 2f28ff360..88f7e60f5 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1653,7 +1653,7 @@ static bool32 sub_80E841C(struct Apprentice *arg0, struct Apprentice *arg1) for (i = 0; i < 4; i++) { if (ReadUnalignedWord(arg0->playerId) == ReadUnalignedWord(arg1[i].playerId) - && arg0->field_2 == arg1[i].field_2) + && arg0->number == arg1[i].number) { return TRUE; } From f08b56d645b2958c9c27a1da446a5dff423ee5cf Mon Sep 17 00:00:00 2001 From: Slawter666 <38655737+Slawter666@users.noreply.github.com> Date: Sun, 14 Oct 2018 15:26:13 +0100 Subject: [PATCH 07/10] Move apprentice data to C --- data/battle_frontier_2.s | 523 ------------------------------ ld_script.txt | 1 + src/apprentice.c | 680 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 651 insertions(+), 553 deletions(-) diff --git a/data/battle_frontier_2.s b/data/battle_frontier_2.s index a05b0143c..51b62461d 100644 --- a/data/battle_frontier_2.s +++ b/data/battle_frontier_2.s @@ -6,529 +6,6 @@ .section .rodata - - .align 2 @ struct, eight bytes x6 for names in different languages, then 0x28 more bytes of data -gApprentices:: @ 8610970 - .string "サダヒロ$", 8 - .string "ALANN$", 8 - .string "ALAIN$", 8 - .string "ADELFO$", 8 - .string "CLAUS$", 8 - .string "TEO$", 8 - .byte 0xC9, 0xBD - .2byte 0x43 - .2byte SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT, 0 - .byte 0x1D, 8, 0x3e, 20, 0, 12, 1, 10, 0x30, 6, 0x44, 20, 0, 0 - .string "ヒロオ$", 8 - .string "LIONEL$", 8 - .string "LIONEL$", 8 - .string "CAIO$", 8 - .string "LUDWIG$", 8 - .string "LEO$", 8 - .byte 0x9, 0xCF - .2byte 0x2B - .2byte SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH, 1 - .byte 0x38, 12, 1, 10, 0x30, 6, 6, 10, 0x20, 0x10, 0x13, 0x22, 0, 0 - .string "ケイジ$", 8 - .string "SONNY$", 8 - .string "HERVE$", 8 - .string "FEDRO$", 8 - .string "WENZEL$", 8 - .string "SANTI$", 8 - .byte 0x34, 0x2E - .2byte 0x26 - .2byte SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP, 2 - .byte 1, 10, 10, 0x16, 0x15, 14, 0x30, 6, 0x3b, 12, 0x4, 12, 0, 0 - .string "ユラ$", 8 - .string "LAYLA$", 8 - .string "LAYLA$", 8 - .string "ASTRID$", 8 - .string "SONJA$", 8 - .string "LOLA$", 8 - .byte 0xEF, 0x84 - .2byte 0x47 - .2byte SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA, 3 - .byte 11, 16, 15, 0x1e, 0x39, 16, 0x21, 0x14, 0x3, 12, 0xff, 0xff, 0, 0 - .string "ヨウカ$", 8 - .string "MACY$", 8 - .string "AMELIE$", 8 - .string "CLEO$", 8 - .string "MARIA$", 8 - .string "ELISA$", 8 - .byte 0x43, 0x1E - .2byte 0x27 - .2byte SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY, 4 - .byte 15, 0x1e, 0x14, 16, 6, 16, 15, 0x28, 0x1c, 0x1c, 0x13, 0x1c, 0, 0 - .string "ヤスシ$", 8 - .string "DONTE$", 8 - .string "BRAHIM$", 8 - .string "GLAUCO$", 8 - .string "JOSEF$", 8 - .string "ROQUE$", 8 - .byte 0x9F, 0x37 - .2byte 0x30 - .2byte SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA, 5 - .byte 0x29, 0x0A, 0x08, 0x14, 0x2F, 0x10, 0x38, 0x16, 0x20, 0x08, 0x00, 0x0C, 0x00, 0 - .string "ミサオ$", 8 - .string "AMIRA$", 8 - .string "LAURE$", 8 - .string "DAFNE$", 8 - .string "AMELIE$", 8 - .string "LARA$", 8 - .byte 0x55, 0xF5 - .2byte 0x31 - .2byte SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO, 6 - .byte 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C, 0x00, 0x00 - .string "カズサ$", 8 - .string "KALI$", 8 - .string "JODIE$", 8 - .string "ILENIA$", 8 - .string "KARO$", 8 - .string "ELSA$", 8 - .byte 0x26, 0x8D - .2byte 0x14 - .2byte SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC, 7 - .byte 0x06, 0x0A, 0x20, 0x06, 0x1F, 0x0A, 0x02, 0x0A, 0x03, 0x0C, 0xFF, 0xFF, 0x00, 0x00 - .string "スミレ$", 8 - .string "ANNIE$", 8 - .string "ANNIE$", 8 - .string "IMELDA$", 8 - .string "INES$", 8 - .string "ROSA$", 8 - .byte 0xC, 0x80 - .2byte 0xD - .2byte SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY, 8 - .byte 0x22, 0x1E, 0x33, 0x04, 0x0E, 0x02, 0x02, 0x0A, 0x1E, 0x10, 0x00, 0x0C, 0x00, 0x00 - .string "アキノリ$", 8 - .string "DILLEN$", 8 - .string "RENE$", 8 - .string "INDRO$", 8 - .string "DETLEF$", 8 - .string "PEDRO$", 8 - .byte 0x9f, 0x46 - .2byte 0 - .2byte SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON, 9 - .byte 0x3D, 0x0A, 0x11, 0x10, 0x1E, 0x0E, 0x1C, 0x20, 0x04, 0x0C, 0xFF, 0xFF, 0x00, 0x00 - .string "トウゾウ$", 8 - .string "DALLAS$", 8 - .string "BRUNO$", 8 - .string "LEARCO$", 8 - .string "ANSGAR$", 8 - .string "MANOLO$", 8 - .byte 0xFC, 0x71 - .2byte 0x2D - .2byte SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA, 10 - .byte 0x05, 0x0A, 0x06, 0x06, 0x0E, 0x16, 0x14, 0x0A, 0x00, 0x0C, 0xFF, 0xFF, 0x00, 0x00 - .string "セイヤ$", 8 - .string "FRANK$", 8 - .string "FRANK$", 8 - .string "OLINDO$", 8 - .string "FRANK$", 8 - .string "MAURO$", 8 - .byte 0x9E, 0xA3 - .2byte 0x3A - .2byte SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE, 11 - .byte 0x0E, 0x28, 0x3D, 0x10, 0x0F, 0x24, 0x14, 0x0A, 0x23, 0x1E, 0x24, 0x10, 0x00, 0x00 - .string "リュウジ$", 8 - .string "LAMONT$", 8 - .string "XAV$", 8 - .string "ORFEO$", 8 - .string "JÜRGEN$", 8 - .string "JORGE$", 8 - .byte 0x90, 0xE5 - .2byte 0x19 - .2byte SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING, 12 - .byte 0x20, 0x10, 0x2E, 0x06, 0x0B, 0x10, 0x22, 0x1E, 0x0F, 0x1E, 0x0B, 0x10, 0x00, 0x00 - .string "カツアキ$", 8 - .string "TYRESE$", 8 - .string "ANDY$", 8 - .string "PARIDE$", 8 - .string "DAVID$", 8 - .string "CHICHO$", 8 - .byte 0x18, 0xD0 - .2byte 10 - .2byte SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING, 13 - .byte 0x29, 0x0A, 0x3A, 0x06, 0x15, 0x0E, 0x35, 0x14, 0x34, 0x10, 0x1E, 0x06, 0x00, 0x00 - .string "トシミツ$", 8 - .string "DANTE$", 8 - .string "DANTE$", 8 - .string "RAOUL$", 8 - .string "LOTHAR$", 8 - .string "PABLO$", 8 - .byte 0x75, 0xBC - .2byte 14 - .2byte SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM, 14 - .byte 0x01, 0x0A, 0x17, 0x10, 0x43, 0x12, 0x22, 0x1E, 0x0B, 0x10, 0x0F, 0x28, 0x00, 0x00 - .string "ローウェン$", 8 - .string "ARTURO$", 8 - .string "ARTURO$", 8 - .string "ROMOLO$", 8 - .string "BRIAN$", 8 - .string "ARTURO$", 8 - .byte 0x2, 0xFA - .2byte 0x20 - .2byte SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS, 15 - .byte 0x0F, 0x1E, 0x04, 0x14, 0x2F, 0x10, 0x06, 0x10, 0x20, 0x10, 0x03, 0x0E, 0x00, 0x00 - - .align 2 -gUnknown_08610EF0:: @ 8610EF0 - .4byte gText_082B7229 - .4byte gText_082B731C - .4byte gText_082B735B - .4byte gText_082B7423 - .4byte gText_082B74C1 - .4byte gText_082B756F - .4byte gText_082B75B2 - .4byte gText_082B763F - .4byte gText_082B76AC - .4byte gText_082B7772 - .4byte gText_082B77CE - .4byte gText_082B7871 - .4byte gText_082B78D4 - .4byte gText_082B7B1A - .4byte gText_082B7C13 - .4byte gText_082B7D18 - .4byte gText_082B7DD4 - .4byte gText_082B7EE5 - .4byte gText_082B7F35 - .4byte gText_082B7FE8 - .4byte gText_082B8087 - .4byte gText_082B822B - .4byte gText_082B8286 - .4byte gText_082B8356 - .4byte gText_082B83CE - .4byte gText_082B84FC - .4byte gText_082B8559 - .4byte gText_082B8656 - .4byte gText_082B86EA - .4byte gText_082B87DA - .4byte gText_082B887C - .4byte gText_082B8957 - .4byte gText_082B89C6 - .4byte gText_082B8ACF - .4byte gText_082B8B66 - .4byte gText_082B8C20 - .4byte gText_082B8CAA - .4byte gText_082B8DD3 - .4byte gText_082B8E24 - .4byte gText_082B8ED5 - .4byte gText_082B8F45 - .4byte gText_082B905F - .4byte gText_082B910E - .4byte gText_082B9204 - .4byte gText_082B929C - .4byte gText_082B9438 - .4byte gText_082B9488 - .4byte gText_082B9564 - .4byte gText_082B95D8 - .4byte gText_082B9763 - .4byte gText_082B97E5 - .4byte gText_082B989A - .4byte gText_082B992D - .4byte gText_082B9A84 - .4byte gText_082B9AB9 - .4byte gText_082B9B76 - .4byte gText_082B9BF2 - .4byte gText_082B9D83 - .4byte gText_082B9DF9 - .4byte gText_082B9EAA - .4byte gText_082B9F55 - .4byte gText_082BA084 - .4byte gText_082BA11D - .4byte gText_082BA1F3 - - .align 2 -gUnknown_08610FF0:: @ 8610FF0 - .4byte gText_082BE50D - .4byte gText_082BE5F5 - .4byte gText_082BE679 - .4byte gText_082BE71E - .4byte gText_082BE762 - .4byte gText_082BE7F8 - .4byte gText_082BE850 - .4byte gText_082BE99C - .4byte gText_082BEA1B - .4byte gText_082BEAE9 - .4byte gText_082BEB72 - .4byte gText_082BEC8E - .4byte gText_082BED16 - .4byte gText_082BEE29 - .4byte gText_082BEEB4 - .4byte gText_082BEFE2 - .4byte gText_082BF04E - .4byte gText_082BF11D - .4byte gText_082BF1A8 - .4byte gText_082BF268 - .4byte gText_082BF2D1 - .4byte gText_082BF3CF - .4byte gText_082BF46A - .4byte gText_082BF551 - .4byte gText_082BF5C3 - .4byte gText_082BF6E5 - .4byte gText_082BF773 - .4byte gText_082BF869 - .4byte gText_082BF8DD - .4byte gText_082BF9BA - .4byte gText_082BFA5A - .4byte gText_082BFB4E - - .align 2 -gUnknown_08611070:: @ 8611070 - .4byte gText_082BA2A3 - .4byte gText_082BA34E - .4byte gText_082BA380 - .4byte gText_082BA3D2 - .4byte gText_082BA448 - .4byte gText_082BA4D3 - .4byte gText_082BA58C - .4byte gText_082BA5BF - .4byte gText_082BA5F3 - .4byte gText_082BA635 - .4byte gText_082BA6E6 - .4byte gText_082BA742 - .4byte gText_082BA770 - .4byte gText_082BA78F - .4byte gText_082BA7D8 - .4byte gText_082BA867 - .4byte gText_082BA96B - .4byte gText_082BA9B7 - .4byte gText_082BAA1B - .4byte gText_082BAA81 - .4byte gText_082BAB22 - .4byte gText_082BAC43 - .4byte gText_082BAC78 - .4byte gText_082BAD17 - .4byte gText_082BADB6 - .4byte gText_082BAE36 - .4byte gText_082BAF4E - .4byte gText_082BAF8F - .4byte gText_082BAFDB - .4byte gText_082BB05F - .4byte gText_082BB0D4 - .4byte gText_082BB18C - .4byte gText_082BB1CE - .4byte gText_082BB242 - .4byte gText_082BB2D9 - .4byte gText_082BB370 - .4byte gText_082BB4C3 - .4byte gText_082BB4FB - .4byte gText_082BB575 - .4byte gText_082BB5E1 - .4byte gText_082BB656 - .4byte gText_082BB6E5 - .4byte gText_082BB72C - .4byte gText_082BB7A2 - .4byte gText_082BB84A - .4byte gText_082BB8CD - .4byte gText_082BB970 - .4byte gText_082BB9AE - .4byte gText_082BBA05 - .4byte gText_082BBA6C - .4byte gText_082BBB01 - .4byte gText_082BBC1C - .4byte gText_082BBC4B - .4byte gText_082BBCF6 - .4byte gText_082BBD90 - .4byte gText_082BBE0B - .4byte gText_082BBEE5 - .4byte gText_082BBF25 - .4byte gText_082BBFA4 - .4byte gText_082BC024 - .4byte gText_082BC0C8 - .4byte gText_082BC213 - .4byte gText_082BC247 - .4byte gText_082BC2DD - .4byte gText_082BC373 - .4byte gText_082BC40E - .4byte gText_082BC514 - .4byte gText_082BC555 - .4byte gText_082BC5CE - .4byte gText_082BC666 - .4byte gText_082BC714 - .4byte gText_082BC808 - .4byte gText_082BC84D - .4byte gText_082BC8EA - .4byte gText_082BC984 - .4byte gText_082BCA4D - .4byte gText_082BCB75 - .4byte gText_082BCBA6 - .4byte gText_082BCBFC - .4byte gText_082BCCA4 - - .align 2 -gUnknown_086111B0:: @ 86111B0 - .4byte gText_082BFBF2 - .4byte gText_082BFCAE - .4byte gText_082BFD26 - .4byte gText_082BFDB1 - .4byte gText_082BFE24 - .4byte gText_082BFEAD - .4byte gText_082BFF0A - .4byte gText_082C0032 - .4byte gText_082C0090 - .4byte gText_082C016E - .4byte gText_082C01F7 - .4byte gText_082C034C - .4byte gText_082C03CA - .4byte gText_082C046E - .4byte gText_082C04F9 - .4byte gText_082C0598 - .4byte gText_082C0602 - .4byte gText_082C06D8 - .4byte gText_082C074A - .4byte gText_082C0809 - .4byte gText_082C086E - .4byte gText_082C0982 - .4byte gText_082C0A1D - .4byte gText_082C0AFD - .4byte gText_082C0B6F - .4byte gText_082C0C7D - .4byte gText_082C0D0B - .4byte gText_082C0DFE - .4byte gText_082C0E71 - .4byte gText_082C0F6D - .4byte gText_082C1003 - .4byte gText_082C1122 - - .align 2 -gUnknown_08611230:: @ 8611230 - .4byte gText_082BCD68 - .4byte gText_082BCE64 - .4byte gText_082BCEF2 - .4byte gText_082BCF61 - .4byte gText_082BCFA1 - .4byte gText_082BD03C - .4byte gText_082BD06D - .4byte gText_082BD18A - .4byte gText_082BD222 - .4byte gText_082BD325 - .4byte gText_082BD3B1 - .4byte gText_082BD493 - .4byte gText_082BD51C - .4byte gText_082BD609 - .4byte gText_082BD697 - .4byte gText_082BD797 - .4byte gText_082BD806 - .4byte gText_082BD8F5 - .4byte gText_082BD9BE - .4byte gText_082BDAE1 - .4byte gText_082BDB4E - .4byte gText_082BDC6B - .4byte gText_082BDD0D - .4byte gText_082BDDEC - .4byte gText_082BDE68 - .4byte gText_082BDF4D - .4byte gText_082BDFD8 - .4byte gText_082BE0FD - .4byte gText_082BE189 - .4byte gText_082BE2A5 - .4byte gText_082BE33E - .4byte gText_082BE46C - - .align 2 -gUnknown_086112B0:: @ 86112B0 - .4byte gText_082C11D1 - .4byte gText_082C12D5 - .4byte gText_082C13AB - .4byte gText_082C1444 - .4byte gText_082C1501 - .4byte gText_082C15B6 - .4byte gText_082C165E - .4byte gText_082C174F - .4byte gText_082C1862 - .4byte gText_082C19A0 - .4byte gText_082C1A76 - .4byte gText_082C1C16 - .4byte gText_082C1CF5 - .4byte gText_082C1DC1 - .4byte gText_082C1EDC - .4byte gText_082C1FEC - .4byte gText_082C20D1 - .4byte gText_082C21FF - .4byte gText_082C231C - .4byte gText_082C2407 - .4byte gText_082C24B5 - .4byte gText_082C25B1 - .4byte gText_082C2707 - .4byte gText_082C27D4 - .4byte gText_082C28D6 - .4byte gText_082C2A0B - .4byte gText_082C2B50 - .4byte gText_082C2C77 - .4byte gText_082C2D67 - .4byte gText_082C2E41 - .4byte gText_082C2EF5 - .4byte gText_082C3023 - - .align 2 -gUnknown_08611330:: @ 8611330 - .4byte gText_082B6EA5 - .4byte gText_082B6EEC - .4byte gText_082B6F16 - .4byte gText_082B6F4C - .4byte gText_082B6F92 - .4byte gText_082B6FC9 - .4byte gText_082B700C - .4byte gText_082B703A - .4byte gText_082B706A - .4byte gText_082B709C - .4byte gText_082B70CC - .4byte gText_082B710A - .4byte gText_082B714D - .4byte gText_082B7185 - .4byte gText_082B71C1 - .4byte gText_082B71F9 - -gUnknown_08611370:: @ 8611370 - .byte 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01 - .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01 - .byte 0x01, 0x01, 0x01 - -gUnknown_086114D3:: @ 86114D3 - .byte 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_086114E0:: @ 86114E0 - .4byte sub_81A093C - .4byte sub_81A0964 - .4byte sub_81A0978 - .4byte sub_819FC60 - .4byte sub_81A0984 - .4byte sub_81A0990 - .4byte sub_81A09D0 - .4byte sub_81A0A20 - .4byte sub_81A0C9C - .4byte sub_81A087C - .4byte sub_81A1638 - .4byte sub_81A0CC0 - .4byte sub_81A09B4 - .4byte sub_81A0D40 - .4byte sub_81A0DD4 - .4byte sub_81A0FE4 - .4byte sub_81A0FFC - .4byte sub_81A0D80 - .4byte sub_81A11F8 - .4byte sub_81A1218 - .4byte sub_81A1224 - .4byte sub_81A1438 - .4byte sub_81A150C - .4byte sub_81A15A4 - .4byte sub_81A1644 - .4byte sub_81A1370 - - .align 2 -gUnknown_08611548:: @ 8611548 - .byte 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09 - .align 2 gUnknown_08611550:: @ 8611550 .byte 0x23, 0x46, 0x23, 0x01, 0x04, 0x09, 0x05, 0x00, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x38, 0x1c, 0x01, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x8c, 0x38, 0x01, 0x15, 0x46, 0x23, 0x00 diff --git a/ld_script.txt b/ld_script.txt index 626e80f1a..37fc1fbf3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -530,6 +530,7 @@ SECTIONS { data/battle_frontier_1.o(.rodata); src/menu.o(.rodata); src/battle_factory.o(.rodata); + src/apprentice.o(.rodata); data/battle_frontier_2.o(.rodata); src/item_menu.o(.rodata); src/list_menu.o(.rodata); diff --git a/src/apprentice.c b/src/apprentice.c index b4b20f672..0694c2e41 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -1,29 +1,30 @@ #include "global.h" #include "apprentice.h" -#include "constants/apprentice.h" -#include "string_util.h" -#include "script.h" -#include "text.h" -#include "random.h" +#include "battle_tower.h" +#include "data2.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "field_player_avatar.h" +#include "international_string_util.h" +#include "item.h" +#include "item_menu.h" #include "main.h" #include "malloc.h" -#include "strings.h" #include "menu.h" -#include "script_menu.h" -#include "party_menu.h" -#include "item_menu.h" -#include "data2.h" -#include "task.h" -#include "item.h" -#include "sound.h" -#include "battle_tower.h" -#include "event_data.h" -#include "international_string_util.h" -#include "field_player_avatar.h" #include "new_game.h" -#include "event_object_movement.h" +#include "party_menu.h" +#include "random.h" +#include "script.h" +#include "script_menu.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" +#include "constants/apprentice.h" #include "constants/items.h" #include "constants/songs.h" +#include "constants/species.h" struct Unk030062ECStruct { @@ -40,29 +41,648 @@ struct Unk030062F0Struct u16 unk6; }; +// data/scripts/apprentice.inc +extern const u8 gText_082B7229[]; +extern const u8 gText_082B731C[]; +extern const u8 gText_082B735B[]; +extern const u8 gText_082B7423[]; +extern const u8 gText_082B74C1[]; +extern const u8 gText_082B756F[]; +extern const u8 gText_082B75B2[]; +extern const u8 gText_082B763F[]; +extern const u8 gText_082B76AC[]; +extern const u8 gText_082B7772[]; +extern const u8 gText_082B77CE[]; +extern const u8 gText_082B7871[]; +extern const u8 gText_082B78D4[]; +extern const u8 gText_082B7B1A[]; +extern const u8 gText_082B7C13[]; +extern const u8 gText_082B7D18[]; +extern const u8 gText_082B7DD4[]; +extern const u8 gText_082B7EE5[]; +extern const u8 gText_082B7F35[]; +extern const u8 gText_082B7FE8[]; +extern const u8 gText_082B8087[]; +extern const u8 gText_082B822B[]; +extern const u8 gText_082B8286[]; +extern const u8 gText_082B8356[]; +extern const u8 gText_082B83CE[]; +extern const u8 gText_082B84FC[]; +extern const u8 gText_082B8559[]; +extern const u8 gText_082B8656[]; +extern const u8 gText_082B86EA[]; +extern const u8 gText_082B87DA[]; +extern const u8 gText_082B887C[]; +extern const u8 gText_082B8957[]; +extern const u8 gText_082B89C6[]; +extern const u8 gText_082B8ACF[]; +extern const u8 gText_082B8B66[]; +extern const u8 gText_082B8C20[]; +extern const u8 gText_082B8CAA[]; +extern const u8 gText_082B8DD3[]; +extern const u8 gText_082B8E24[]; +extern const u8 gText_082B8ED5[]; +extern const u8 gText_082B8F45[]; +extern const u8 gText_082B905F[]; +extern const u8 gText_082B910E[]; +extern const u8 gText_082B9204[]; +extern const u8 gText_082B929C[]; +extern const u8 gText_082B9438[]; +extern const u8 gText_082B9488[]; +extern const u8 gText_082B9564[]; +extern const u8 gText_082B95D8[]; +extern const u8 gText_082B9763[]; +extern const u8 gText_082B97E5[]; +extern const u8 gText_082B989A[]; +extern const u8 gText_082B992D[]; +extern const u8 gText_082B9A84[]; +extern const u8 gText_082B9AB9[]; +extern const u8 gText_082B9B76[]; +extern const u8 gText_082B9BF2[]; +extern const u8 gText_082B9D83[]; +extern const u8 gText_082B9DF9[]; +extern const u8 gText_082B9EAA[]; +extern const u8 gText_082B9F55[]; +extern const u8 gText_082BA084[]; +extern const u8 gText_082BA11D[]; +extern const u8 gText_082BA1F3[]; + +extern const u8 gText_082BE50D[]; +extern const u8 gText_082BE5F5[]; +extern const u8 gText_082BE679[]; +extern const u8 gText_082BE71E[]; +extern const u8 gText_082BE762[]; +extern const u8 gText_082BE7F8[]; +extern const u8 gText_082BE850[]; +extern const u8 gText_082BE99C[]; +extern const u8 gText_082BEA1B[]; +extern const u8 gText_082BEAE9[]; +extern const u8 gText_082BEB72[]; +extern const u8 gText_082BEC8E[]; +extern const u8 gText_082BED16[]; +extern const u8 gText_082BEE29[]; +extern const u8 gText_082BEEB4[]; +extern const u8 gText_082BEFE2[]; +extern const u8 gText_082BF04E[]; +extern const u8 gText_082BF11D[]; +extern const u8 gText_082BF1A8[]; +extern const u8 gText_082BF268[]; +extern const u8 gText_082BF2D1[]; +extern const u8 gText_082BF3CF[]; +extern const u8 gText_082BF46A[]; +extern const u8 gText_082BF551[]; +extern const u8 gText_082BF5C3[]; +extern const u8 gText_082BF6E5[]; +extern const u8 gText_082BF773[]; +extern const u8 gText_082BF869[]; +extern const u8 gText_082BF8DD[]; +extern const u8 gText_082BF9BA[]; +extern const u8 gText_082BFA5A[]; +extern const u8 gText_082BFB4E[]; + +extern const u8 gText_082BA2A3[]; +extern const u8 gText_082BA34E[]; +extern const u8 gText_082BA380[]; +extern const u8 gText_082BA3D2[]; +extern const u8 gText_082BA448[]; +extern const u8 gText_082BA4D3[]; +extern const u8 gText_082BA58C[]; +extern const u8 gText_082BA5BF[]; +extern const u8 gText_082BA5F3[]; +extern const u8 gText_082BA635[]; +extern const u8 gText_082BA6E6[]; +extern const u8 gText_082BA742[]; +extern const u8 gText_082BA770[]; +extern const u8 gText_082BA78F[]; +extern const u8 gText_082BA7D8[]; +extern const u8 gText_082BA867[]; +extern const u8 gText_082BA96B[]; +extern const u8 gText_082BA9B7[]; +extern const u8 gText_082BAA1B[]; +extern const u8 gText_082BAA81[]; +extern const u8 gText_082BAB22[]; +extern const u8 gText_082BAC43[]; +extern const u8 gText_082BAC78[]; +extern const u8 gText_082BAD17[]; +extern const u8 gText_082BADB6[]; +extern const u8 gText_082BAE36[]; +extern const u8 gText_082BAF4E[]; +extern const u8 gText_082BAF8F[]; +extern const u8 gText_082BAFDB[]; +extern const u8 gText_082BB05F[]; +extern const u8 gText_082BB0D4[]; +extern const u8 gText_082BB18C[]; +extern const u8 gText_082BB1CE[]; +extern const u8 gText_082BB242[]; +extern const u8 gText_082BB2D9[]; +extern const u8 gText_082BB370[]; +extern const u8 gText_082BB4C3[]; +extern const u8 gText_082BB4FB[]; +extern const u8 gText_082BB575[]; +extern const u8 gText_082BB5E1[]; +extern const u8 gText_082BB656[]; +extern const u8 gText_082BB6E5[]; +extern const u8 gText_082BB72C[]; +extern const u8 gText_082BB7A2[]; +extern const u8 gText_082BB84A[]; +extern const u8 gText_082BB8CD[]; +extern const u8 gText_082BB970[]; +extern const u8 gText_082BB9AE[]; +extern const u8 gText_082BBA05[]; +extern const u8 gText_082BBA6C[]; +extern const u8 gText_082BBB01[]; +extern const u8 gText_082BBC1C[]; +extern const u8 gText_082BBC4B[]; +extern const u8 gText_082BBCF6[]; +extern const u8 gText_082BBD90[]; +extern const u8 gText_082BBE0B[]; +extern const u8 gText_082BBEE5[]; +extern const u8 gText_082BBF25[]; +extern const u8 gText_082BBFA4[]; +extern const u8 gText_082BC024[]; +extern const u8 gText_082BC0C8[]; +extern const u8 gText_082BC213[]; +extern const u8 gText_082BC247[]; +extern const u8 gText_082BC2DD[]; +extern const u8 gText_082BC373[]; +extern const u8 gText_082BC40E[]; +extern const u8 gText_082BC514[]; +extern const u8 gText_082BC555[]; +extern const u8 gText_082BC5CE[]; +extern const u8 gText_082BC666[]; +extern const u8 gText_082BC714[]; +extern const u8 gText_082BC808[]; +extern const u8 gText_082BC84D[]; +extern const u8 gText_082BC8EA[]; +extern const u8 gText_082BC984[]; +extern const u8 gText_082BCA4D[]; +extern const u8 gText_082BCB75[]; +extern const u8 gText_082BCBA6[]; +extern const u8 gText_082BCBFC[]; +extern const u8 gText_082BCCA4[]; + +extern const u8 gText_082BFBF2[]; +extern const u8 gText_082BFCAE[]; +extern const u8 gText_082BFD26[]; +extern const u8 gText_082BFDB1[]; +extern const u8 gText_082BFE24[]; +extern const u8 gText_082BFEAD[]; +extern const u8 gText_082BFF0A[]; +extern const u8 gText_082C0032[]; +extern const u8 gText_082C0090[]; +extern const u8 gText_082C016E[]; +extern const u8 gText_082C01F7[]; +extern const u8 gText_082C034C[]; +extern const u8 gText_082C03CA[]; +extern const u8 gText_082C046E[]; +extern const u8 gText_082C04F9[]; +extern const u8 gText_082C0598[]; +extern const u8 gText_082C0602[]; +extern const u8 gText_082C06D8[]; +extern const u8 gText_082C074A[]; +extern const u8 gText_082C0809[]; +extern const u8 gText_082C086E[]; +extern const u8 gText_082C0982[]; +extern const u8 gText_082C0A1D[]; +extern const u8 gText_082C0AFD[]; +extern const u8 gText_082C0B6F[]; +extern const u8 gText_082C0C7D[]; +extern const u8 gText_082C0D0B[]; +extern const u8 gText_082C0DFE[]; +extern const u8 gText_082C0E71[]; +extern const u8 gText_082C0F6D[]; +extern const u8 gText_082C1003[]; +extern const u8 gText_082C1122[]; + +extern const u8 gText_082BCD68[]; +extern const u8 gText_082BCE64[]; +extern const u8 gText_082BCEF2[]; +extern const u8 gText_082BCF61[]; +extern const u8 gText_082BCFA1[]; +extern const u8 gText_082BD03C[]; +extern const u8 gText_082BD06D[]; +extern const u8 gText_082BD18A[]; +extern const u8 gText_082BD222[]; +extern const u8 gText_082BD325[]; +extern const u8 gText_082BD3B1[]; +extern const u8 gText_082BD493[]; +extern const u8 gText_082BD51C[]; +extern const u8 gText_082BD609[]; +extern const u8 gText_082BD697[]; +extern const u8 gText_082BD797[]; +extern const u8 gText_082BD806[]; +extern const u8 gText_082BD8F5[]; +extern const u8 gText_082BD9BE[]; +extern const u8 gText_082BDAE1[]; +extern const u8 gText_082BDB4E[]; +extern const u8 gText_082BDC6B[]; +extern const u8 gText_082BDD0D[]; +extern const u8 gText_082BDDEC[]; +extern const u8 gText_082BDE68[]; +extern const u8 gText_082BDF4D[]; +extern const u8 gText_082BDFD8[]; +extern const u8 gText_082BE0FD[]; +extern const u8 gText_082BE189[]; +extern const u8 gText_082BE2A5[]; +extern const u8 gText_082BE33E[]; +extern const u8 gText_082BE46C[]; + +extern const u8 gText_082C11D1[]; +extern const u8 gText_082C12D5[]; +extern const u8 gText_082C13AB[]; +extern const u8 gText_082C1444[]; +extern const u8 gText_082C1501[]; +extern const u8 gText_082C15B6[]; +extern const u8 gText_082C165E[]; +extern const u8 gText_082C174F[]; +extern const u8 gText_082C1862[]; +extern const u8 gText_082C19A0[]; +extern const u8 gText_082C1A76[]; +extern const u8 gText_082C1C16[]; +extern const u8 gText_082C1CF5[]; +extern const u8 gText_082C1DC1[]; +extern const u8 gText_082C1EDC[]; +extern const u8 gText_082C1FEC[]; +extern const u8 gText_082C20D1[]; +extern const u8 gText_082C21FF[]; +extern const u8 gText_082C231C[]; +extern const u8 gText_082C2407[]; +extern const u8 gText_082C24B5[]; +extern const u8 gText_082C25B1[]; +extern const u8 gText_082C2707[]; +extern const u8 gText_082C27D4[]; +extern const u8 gText_082C28D6[]; +extern const u8 gText_082C2A0B[]; +extern const u8 gText_082C2B50[]; +extern const u8 gText_082C2C77[]; +extern const u8 gText_082C2D67[]; +extern const u8 gText_082C2E41[]; +extern const u8 gText_082C2EF5[]; +extern const u8 gText_082C3023[]; + +extern const u8 gText_082B6EA5[]; +extern const u8 gText_082B6EEC[]; +extern const u8 gText_082B6F16[]; +extern const u8 gText_082B6F4C[]; +extern const u8 gText_082B6F92[]; +extern const u8 gText_082B6FC9[]; +extern const u8 gText_082B700C[]; +extern const u8 gText_082B703A[]; +extern const u8 gText_082B706A[]; +extern const u8 gText_082B709C[]; +extern const u8 gText_082B70CC[]; +extern const u8 gText_082B710A[]; +extern const u8 gText_082B714D[]; +extern const u8 gText_082B7185[]; +extern const u8 gText_082B71C1[]; +extern const u8 gText_082B71F9[]; + extern struct Unk030062ECStruct *gUnknown_030062EC; extern struct Unk030062F0Struct *gUnknown_030062F0; extern void (*gUnknown_030062F4)(void); extern void sub_8165AE8(struct Apprentice *); -extern const u8 *const gUnknown_08611330[]; -extern const u8 *const gUnknown_08610FF0[][2]; -extern const u8 *const gUnknown_086112B0[][2]; -extern const u8 *const gUnknown_08611230[][2]; -extern const u8 *const gUnknown_086111B0[][2]; -extern const u8 *const gUnknown_08610EF0[][4]; -extern const u8 *const gUnknown_08611070[][5]; -extern const u8 gUnknown_08611548[8]; -extern const u8 gUnknown_086114D3[]; -extern const bool8 gUnknown_08611370[]; -extern void (* const gUnknown_086114E0[])(void); - extern const u8 gUnknown_085DCEDC[]; extern const u8 gUnknown_085DCF0E[]; extern const u8 gUnknown_085DCEFA[]; extern const u8 gUnknown_085DCF2C[]; +void sub_81A093C(void); +void sub_81A0964(void); +void sub_81A0978(void); +void sub_819FC60(void); +void sub_81A0984(void); +void sub_81A0990(void); +void sub_81A09D0(void); +void sub_81A0A20(void); +void sub_81A0C9C(void); +void sub_81A087C(void); +void sub_81A1638(void); +void sub_81A0CC0(void); +void sub_81A09B4(void); +void sub_81A0D40(void); +void sub_81A0DD4(void); +void sub_81A0FE4(void); +void sub_81A0FFC(void); +void sub_81A0D80(void); +void sub_81A11F8(void); +void sub_81A1218(void); +void sub_81A1224(void); +void sub_81A1438(void); +void sub_81A150C(void); +void sub_81A15A4(void); +void sub_81A1644(void); +void sub_81A1370(void); + +// rodata + +const struct ApprenticeTrainer gApprentices[] = +{ + { + .name = {_("サダヒロ"), _("ALANN"), _("ALAIN"), _("ADELFO"), _("CLAUS"), _("TEO")}, + .otId = 0xBDC9, + .facilityClass = 0x43, + .species = {SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT}, + .rest = {0, 0, 0x1D, 8, 0x3e, 20, 0, 12, 1, 10, 0x30, 6, 0x44, 20}, + }, + { + .name = {_("ヒロオ"), _("LIONEL"), _("LIONEL"), _("CAIO"), _("LUDWIG"), _("LEO")}, + .otId = 0xCF09, + .facilityClass = 0x2B, + .species = {SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH}, + .rest = {1, 0, 0x38, 12, 1, 10, 0x30, 6, 6, 10, 0x20, 0x10, 0x13, 0x22}, + }, + { + .name = {_("ケイジ"), _("SONNY"), _("HERVE"), _("FEDRO"), _("WENZEL"), _("SANTI")}, + .otId = 0x2E34, + .facilityClass = 0x26, + .species = {SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP}, + .rest = {2, 0, 1, 10, 10, 0x16, 0x15, 14, 0x30, 6, 0x3b, 12, 0x4, 12}, + }, + { + .name = {_("ユラ"), _("LAYLA"), _("LAYLA"), _("ASTRID"), _("SONJA"), _("LOLA")}, + .otId = 0x84EF, + .facilityClass = 0x47, + .species = {SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA}, + .rest = {3, 0, 11, 16, 15, 0x1e, 0x39, 16, 0x21, 0x14, 0x3, 12, 0xff, 0xff}, + }, + { + .name = {_("ヨウカ"), _("MACY"), _("AMELIE"), _("CLEO"), _("MARIA"), _("ELISA")}, + .otId = 0x1E43, + .facilityClass = 0x27, + .species = {SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY}, + .rest = {4, 0, 15, 0x1e, 0x14, 16, 6, 16, 15, 0x28, 0x1c, 0x1c, 0x13, 0x1c}, + }, + { + .name = {_("ヤスシ"), _("DONTE"), _("BRAHIM"), _("GLAUCO"), _("JOSEF"), _("ROQUE")}, + .otId = 0x379F, + .facilityClass = 0x30, + .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA}, + .rest = {5, 0, 0x29, 0x0A, 0x08, 0x14, 0x2F, 0x10, 0x38, 0x16, 0x20, 0x08, 0x00, 0x0C}, + }, + { + .name = {_("ミサオ"), _("AMIRA"), _("LAURE"), _("DAFNE"), _("AMELIE"), _("LARA")}, + .otId = 0xF555, + .facilityClass = 0x31, + .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO}, + .rest = {6, 0, 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C}, + }, + { + .name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")}, + .otId = 0x8D26, + .facilityClass = 0x14, + .species = {SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC}, + .rest = {7, 0, 0x06, 0x0A, 0x20, 0x06, 0x1F, 0x0A, 0x02, 0x0A, 0x03, 0x0C, 0xFF, 0xFF}, + }, + { + .name = {_("スミレ"), _("ANNIE"), _("ANNIE"), _("IMELDA"), _("INES"), _("ROSA")}, + .otId = 0x800C, + .facilityClass = 0xD, + .species = {SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY}, + .rest = {8, 0, 0x22, 0x1E, 0x33, 0x04, 0x0E, 0x02, 0x02, 0x0A, 0x1E, 0x10, 0x00, 0x0C}, + }, + { + .name = {_("アキノリ"), _("DILLEN"), _("RENE"), _("INDRO"), _("DETLEF"), _("PEDRO")}, + .otId = 0x469f, + .facilityClass = 0, + .species = {SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON}, + .rest = {9, 0, 0x3D, 0x0A, 0x11, 0x10, 0x1E, 0x0E, 0x1C, 0x20, 0x04, 0x0C, 0xFF, 0xFF}, + }, + { + .name = {_("トウゾウ"), _("DALLAS"), _("BRUNO"), _("LEARCO"), _("ANSGAR"), _("MANOLO")}, + .otId = 0x71FC, + .facilityClass = 0x2D, + .species = {SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA}, + .rest = {10, 0, 0x05, 0x0A, 0x06, 0x06, 0x0E, 0x16, 0x14, 0x0A, 0x00, 0x0C, 0xFF, 0xFF}, + }, + { + .name = {_("セイヤ"), _("FRANK"), _("FRANK"), _("OLINDO"), _("FRANK"), _("MAURO")}, + .otId = 0xA39E, + .facilityClass = 0x3A, + .species = {SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE}, + .rest = {11, 0, 0x0E, 0x28, 0x3D, 0x10, 0x0F, 0x24, 0x14, 0x0A, 0x23, 0x1E, 0x24, 0x10}, + }, + { + .name = {_("リュウジ"), _("LAMONT"), _("XAV"), _("ORFEO"), _("JÜRGEN"), _("JORGE")}, + .otId = 0xE590, + .facilityClass = 0x19, + .species = {SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING}, + .rest = {12, 0, 0x20, 0x10, 0x2E, 0x06, 0x0B, 0x10, 0x22, 0x1E, 0x0F, 0x1E, 0x0B, 0x10}, + }, + { + .name = {_("カツアキ"), _("TYRESE"), _("ANDY"), _("PARIDE"), _("DAVID"), _("CHICHO")}, + .otId = 0xD018, + .facilityClass = 10, + .species = {SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING}, + .rest = {13, 0, 0x29, 0x0A, 0x3A, 0x06, 0x15, 0x0E, 0x35, 0x14, 0x34, 0x10, 0x1E, 0x06}, + }, + { + .name = {_("トシミツ"), _("DANTE"), _("DANTE"), _("RAOUL"), _("LOTHAR"), _("PABLO")}, + .otId = 0xBC75, + .facilityClass = 14, + .species = {SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM}, + .rest = {14, 0, 0x01, 0x0A, 0x17, 0x10, 0x43, 0x12, 0x22, 0x1E, 0x0B, 0x10, 0x0F, 0x28}, + }, + { + .name = {_("ローウェン"), _("ARTURO"), _("ARTURO"), _("ROMOLO"), _("BRIAN"), _("ARTURO")}, + .otId = 0xFA02, + .facilityClass = 0x20, + .species = {SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS}, + .rest = {15, 0, 0x0F, 0x1E, 0x04, 0x14, 0x2F, 0x10, 0x06, 0x10, 0x20, 0x10, 0x03, 0x0E}, + }, +}; + +const u8 *const gUnknown_08610EF0[][4] = +{ + {gText_082B7229, gText_082B731C, gText_082B735B, gText_082B7423}, + {gText_082B74C1, gText_082B756F, gText_082B75B2, gText_082B763F}, + {gText_082B76AC, gText_082B7772, gText_082B77CE, gText_082B7871}, + {gText_082B78D4, gText_082B7B1A, gText_082B7C13, gText_082B7D18}, + {gText_082B7DD4, gText_082B7EE5, gText_082B7F35, gText_082B7FE8}, + {gText_082B8087, gText_082B822B, gText_082B8286, gText_082B8356}, + {gText_082B83CE, gText_082B84FC, gText_082B8559, gText_082B8656}, + {gText_082B86EA, gText_082B87DA, gText_082B887C, gText_082B8957}, + {gText_082B89C6, gText_082B8ACF, gText_082B8B66, gText_082B8C20}, + {gText_082B8CAA, gText_082B8DD3, gText_082B8E24, gText_082B8ED5}, + {gText_082B8F45, gText_082B905F, gText_082B910E, gText_082B9204}, + {gText_082B929C, gText_082B9438, gText_082B9488, gText_082B9564}, + {gText_082B95D8, gText_082B9763, gText_082B97E5, gText_082B989A}, + {gText_082B992D, gText_082B9A84, gText_082B9AB9, gText_082B9B76}, + {gText_082B9BF2, gText_082B9D83, gText_082B9DF9, gText_082B9EAA}, + {gText_082B9F55, gText_082BA084, gText_082BA11D, gText_082BA1F3}, +}; + +const u8 *const gUnknown_08610FF0[][2] = +{ + {gText_082BE50D, gText_082BE5F5}, + {gText_082BE679, gText_082BE71E}, + {gText_082BE762, gText_082BE7F8}, + {gText_082BE850, gText_082BE99C}, + {gText_082BEA1B, gText_082BEAE9}, + {gText_082BEB72, gText_082BEC8E}, + {gText_082BED16, gText_082BEE29}, + {gText_082BEEB4, gText_082BEFE2}, + {gText_082BF04E, gText_082BF11D}, + {gText_082BF1A8, gText_082BF268}, + {gText_082BF2D1, gText_082BF3CF}, + {gText_082BF46A, gText_082BF551}, + {gText_082BF5C3, gText_082BF6E5}, + {gText_082BF773, gText_082BF869}, + {gText_082BF8DD, gText_082BF9BA}, + {gText_082BFA5A, gText_082BFB4E}, +}; + +const u8 *const gUnknown_08611070[][5] = +{ + {gText_082BA2A3, gText_082BA34E, gText_082BA380, gText_082BA3D2, gText_082BA448}, + {gText_082BA4D3, gText_082BA58C, gText_082BA5BF, gText_082BA5F3, gText_082BA635}, + {gText_082BA6E6, gText_082BA742, gText_082BA770, gText_082BA78F, gText_082BA7D8}, + {gText_082BA867, gText_082BA96B, gText_082BA9B7, gText_082BAA1B, gText_082BAA81}, + {gText_082BAB22, gText_082BAC43, gText_082BAC78, gText_082BAD17, gText_082BADB6}, + {gText_082BAE36, gText_082BAF4E, gText_082BAF8F, gText_082BAFDB, gText_082BB05F}, + {gText_082BB0D4, gText_082BB18C, gText_082BB1CE, gText_082BB242, gText_082BB2D9}, + {gText_082BB370, gText_082BB4C3, gText_082BB4FB, gText_082BB575, gText_082BB5E1}, + {gText_082BB656, gText_082BB6E5, gText_082BB72C, gText_082BB7A2, gText_082BB84A}, + {gText_082BB8CD, gText_082BB970, gText_082BB9AE, gText_082BBA05, gText_082BBA6C}, + {gText_082BBB01, gText_082BBC1C, gText_082BBC4B, gText_082BBCF6, gText_082BBD90}, + {gText_082BBE0B, gText_082BBEE5, gText_082BBF25, gText_082BBFA4, gText_082BC024}, + {gText_082BC0C8, gText_082BC213, gText_082BC247, gText_082BC2DD, gText_082BC373}, + {gText_082BC40E, gText_082BC514, gText_082BC555, gText_082BC5CE, gText_082BC666}, + {gText_082BC714, gText_082BC808, gText_082BC84D, gText_082BC8EA, gText_082BC984}, + {gText_082BCA4D, gText_082BCB75, gText_082BCBA6, gText_082BCBFC, gText_082BCCA4}, +}; + +const u8 *const gUnknown_086111B0[][2] = +{ + {gText_082BFBF2, gText_082BFCAE}, + {gText_082BFD26, gText_082BFDB1}, + {gText_082BFE24, gText_082BFEAD}, + {gText_082BFF0A, gText_082C0032}, + {gText_082C0090, gText_082C016E}, + {gText_082C01F7, gText_082C034C}, + {gText_082C03CA, gText_082C046E}, + {gText_082C04F9, gText_082C0598}, + {gText_082C0602, gText_082C06D8}, + {gText_082C074A, gText_082C0809}, + {gText_082C086E, gText_082C0982}, + {gText_082C0A1D, gText_082C0AFD}, + {gText_082C0B6F, gText_082C0C7D}, + {gText_082C0D0B, gText_082C0DFE}, + {gText_082C0E71, gText_082C0F6D}, + {gText_082C1003, gText_082C1122}, +}; + +const u8 *const gUnknown_08611230[][2] = +{ + {gText_082BCD68, gText_082BCE64}, + {gText_082BCEF2, gText_082BCF61}, + {gText_082BCFA1, gText_082BD03C}, + {gText_082BD06D, gText_082BD18A}, + {gText_082BD222, gText_082BD325}, + {gText_082BD3B1, gText_082BD493}, + {gText_082BD51C, gText_082BD609}, + {gText_082BD697, gText_082BD797}, + {gText_082BD806, gText_082BD8F5}, + {gText_082BD9BE, gText_082BDAE1}, + {gText_082BDB4E, gText_082BDC6B}, + {gText_082BDD0D, gText_082BDDEC}, + {gText_082BDE68, gText_082BDF4D}, + {gText_082BDFD8, gText_082BE0FD}, + {gText_082BE189, gText_082BE2A5}, + {gText_082BE33E, gText_082BE46C}, +}; + +const u8 *const gUnknown_086112B0[][2] = +{ + {gText_082C11D1, gText_082C12D5}, + {gText_082C13AB, gText_082C1444}, + {gText_082C1501, gText_082C15B6}, + {gText_082C165E, gText_082C174F}, + {gText_082C1862, gText_082C19A0}, + {gText_082C1A76, gText_082C1C16}, + {gText_082C1CF5, gText_082C1DC1}, + {gText_082C1EDC, gText_082C1FEC}, + {gText_082C20D1, gText_082C21FF}, + {gText_082C231C, gText_082C2407}, + {gText_082C24B5, gText_082C25B1}, + {gText_082C2707, gText_082C27D4}, + {gText_082C28D6, gText_082C2A0B}, + {gText_082C2B50, gText_082C2C77}, + {gText_082C2D67, gText_082C2E41}, + {gText_082C2EF5, gText_082C3023}, +}; + +const u8 *const gUnknown_08611330[] = +{ + gText_082B6EA5, + gText_082B6EEC, + gText_082B6F16, + gText_082B6F4C, + gText_082B6F92, + gText_082B6FC9, + gText_082B700C, + gText_082B703A, + gText_082B706A, + gText_082B709C, + gText_082B70CC, + gText_082B710A, + gText_082B714D, + gText_082B7185, + gText_082B71C1, + gText_082B71F9, +}; + +const bool8 gUnknown_08611370[] = +{ + 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x01, +}; + +const u8 gUnknown_086114D3[] = {0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00}; + +void (* const gUnknown_086114E0[])(void) = +{ + sub_81A093C, + sub_81A0964, + sub_81A0978, + sub_819FC60, + sub_81A0984, + sub_81A0990, + sub_81A09D0, + sub_81A0A20, + sub_81A0C9C, + sub_81A087C, + sub_81A1638, + sub_81A0CC0, + sub_81A09B4, + sub_81A0D40, + sub_81A0DD4, + sub_81A0FE4, + sub_81A0FFC, + sub_81A0D80, + sub_81A11F8, + sub_81A1218, + sub_81A1224, + sub_81A1438, + sub_81A150C, + sub_81A15A4, + sub_81A1644, + sub_81A1370, +}; + +const u8 gUnknown_08611548[8] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09}; + // text extern const u8 gText_Give[]; extern const u8 gText_NoNeed[]; From 7952cfeba5c9eaed2cd58a7f49dea8d676a56840 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 16:27:48 +0200 Subject: [PATCH 08/10] document more of apprentice --- data/scripts/apprentice.inc | 46 +++---- include/global.h | 31 +++-- src/apprentice.c | 248 ++++++++++++++++++------------------ 3 files changed, 158 insertions(+), 167 deletions(-) diff --git a/data/scripts/apprentice.inc b/data/scripts/apprentice.inc index d157c0b45..f8eac0617 100644 --- a/data/scripts/apprentice.inc +++ b/data/scripts/apprentice.inc @@ -5,6 +5,7 @@ setvar VAR_0x8004, 8 setvar VAR_0x8005, \waitbuttonpress setvar VAR_0x8006, \which special sub_81A085C +waitstate .endm .macro apprentice_buff whichstringvar tobuff @@ -27,7 +28,7 @@ EventScript_Apprentice:: @ 82B688D setvar VAR_0x8004, 0 special sub_81A085C compare VAR_RESULT, 0 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6900 + goto_eq Script_Apprentice_FirstMeeting setvar VAR_0x8004, 10 special sub_81A085C compare VAR_0x8004, 0 @@ -52,17 +53,15 @@ BattleFrontier_BattleTowerLobby_EventScript_2B68BE: releaseall end -BattleFrontier_BattleTowerLobby_EventScript_2B6900: +Script_Apprentice_FirstMeeting: apprentice_buff 0, APPRENTICE_BUFF_NAME apprentice_msg FALSE, 0 - waitstate -BattleFrontier_BattleTowerLobby_EventScript_2B6925: +Script_Apprentice_FirstMeetingNag: apprentice_menu APPRENTICE_ASK_YES_NO compare VAR_RESULT, 1 - goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69BB + goto_eq Script_Apprentice_FirstMeetingAskAgain apprentice_msg FALSE, 2 - waitstate apprentice_menu APPRENTICE_ASK_WHICH_LEVEL setvar VAR_0x8004, 1 setorcopyvar VAR_0x8005, VAR_RESULT @@ -72,8 +71,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6925: special sub_81A085C apprentice_buff 0, APPRENTICE_BUFF_LEVEL apprentice_msg TRUE, 3 - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -81,10 +79,9 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6925: goto Script_Apprentice_Leave end -BattleFrontier_BattleTowerLobby_EventScript_2B69BB: +Script_Apprentice_FirstMeetingAskAgain: apprentice_msg FALSE, 1 - waitstate - goto BattleFrontier_BattleTowerLobby_EventScript_2B6925 + goto Script_Apprentice_FirstMeetingNag BattleFrontier_BattleTowerLobby_EventScript_2B69D3: setvar VAR_0x8004, 14 @@ -93,7 +90,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B69D3: apprentice_buff 0, APPRENTICE_BUFF_SPECIES1 apprentice_buff 1, APPRENTICE_BUFF_SPECIES2 apprentice_msg FALSE, 6 - waitstate apprentice_menu APPRENTICE_ASK_2SPECIES copyvar VAR_0x8005, VAR_RESULT compare VAR_0x8005, 0 @@ -118,8 +114,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B69D3: setvar VAR_0x8004, 15 special sub_81A085C apprentice_msg TRUE, 7 - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -146,7 +141,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6ACF: special sub_81A085C apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 apprentice_msg TRUE, 10 - waitstate setvar VAR_0x8004, 15 special sub_81A085C @@ -164,10 +158,9 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B09: goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C0C apprentice_buff 0, APPRENTICE_BUFF_ITEM apprentice_msg TRUE, 12 - waitstate setvar VAR_0x8004, 5 special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -181,7 +174,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B81: special sub_81A085C apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 apprentice_msg FALSE, 13 - waitstate apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 special sub_81A085C @@ -190,10 +182,9 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B81: BattleFrontier_BattleTowerLobby_EventScript_2B6BD4: apprentice_msg TRUE, 14 - waitstate setvar VAR_0x8004, 5 special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -208,7 +199,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C0C: apprentice_buff 0, APPRENTICE_BUFF_ITEM apprentice_buff 1, APPRENTICE_BUFF_SPECIES3 apprentice_msg FALSE, 16 - waitstate apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 special sub_81A085C @@ -225,7 +215,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C77: apprentice_buff 1, APPRENTICE_BUFF_MOVE1 apprentice_buff 2, APPRENTICE_BUFF_MOVE2 apprentice_msg FALSE, 8 - waitstate apprentice_menu APPRENTICE_ASK_MOVES copyvar VAR_0x8005, VAR_RESULT compare VAR_0x8005, 0 @@ -243,8 +232,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C77: setvar VAR_0x8004, 15 special sub_81A085C apprentice_msg TRUE, 9 - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -262,7 +250,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D56: BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: apprentice_msg FALSE, 4 - waitstate apprentice_menu APPRENTICE_ASK_3SPECIES copyvar VAR_0x8005, VAR_RESULT setvar VAR_0x8004, 18 @@ -271,8 +258,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: special sub_81A085C apprentice_buff 0, APPRENTICE_BUFF_SPECIES4 apprentice_msg TRUE, 5 - waitstate - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -282,7 +268,6 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: apprentice_msg TRUE, 11 - waitstate setvar VAR_0x8004, 25 special sub_81A085C setvar VAR_0x8004, 19 @@ -293,10 +278,9 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: special sub_81A085C apprentice_buff 0, APPRENTICE_BUFF_EASY_CHAT apprentice_msg TRUE, 15 - waitstate setvar VAR_0x8004, 9 special sub_81A085C - call BattleFrontier_BattleTowerLobby_EventScript_2B6E4D + call Script_Apprentice_SetLeavingFlags release releaseall switch VAR_FACING @@ -304,7 +288,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: goto Script_Apprentice_Leave end -BattleFrontier_BattleTowerLobby_EventScript_2B6E4D: +Script_Apprentice_SetLeavingFlags: setflag FLAG_0x2BD setflag FLAG_0x934 return diff --git a/include/global.h b/include/global.h index 43e829dcf..2c5ce3777 100644 --- a/include/global.h +++ b/include/global.h @@ -178,12 +178,14 @@ enum OPTIONS_BATTLE_STYLE_SET }; -struct Coords8 { +struct Coords8 +{ s8 x; s8 y; }; -struct UCoords8 { +struct UCoords8 +{ u8 x; u8 y; }; @@ -489,6 +491,19 @@ struct Sav2_B8 u16 unk2; }; +struct PlayersApprentice +{ + /*0xB0*/ u8 id; + /*0xB1*/ u8 activeLvlMode:2; // +1, 0 means not active + /*0xB1*/ u8 field_B1_1:4; + /*0xB1*/ u8 field_B1_2:2; + /*0xB2*/ u8 field_B2_0:3; + /*0xB2*/ u8 field_B2_1:2; + /*0xB3*/ u8 field_B3; + /*0xB4*/ u8 monIds[3]; + /*0xB8*/ struct Sav2_B8 field_B8[9]; +}; + struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -512,17 +527,7 @@ struct SaveBlock2 /*0xA0*/ struct Time lastBerryTreeUpdate; /*0xA8*/ u32 field_A8; /*0xAC*/ u32 encryptionKey; - - // Possibly player's apprentice, will document once battle tower is decompiled. - /*0xB0*/ u8 field_B0; - /*0xB1*/ u8 field_B1_0:2; - /*0xB1*/ u8 field_B1_1:4; - /*0xB1*/ u8 field_B1_2:2; - /*0xB2*/ u8 field_B2_0:3; - /*0xB2*/ u8 field_B2_1:2; - /*0xB3*/ u8 field_B3; - /*0xB4*/ u8 field_B4[3]; - /*0xB8*/ struct Sav2_B8 field_B8[9]; + /*0xB0*/ struct PlayersApprentice playerApprentice; /*0xDC*/ struct Apprentice apprentices[4]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; diff --git a/src/apprentice.c b/src/apprentice.c index b4b20f672..ca94dab39 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -25,6 +25,8 @@ #include "constants/items.h" #include "constants/songs.h" +#define PLAYER_APPRENTICE gSaveBlock2Ptr->playerApprentice + struct Unk030062ECStruct { u8 unk0; @@ -114,7 +116,7 @@ void sub_819FAA0(void) { u8 i, j; - gSaveBlock2Ptr->field_B2_1 = 0; + PLAYER_APPRENTICE.field_B2_1 = 0; for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) @@ -133,9 +135,9 @@ void sub_819FAA0(void) sub_81A087C(); } -bool8 sub_819FBB0(void) +static bool8 IsPlayersApprenticeActive(void) { - return (gSaveBlock2Ptr->field_B1_0 != 0); + return (PLAYER_APPRENTICE.activeLvlMode != 0); } void sub_819FBC8(void) @@ -144,26 +146,26 @@ void sub_819FBC8(void) { do { - gSaveBlock2Ptr->field_B0 = gUnknown_08611548[Random() % ARRAY_COUNT(gUnknown_08611548)]; - } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->apprentices[0].id); + PLAYER_APPRENTICE.id = gUnknown_08611548[Random() % ARRAY_COUNT(gUnknown_08611548)]; + } while (PLAYER_APPRENTICE.id == gSaveBlock2Ptr->apprentices[0].id); } else { do { - gSaveBlock2Ptr->field_B0 = Random() % 16; - } while (gSaveBlock2Ptr->field_B0 == gSaveBlock2Ptr->apprentices[0].id); + PLAYER_APPRENTICE.id = Random() % 16; + } while (PLAYER_APPRENTICE.id == gSaveBlock2Ptr->apprentices[0].id); } } -void sub_819FC40(u8 value) +static void SetPlayersApprenticeLvlMode(u8 mode) { - gSaveBlock2Ptr->field_B1_0 = value; + PLAYER_APPRENTICE.activeLvlMode = mode; } void sub_819FC60(void) { - u8 array[10]; + u8 array[APPRENTICE_SPECIES_COUNT]; u8 i; for (i = 0; i < ARRAY_COUNT(array); i++) @@ -178,7 +180,7 @@ void sub_819FC60(void) } for (i = 0; i < 3; i++) - gSaveBlock2Ptr->field_B4[i] = ((array[i * 2] & 0xF) << 4) | ((array[i * 2 + 1]) & 0xF); + PLAYER_APPRENTICE.monIds[i] = ((array[i * 2] & 0xF) << 4) | ((array[i * 2 + 1]) & 0xF); } u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) @@ -247,11 +249,11 @@ void sub_819FD64(void) sp_10 = 0; for (i = 0; i < 9; i++) { - gSaveBlock2Ptr->field_B8[i].unk0_0 = sp_0[i]; + PLAYER_APPRENTICE.field_B8[i].unk0_0 = sp_0[i]; if (sp_0[i] != 3) { - gSaveBlock2Ptr->field_B8[i].unk0_1 = sub_819FCF8(sp_0[i], sp_C, &sp_10); - id = gSaveBlock2Ptr->field_B8[i].unk0_1; + PLAYER_APPRENTICE.field_B8[i].unk0_1 = sub_819FCF8(sp_0[i], sp_C, &sp_10); + id = PLAYER_APPRENTICE.field_B8[i].unk0_1; if (sp_0[i] == 2) { do @@ -265,8 +267,8 @@ void sub_819FD64(void) } while (j != gUnknown_030062EC->unk0 + 1); gUnknown_030062EC->unk20[id][gUnknown_030062EC->unk0] = rand1; - gSaveBlock2Ptr->field_B8[i].unk0_2 = rand1; - gSaveBlock2Ptr->field_B8[i].unk2 = sub_819FF98(gSaveBlock2Ptr->field_B8[i].unk0_1); + PLAYER_APPRENTICE.field_B8[i].unk0_2 = rand1; + PLAYER_APPRENTICE.field_B8[i].unk2 = sub_819FF98(PLAYER_APPRENTICE.field_B8[i].unk0_1); } } } @@ -276,13 +278,13 @@ void sub_819FD64(void) // No idea why a do-while loop is needed, but it will not match without it. -#define APPRENTICE_SPECIES_ID(speciesArrId, monId) speciesArrId = (gSaveBlock2Ptr->field_B4[monId] >> \ - (((gSaveBlock2Ptr->field_B2_0 >> monId) & 1) << 2)) & 0xF; \ +#define APPRENTICE_SPECIES_ID(speciesArrId, monId) speciesArrId = (PLAYER_APPRENTICE.monIds[monId] >> \ + (((PLAYER_APPRENTICE.field_B2_0 >> monId) & 1) << 2)) & 0xF; \ do {} while (0) // Why the need to have two macros do the exact thing differently? -#define APPRENTICE_SPECIES_ID_2(speciesArrId, monId) { u8 a0 = ((gSaveBlock2Ptr->field_B2_0 >> monId) & 1);\ - speciesArrId = gSaveBlock2Ptr->field_B4[monId]; \ +#define APPRENTICE_SPECIES_ID_2(speciesArrId, monId) { u8 a0 = ((PLAYER_APPRENTICE.field_B2_0 >> monId) & 1);\ + speciesArrId = PLAYER_APPRENTICE.monIds[monId]; \ speciesArrId = ((speciesArrId) >> (a0 << 2)) & 0xF; \ } @@ -307,10 +309,10 @@ static u16 sub_819FF98(u8 arg0) id = 0; } - species = gApprentices[gSaveBlock2Ptr->field_B0].species[id]; + species = gApprentices[PLAYER_APPRENTICE.id].species[id]; learnset = gLevelUpLearnsets[species]; j = 0; - if (gSaveBlock2Ptr->field_B1_0 == 1) + if (PLAYER_APPRENTICE.activeLvlMode == 1) level = 50; else level = 60; @@ -412,7 +414,7 @@ void GetLatestLearnedMoves(u16 species, u16 *moves) u8 level, knownMovesCount; const u16 *learnset; - if (gSaveBlock2Ptr->field_B1_0 == 1) + if (PLAYER_APPRENTICE.activeLvlMode == 1) level = 50; else level = 60; @@ -437,25 +439,25 @@ u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2) u16 moves[4]; u8 i, count; - if (gSaveBlock2Ptr->field_B1_1 < 3) + if (PLAYER_APPRENTICE.field_B1_1 < 3) return 0; count = 0; for (i = 0; i < 9; i++) { - if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 0) + if (PLAYER_APPRENTICE.field_B8[i].unk0_0 == 0) break; count++; } - GetLatestLearnedMoves(gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId], moves); - for (i = 0; i < count && i < gSaveBlock2Ptr->field_B1_1 - 3; i++) + GetLatestLearnedMoves(gApprentices[PLAYER_APPRENTICE.id].species[speciesTableId], moves); + for (i = 0; i < count && i < PLAYER_APPRENTICE.field_B1_1 - 3; i++) { - if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 2 - && gSaveBlock2Ptr->field_B8[i].unk0_1 == arg0 - && gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) + if (PLAYER_APPRENTICE.field_B8[i].unk0_0 == 2 + && PLAYER_APPRENTICE.field_B8[i].unk0_1 == arg0 + && PLAYER_APPRENTICE.field_B8[i].unk0_3 != 0) { - moves[gSaveBlock2Ptr->field_B8[i].unk0_2] = gSaveBlock2Ptr->field_B8[i].unk2; + moves[PLAYER_APPRENTICE.field_B8[i].unk0_2] = PLAYER_APPRENTICE.field_B8[i].unk2; } } @@ -476,7 +478,7 @@ void sub_81A0390(u8 arg0) gSaveBlock2Ptr->apprentices[0].monData[i].moves[j] = 0; } - j = gSaveBlock2Ptr->field_B1_2; + j = PLAYER_APPRENTICE.field_B1_2; for (i = 0; i < 3; i++) { apprenticeMons[j] = &gSaveBlock2Ptr->apprentices[0].monData[i]; @@ -486,25 +488,25 @@ void sub_81A0390(u8 arg0) for (i = 0; i < 3; i++) { APPRENTICE_SPECIES_ID(speciesTableId, i); - apprenticeMons[i]->species = gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId]; + apprenticeMons[i]->species = gApprentices[PLAYER_APPRENTICE.id].species[speciesTableId]; GetLatestLearnedMoves(apprenticeMons[i]->species, apprenticeMons[i]->moves); } for (i = 0; i < arg0; i++) { - u8 var1 = gSaveBlock2Ptr->field_B8[i].unk0_0; - u8 monId = gSaveBlock2Ptr->field_B8[i].unk0_1; + u8 var1 = PLAYER_APPRENTICE.field_B8[i].unk0_0; + u8 monId = PLAYER_APPRENTICE.field_B8[i].unk0_1; if (var1 == 1) { - if (gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) - apprenticeMons[monId]->item = gSaveBlock2Ptr->field_B8[i].unk2; + if (PLAYER_APPRENTICE.field_B8[i].unk0_3 != 0) + apprenticeMons[monId]->item = PLAYER_APPRENTICE.field_B8[i].unk2; } else if (var1 == 2) { - if (gSaveBlock2Ptr->field_B8[i].unk0_3 != 0) + if (PLAYER_APPRENTICE.field_B8[i].unk0_3 != 0) { - u32 moveSlot = gSaveBlock2Ptr->field_B8[i].unk0_2; - apprenticeMons[monId]->moves[moveSlot] = gSaveBlock2Ptr->field_B8[i].unk2; + u32 moveSlot = PLAYER_APPRENTICE.field_B8[i].unk0_2; + apprenticeMons[monId]->moves[moveSlot] = PLAYER_APPRENTICE.field_B8[i].unk2; } } } @@ -539,14 +541,14 @@ static void CreateMenuWithAnswers(u8 arg0) u32 speciesTableId; APPRENTICE_SPECIES_ID(speciesTableId, i); - species = gApprentices[gSaveBlock2Ptr->field_B0].species[speciesTableId]; + species = gApprentices[PLAYER_APPRENTICE.id].species[speciesTableId]; strings[i] = gSpeciesNames[species]; } break; case APPRENTICE_ASK_2SPECIES: left = 0x12; top = 8; - if (gSaveBlock2Ptr->field_B1_1 > 2) + if (PLAYER_APPRENTICE.field_B1_1 > 2) return; strings[1] = gSpeciesNames[gUnknown_030062F0->unk2]; strings[0] = gSpeciesNames[gUnknown_030062F0->unk0]; @@ -674,27 +676,27 @@ void sub_81A087C(void) u8 i; sub_819FBC8(); - gSaveBlock2Ptr->field_B1_0 = 0; - gSaveBlock2Ptr->field_B1_1 = 0; - gSaveBlock2Ptr->field_B1_2 = 0; - gSaveBlock2Ptr->field_B2_0 = 0; + PLAYER_APPRENTICE.activeLvlMode = 0; + PLAYER_APPRENTICE.field_B1_1 = 0; + PLAYER_APPRENTICE.field_B1_2 = 0; + PLAYER_APPRENTICE.field_B2_0 = 0; for (i = 0; i < 3; i++) - gSaveBlock2Ptr->field_B4[i] = 0; + PLAYER_APPRENTICE.monIds[i] = 0; for (i = 0; i < 9; i++) { - gSaveBlock2Ptr->field_B8[i].unk0_0 = 0; - gSaveBlock2Ptr->field_B8[i].unk0_1 = 0; - gSaveBlock2Ptr->field_B8[i].unk0_2 = 0; - gSaveBlock2Ptr->field_B8[i].unk0_3 = 0; - gSaveBlock2Ptr->field_B8[i].unk2 = 0; + PLAYER_APPRENTICE.field_B8[i].unk0_0 = 0; + PLAYER_APPRENTICE.field_B8[i].unk0_1 = 0; + PLAYER_APPRENTICE.field_B8[i].unk0_2 = 0; + PLAYER_APPRENTICE.field_B8[i].unk0_3 = 0; + PLAYER_APPRENTICE.field_B8[i].unk2 = 0; } } void sub_81A093C(void) { - if (!sub_819FBB0()) + if (!IsPlayersApprenticeActive()) gSpecialVar_Result = FALSE; else gSpecialVar_Result = TRUE; @@ -702,7 +704,7 @@ void sub_81A093C(void) void sub_81A0964(void) { - sub_819FC40(gSpecialVar_0x8005); + SetPlayersApprenticeLvlMode(gSpecialVar_0x8005); } void sub_81A0978(void) @@ -717,17 +719,17 @@ void sub_81A0984(void) void sub_81A0990(void) { - gSaveBlock2Ptr->field_B1_1++; + PLAYER_APPRENTICE.field_B1_1++; } void sub_81A09B4(void) { - gSpecialVar_Result = gSaveBlock2Ptr->field_B1_1; + gSpecialVar_Result = PLAYER_APPRENTICE.field_B1_1; } void sub_81A09D0(void) { - s32 var = gSaveBlock2Ptr->field_B1_1 - 3; + s32 var = PLAYER_APPRENTICE.field_B1_1 - 3; if (var < 0) { gSpecialVar_Result = FALSE; @@ -737,7 +739,7 @@ void sub_81A09D0(void) if (var > 8) gSpecialVar_Result = TRUE; - if (!gSaveBlock2Ptr->field_B8[var].unk0_0) + if (!PLAYER_APPRENTICE.field_B8[var].unk0_0) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; @@ -767,71 +769,71 @@ static void PrintMessage(void) if (gSpecialVar_0x8006 == 6) { - string = gUnknown_08610FF0[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_08610FF0[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 7) { - string = gUnknown_08610FF0[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_08610FF0[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 8) { - string = gUnknown_086111B0[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_086111B0[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 9) { - string = gUnknown_086111B0[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_086111B0[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 4) { - string = gUnknown_08611230[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_08611230[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 5) { - string = gUnknown_08611230[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_08611230[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 10) { - string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_08611070[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 11) { - string = gUnknown_086112B0[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_086112B0[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 12) { - string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][3]; + string = gUnknown_08611070[PLAYER_APPRENTICE.id][3]; } else if (gSpecialVar_0x8006 == 13) { - string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_08611070[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 16) { - string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][4]; + string = gUnknown_08611070[PLAYER_APPRENTICE.id][4]; } else if (gSpecialVar_0x8006 == 14) { - string = gUnknown_08611070[gSaveBlock2Ptr->field_B0][2]; + string = gUnknown_08611070[PLAYER_APPRENTICE.id][2]; } else if (gSpecialVar_0x8006 == 15) { - string = gUnknown_086112B0[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_086112B0[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 0) { - string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][0]; + string = gUnknown_08610EF0[PLAYER_APPRENTICE.id][0]; } else if (gSpecialVar_0x8006 == 1) { - string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][1]; + string = gUnknown_08610EF0[PLAYER_APPRENTICE.id][1]; } else if (gSpecialVar_0x8006 == 2) { - string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][2]; + string = gUnknown_08610EF0[PLAYER_APPRENTICE.id][2]; } else if (gSpecialVar_0x8006 == 3) { - string = gUnknown_08610EF0[gSaveBlock2Ptr->field_B0][3]; + string = gUnknown_08610EF0[PLAYER_APPRENTICE.id][3]; } else { @@ -856,18 +858,18 @@ void sub_81A0C9C(void) void sub_81A0CC0(void) { - if (gSaveBlock2Ptr->field_B1_1 < 3) + if (PLAYER_APPRENTICE.field_B1_1 < 3) { gSpecialVar_Result = 2; } - else if (gSaveBlock2Ptr->field_B1_1 > 11) + else if (PLAYER_APPRENTICE.field_B1_1 > 11) { gSpecialVar_Result = 5; } else { - s32 id = gSaveBlock2Ptr->field_B1_1 - 3; - switch (gSaveBlock2Ptr->field_B8[id].unk0_0) + s32 id = PLAYER_APPRENTICE.field_B1_1 - 3; + switch (PLAYER_APPRENTICE.field_B8[id].unk0_0) { case 1: gSpecialVar_Result = 4; @@ -890,19 +892,19 @@ void sub_81A0D40(void) if (gSpecialVar_0x8005) { u8 bitNo = gSpecialVar_0x8006; - gSaveBlock2Ptr->field_B2_0 |= 1 << bitNo; + PLAYER_APPRENTICE.field_B2_0 |= 1 << bitNo; } } void sub_81A0D80(void) { - if (gSaveBlock2Ptr->field_B1_1 >= 3) + if (PLAYER_APPRENTICE.field_B1_1 >= 3) { - u8 id = gSaveBlock2Ptr->field_B1_1 - 3; + u8 id = PLAYER_APPRENTICE.field_B1_1 - 3; if (gSpecialVar_0x8005) - gSaveBlock2Ptr->field_B8[id].unk0_3 = 1; + PLAYER_APPRENTICE.field_B8[id].unk0_3 = 1; else - gSaveBlock2Ptr->field_B8[id].unk0_3 = 0; + PLAYER_APPRENTICE.field_B8[id].unk0_3 = 0; } } @@ -912,43 +914,43 @@ void sub_81A0DD4(void) u8 count = 0; u8 id1, id2; - for (i = 0; i < 9 && gSaveBlock2Ptr->field_B8[i].unk0_0; count++, i++) + for (i = 0; i < 9 && PLAYER_APPRENTICE.field_B8[i].unk0_0; count++, i++) ; gUnknown_030062F0 = AllocZeroed(sizeof(*gUnknown_030062F0)); if (gSpecialVar_0x8005 == 2) { - if (gSaveBlock2Ptr->field_B1_1 < 3) + if (PLAYER_APPRENTICE.field_B1_1 < 3) { - id1 = gSaveBlock2Ptr->field_B4[gSaveBlock2Ptr->field_B1_1] >> 4; - gUnknown_030062F0->unk2 = gApprentices[gSaveBlock2Ptr->field_B0].species[id1]; + id1 = PLAYER_APPRENTICE.monIds[PLAYER_APPRENTICE.field_B1_1] >> 4; + gUnknown_030062F0->unk2 = gApprentices[PLAYER_APPRENTICE.id].species[id1]; - id2 = gSaveBlock2Ptr->field_B4[gSaveBlock2Ptr->field_B1_1] & 0xF; - gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id2]; + id2 = PLAYER_APPRENTICE.monIds[PLAYER_APPRENTICE.field_B1_1] & 0xF; + gUnknown_030062F0->unk0 = gApprentices[PLAYER_APPRENTICE.id].species[id2]; } } else if (gSpecialVar_0x8005 == 3) { - if (gSaveBlock2Ptr->field_B1_1 >= 3 - && gSaveBlock2Ptr->field_B1_1 < count + 3 - && gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_0 == 2) + if (PLAYER_APPRENTICE.field_B1_1 >= 3 + && PLAYER_APPRENTICE.field_B1_1 < count + 3 + && PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_0 == 2) { - count = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_1; + count = PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_1; APPRENTICE_SPECIES_ID_2(id1, count); - gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id1]; - gUnknown_030062F0->unk4 = sub_81A0284(count, id1, gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_2); - gUnknown_030062F0->unk6 = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2; + gUnknown_030062F0->unk0 = gApprentices[PLAYER_APPRENTICE.id].species[id1]; + gUnknown_030062F0->unk4 = sub_81A0284(count, id1, PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_2); + gUnknown_030062F0->unk6 = PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2; } } else if (gSpecialVar_0x8005 == 4) { - if (gSaveBlock2Ptr->field_B1_1 >= 3 - && gSaveBlock2Ptr->field_B1_1 < count + 3 - && gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_0 == 1) + if (PLAYER_APPRENTICE.field_B1_1 >= 3 + && PLAYER_APPRENTICE.field_B1_1 < count + 3 + && PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_0 == 1) { - count = gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_1; + count = PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_1; APPRENTICE_SPECIES_ID_2(id2, count); - gUnknown_030062F0->unk0 = gApprentices[gSaveBlock2Ptr->field_B0].species[id2]; + gUnknown_030062F0->unk0 = gApprentices[PLAYER_APPRENTICE.id].species[id2]; } } } @@ -997,14 +999,14 @@ void sub_81A0FFC(void) StringCopy(stringDst, gMoveNames[gUnknown_030062F0->unk6]); break; case APPRENTICE_BUFF_ITEM: - StringCopy(stringDst, ItemId_GetName(gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2)); + StringCopy(stringDst, ItemId_GetName(PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2)); break; case APPRENTICE_BUFF_NAME: - TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(gSaveBlock2Ptr->field_B0, LANGUAGE_ENGLISH), LANGUAGE_ENGLISH); + TVShowConvertInternationalString(text, GetApprenticeNameInLanguage(PLAYER_APPRENTICE.id, LANGUAGE_ENGLISH), LANGUAGE_ENGLISH); StringCopy(stringDst, text); break; case APPRENTICE_BUFF_LEVEL: - if (gSaveBlock2Ptr->field_B1_0 == 1) + if (PLAYER_APPRENTICE.activeLvlMode == 1) StringCopy(stringDst, gText_Lv50); else StringCopy(stringDst, gText_OpenLevel); @@ -1014,22 +1016,22 @@ void sub_81A0FFC(void) StringCopy(stringDst, gStringVar4); break; case APPRENTICE_BUFF_SPECIES4: - if (gSaveBlock2Ptr->field_B1_2 < 3) + if (PLAYER_APPRENTICE.field_B1_2 < 3) { - APPRENTICE_SPECIES_ID(speciesArrayId, gSaveBlock2Ptr->field_B1_2); + APPRENTICE_SPECIES_ID(speciesArrayId, PLAYER_APPRENTICE.field_B1_2); } else { speciesArrayId = 0; } - StringCopy(stringDst, gSpeciesNames[gApprentices[gSaveBlock2Ptr->field_B0].species[speciesArrayId]]); + StringCopy(stringDst, gSpeciesNames[gApprentices[PLAYER_APPRENTICE.id].species[speciesArrayId]]); break; } } void sub_81A11F8(void) { - gSaveBlock2Ptr->field_B1_2 = gSpecialVar_0x8005; + PLAYER_APPRENTICE.field_B1_2 = gSpecialVar_0x8005; } void sub_81A1218(void) @@ -1043,28 +1045,28 @@ void sub_81A1224(void) u8 count; u8 i, j; - if (gSaveBlock2Ptr->field_B1_1 < 3) + if (PLAYER_APPRENTICE.field_B1_1 < 3) return; count = 0; - for (j = 0; j < 9 && gSaveBlock2Ptr->field_B8[j].unk0_0; count++, j++) + for (j = 0; j < 9 && PLAYER_APPRENTICE.field_B8[j].unk0_0; count++, j++) ; - for (i = 0; i < count && i < gSaveBlock2Ptr->field_B1_1 - 3; i++) + for (i = 0; i < count && i < PLAYER_APPRENTICE.field_B1_1 - 3; i++) { - if (gSaveBlock2Ptr->field_B8[i].unk0_0 == 1 - && gSaveBlock2Ptr->field_B8[i].unk0_3 - && gSaveBlock2Ptr->field_B8[i].unk2 == gSpecialVar_0x8005) + if (PLAYER_APPRENTICE.field_B8[i].unk0_0 == 1 + && PLAYER_APPRENTICE.field_B8[i].unk0_3 + && PLAYER_APPRENTICE.field_B8[i].unk2 == gSpecialVar_0x8005) { - gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_3 = 0; - gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2 = gSpecialVar_0x8005; + PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_3 = 0; + PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2 = gSpecialVar_0x8005; gSpecialVar_Result = i; return; } } - gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk0_3 = 1; - gSaveBlock2Ptr->field_B8[gSaveBlock2Ptr->field_B1_1 - 3].unk2 = gSpecialVar_0x8005; + PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_3 = 1; + PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2 = gSpecialVar_0x8005; gSpecialVar_Result = 1; } #else @@ -1280,10 +1282,10 @@ void sub_81A1438(void) { u8 i; - gSaveBlock2Ptr->apprentices[0].id = gSaveBlock2Ptr->field_B0; - gSaveBlock2Ptr->apprentices[0].lvlMode = gSaveBlock2Ptr->field_B1_0; + gSaveBlock2Ptr->apprentices[0].id = PLAYER_APPRENTICE.id; + gSaveBlock2Ptr->apprentices[0].lvlMode = PLAYER_APPRENTICE.activeLvlMode; - for (i = 0; i < 9 && gSaveBlock2Ptr->field_B8[i].unk0_0; i++) + for (i = 0; i < 9 && PLAYER_APPRENTICE.field_B8[i].unk0_0; i++) ; gSaveBlock2Ptr->apprentices[0].field_1 = i; @@ -1330,7 +1332,7 @@ void sub_81A15A4(void) { u8 i; u8 mapObjectGfxId; - u8 class = gApprentices[gSaveBlock2Ptr->field_B0].facilityClass; + u8 class = gApprentices[PLAYER_APPRENTICE.id].facilityClass; for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++) ; From f47ed3268c76b43db4bce0a60f355b18d0edc875 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 17:00:41 +0200 Subject: [PATCH 09/10] Finish documenting apprentice for now --- asm/battle_tower.s | 2 +- .../scripts.inc | 4 +- data/scripts/apprentice.inc | 76 +-- data/specials.inc | 2 +- include/apprentice.h | 4 + include/battle_frontier_2.h | 1 - src/apprentice.c | 555 ++++++++++++++---- src/item_menu.c | 3 +- src/new_game.c | 4 +- 9 files changed, 499 insertions(+), 152 deletions(-) diff --git a/asm/battle_tower.s b/asm/battle_tower.s index db25ff03e..ae01e0b5e 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -6690,7 +6690,7 @@ _08165B10: adds r1, 0x1 cmp r1, 0x10 bls _08165B10 - bl sub_819FA5C + bl ResetApprenticeStruct pop {r0} bx r0 thumb_func_end sub_8165B08 diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index e0f2c3c5e..73c56351f 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -12,7 +12,7 @@ BattleFrontier_BattleTowerLobby_MapScript1_23E690: @ 823E690 BattleFrontier_BattleTowerLobby_MapScript1_23E694: @ 823E694 call BattleFrontier_BattleTowerLobby_EventScript_28CC84 setvar VAR_0x8004, 10 - special sub_81A085C + special CallApprenticeFunction compare VAR_0x8004, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23E6B5 checkflag FLAG_0x934 @@ -21,7 +21,7 @@ BattleFrontier_BattleTowerLobby_MapScript1_23E694: @ 823E694 BattleFrontier_BattleTowerLobby_EventScript_23E6B5:: @ 823E6B5 clearflag FLAG_0x2BD setvar VAR_0x8004, 23 - special sub_81A085C + special CallApprenticeFunction BattleFrontier_BattleTowerLobby_EventScript_23E6C0:: @ 823E6C0 end diff --git a/data/scripts/apprentice.inc b/data/scripts/apprentice.inc index f8eac0617..a644008d0 100644 --- a/data/scripts/apprentice.inc +++ b/data/scripts/apprentice.inc @@ -4,7 +4,7 @@ setvar VAR_0x8004, 8 setvar VAR_0x8005, \waitbuttonpress setvar VAR_0x8006, \which -special sub_81A085C +special CallApprenticeFunction waitstate .endm @@ -12,13 +12,13 @@ waitstate setvar VAR_0x8004, 16 setvar VAR_0x8005, \whichstringvar setvar VAR_0x8006, \tobuff -special sub_81A085C +special CallApprenticeFunction .endm .macro apprentice_menu which setvar VAR_0x8004, 7 setvar VAR_0x8005, \which -special sub_81A085C +special CallApprenticeFunction waitstate .endm @@ -26,11 +26,11 @@ EventScript_Apprentice:: @ 82B688D lock faceplayer setvar VAR_0x8004, 0 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 0 goto_eq Script_Apprentice_FirstMeeting setvar VAR_0x8004, 10 - special sub_81A085C + special CallApprenticeFunction compare VAR_0x8004, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B68BE checkflag FLAG_0x934 @@ -38,7 +38,7 @@ EventScript_Apprentice:: @ 82B688D BattleFrontier_BattleTowerLobby_EventScript_2B68BE: setvar VAR_0x8004, 11 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 2 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B69D3 compare VAR_RESULT, 4 @@ -66,9 +66,9 @@ Script_Apprentice_FirstMeetingNag: setvar VAR_0x8004, 1 setorcopyvar VAR_0x8005, VAR_RESULT addvar VAR_0x8005, 1 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 3 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_LEVEL apprentice_msg TRUE, 3 call Script_Apprentice_SetLeavingFlags @@ -86,7 +86,7 @@ Script_Apprentice_FirstMeetingAskAgain: BattleFrontier_BattleTowerLobby_EventScript_2B69D3: setvar VAR_0x8004, 14 setvar VAR_0x8005, 2 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_SPECIES1 apprentice_buff 1, APPRENTICE_BUFF_SPECIES2 apprentice_msg FALSE, 6 @@ -97,22 +97,22 @@ BattleFrontier_BattleTowerLobby_EventScript_2B69D3: compare VAR_0x8005, 1 call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC0 setvar VAR_0x8004, 12 - special sub_81A085C + special CallApprenticeFunction copyvar VAR_0x8006, VAR_RESULT setvar VAR_0x8004, 13 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 5 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 12 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 3 call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6AC6 setvar VAR_0x8004, 16 setvar VAR_0x8005, 0 copyvar VAR_0x8006, VAR_0x8007 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 15 - special sub_81A085C + special CallApprenticeFunction apprentice_msg TRUE, 7 call Script_Apprentice_SetLeavingFlags release @@ -132,34 +132,34 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6AC0: BattleFrontier_BattleTowerLobby_EventScript_2B6AC6: setvar VAR_0x8004, 4 - special sub_81A085C + special CallApprenticeFunction return BattleFrontier_BattleTowerLobby_EventScript_2B6ACF: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 apprentice_msg TRUE, 10 setvar VAR_0x8004, 15 - special sub_81A085C + special CallApprenticeFunction BattleFrontier_BattleTowerLobby_EventScript_2B6B09: fadescreen 1 setvar VAR_RESULT, 0 setvar VAR_0x8004, 19 - special sub_81A085C + special CallApprenticeFunction waitstate compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B81 setvar VAR_0x8004, 20 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6C0C apprentice_buff 0, APPRENTICE_BUFF_ITEM apprentice_msg TRUE, 12 setvar VAR_0x8004, 5 - special sub_81A085C + special CallApprenticeFunction call Script_Apprentice_SetLeavingFlags release releaseall @@ -171,19 +171,19 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6B09: BattleFrontier_BattleTowerLobby_EventScript_2B6B81: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 apprentice_msg FALSE, 13 apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 BattleFrontier_BattleTowerLobby_EventScript_2B6BD4: apprentice_msg TRUE, 14 setvar VAR_0x8004, 5 - special sub_81A085C + special CallApprenticeFunction call Script_Apprentice_SetLeavingFlags release releaseall @@ -195,13 +195,13 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6BD4: BattleFrontier_BattleTowerLobby_EventScript_2B6C0C: setvar VAR_0x8004, 14 setvar VAR_0x8005, 4 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_ITEM apprentice_buff 1, APPRENTICE_BUFF_SPECIES3 apprentice_msg FALSE, 16 apprentice_menu APPRENTICE_ASK_GIVE setvar VAR_0x8004, 15 - special sub_81A085C + special CallApprenticeFunction compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_2B6B09 goto BattleFrontier_BattleTowerLobby_EventScript_2B6BD4 @@ -210,7 +210,7 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C0C: BattleFrontier_BattleTowerLobby_EventScript_2B6C77: setvar VAR_0x8004, 14 setvar VAR_0x8005, 3 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_SPECIES3 apprentice_buff 1, APPRENTICE_BUFF_MOVE1 apprentice_buff 2, APPRENTICE_BUFF_MOVE2 @@ -222,15 +222,15 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6C77: compare VAR_0x8005, 1 call_if 1, BattleFrontier_BattleTowerLobby_EventScript_2B6D56 setvar VAR_0x8004, 17 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 5 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 16 setvar VAR_0x8005, 0 copyvar VAR_0x8006, VAR_0x8007 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 15 - special sub_81A085C + special CallApprenticeFunction apprentice_msg TRUE, 9 call Script_Apprentice_SetLeavingFlags release @@ -253,9 +253,9 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: apprentice_menu APPRENTICE_ASK_3SPECIES copyvar VAR_0x8005, VAR_RESULT setvar VAR_0x8004, 18 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 5 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_SPECIES4 apprentice_msg TRUE, 5 call Script_Apprentice_SetLeavingFlags @@ -269,17 +269,17 @@ BattleFrontier_BattleTowerLobby_EventScript_2B6D5C: BattleFrontier_BattleTowerLobby_EventScript_2B6DD4: apprentice_msg TRUE, 11 setvar VAR_0x8004, 25 - special sub_81A085C + special CallApprenticeFunction setvar VAR_0x8004, 19 call BattleFrontier_BattleTowerLobby_EventScript_271E7C lock faceplayer setvar VAR_0x8004, 21 - special sub_81A085C + special CallApprenticeFunction apprentice_buff 0, APPRENTICE_BUFF_EASY_CHAT apprentice_msg TRUE, 15 setvar VAR_0x8004, 9 - special sub_81A085C + special CallApprenticeFunction call Script_Apprentice_SetLeavingFlags release releaseall @@ -295,7 +295,7 @@ Script_Apprentice_SetLeavingFlags: Script_Apprentice_LeaveGoRight: setvar VAR_0x8004, 24 - special sub_81A085C + special CallApprenticeFunction compare VAR_0x8004, 0 goto_eq Script_Apprentice_End applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E94 @@ -304,7 +304,7 @@ Script_Apprentice_LeaveGoRight: Script_Apprentice_Leave: setvar VAR_0x8004, 24 - special sub_81A085C + special CallApprenticeFunction compare VAR_0x8004, 0 goto_eq Script_Apprentice_End applymovement 6, BattleFrontier_BattleTowerLobby_Movement_2B6E95 diff --git a/data/specials.inc b/data/specials.inc index 07da8edab..4d11cf304 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -415,7 +415,7 @@ gSpecials:: @ 81DBA64 def_special sub_818E990 def_special PutLilycoveContestLadyShowOnTheAir def_special sub_813B880 - def_special sub_81A085C + def_special CallApprenticeFunction def_special ShouldTryGetTrainerScript def_special ShowMapNamePopup def_special ShowMapNamePopup diff --git a/include/apprentice.h b/include/apprentice.h index 90383b737..ca0b04800 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -15,6 +15,10 @@ struct ApprenticeTrainer extern const struct ApprenticeTrainer gApprentices[]; void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId); +void Apprentice_EnableBothScriptContexts(void); +void ResetApprenticeStruct(struct Apprentice *apprentice); +void ResetAllApprenticeData(void); +void CallApprenticeFunction(void); const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language); #endif // GUARD_APPRENTICE_H diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h index d032f9f74..573053f10 100644 --- a/include/battle_frontier_2.h +++ b/include/battle_frontier_2.h @@ -11,7 +11,6 @@ void sub_81A895C(void); u16 sub_81A89A0(u8); void sub_81A8AF8(void); bool8 InBattlePike(void); -void sub_819FA50(void); void sub_81AA078(u16*, u8); void sub_81A4C30(void); bool8 sub_81A6BF4(void); diff --git a/src/apprentice.c b/src/apprentice.c index 6e341a27d..f2a8aa9c0 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -25,6 +25,7 @@ #include "constants/items.h" #include "constants/songs.h" #include "constants/species.h" +#include "constants/moves.h" #define PLAYER_APPRENTICE gSaveBlock2Ptr->playerApprentice @@ -350,32 +351,40 @@ extern const u8 gUnknown_085DCF0E[]; extern const u8 gUnknown_085DCEFA[]; extern const u8 gUnknown_085DCF2C[]; -void sub_81A093C(void); -void sub_81A0964(void); -void sub_81A0978(void); -void sub_819FC60(void); -void sub_81A0984(void); -void sub_81A0990(void); -void sub_81A09D0(void); -void sub_81A0A20(void); -void sub_81A0C9C(void); -void sub_81A087C(void); -void sub_81A1638(void); -void sub_81A0CC0(void); -void sub_81A09B4(void); -void sub_81A0D40(void); -void sub_81A0DD4(void); -void sub_81A0FE4(void); -void sub_81A0FFC(void); -void sub_81A0D80(void); -void sub_81A11F8(void); -void sub_81A1218(void); -void sub_81A1224(void); -void sub_81A1438(void); -void sub_81A150C(void); -void sub_81A15A4(void); -void sub_81A1644(void); -void sub_81A1370(void); +// This file's functions. +static u16 sub_819FF98(u8 arg0); +static bool8 sub_81A0194(u8 arg0, u16 moveId); +static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId); +static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height); +static void RemoveAndHideWindow(u8 windowId); +static void ExecuteFuncAfterButtonPress(void (*func)(void)); + +static void Script_IsPlayersApprenticeActive(void); +static void Script_SetPlayersApprenticeLvlMode(void); +static void sub_81A0978(void); +static void sub_819FC60(void); +static void sub_81A0984(void); +static void sub_81A0990(void); +static void sub_81A09D0(void); +static void Script_CreateApprenticeMenu(void); +static void Script_PrintMessage(void); +static void Script_ResetPlayerApprentice(void); +static void sub_81A1638(void); +static void sub_81A0CC0(void); +static void sub_81A09B4(void); +static void sub_81A0D40(void); +static void sub_81A0DD4(void); +static void sub_81A0FE4(void); +static void sub_81A0FFC(void); +static void sub_81A0D80(void); +static void sub_81A11F8(void); +static void sub_81A1218(void); +static void sub_81A1224(void); +static void sub_81A1438(void); +static void sub_81A150C(void); +static void sub_81A15A4(void); +static void sub_81A1644(void); +static void sub_81A1370(void); // rodata @@ -428,7 +437,7 @@ const struct ApprenticeTrainer gApprentices[] = .otId = 0xF555, .facilityClass = 0x31, .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO}, - .rest = {6, 0, 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C}, + .rest = {6, 0, 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C}, }, { .name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")}, @@ -495,7 +504,7 @@ const struct ApprenticeTrainer gApprentices[] = }, }; -const u8 *const gUnknown_08610EF0[][4] = +static const u8 *const gUnknown_08610EF0[][4] = { {gText_082B7229, gText_082B731C, gText_082B735B, gText_082B7423}, {gText_082B74C1, gText_082B756F, gText_082B75B2, gText_082B763F}, @@ -515,7 +524,7 @@ const u8 *const gUnknown_08610EF0[][4] = {gText_082B9F55, gText_082BA084, gText_082BA11D, gText_082BA1F3}, }; -const u8 *const gUnknown_08610FF0[][2] = +static const u8 *const gUnknown_08610FF0[][2] = { {gText_082BE50D, gText_082BE5F5}, {gText_082BE679, gText_082BE71E}, @@ -535,7 +544,7 @@ const u8 *const gUnknown_08610FF0[][2] = {gText_082BFA5A, gText_082BFB4E}, }; -const u8 *const gUnknown_08611070[][5] = +static const u8 *const gUnknown_08611070[][5] = { {gText_082BA2A3, gText_082BA34E, gText_082BA380, gText_082BA3D2, gText_082BA448}, {gText_082BA4D3, gText_082BA58C, gText_082BA5BF, gText_082BA5F3, gText_082BA635}, @@ -555,7 +564,7 @@ const u8 *const gUnknown_08611070[][5] = {gText_082BCA4D, gText_082BCB75, gText_082BCBA6, gText_082BCBFC, gText_082BCCA4}, }; -const u8 *const gUnknown_086111B0[][2] = +static const u8 *const gUnknown_086111B0[][2] = { {gText_082BFBF2, gText_082BFCAE}, {gText_082BFD26, gText_082BFDB1}, @@ -575,7 +584,7 @@ const u8 *const gUnknown_086111B0[][2] = {gText_082C1003, gText_082C1122}, }; -const u8 *const gUnknown_08611230[][2] = +static const u8 *const gUnknown_08611230[][2] = { {gText_082BCD68, gText_082BCE64}, {gText_082BCEF2, gText_082BCF61}, @@ -595,7 +604,7 @@ const u8 *const gUnknown_08611230[][2] = {gText_082BE33E, gText_082BE46C}, }; -const u8 *const gUnknown_086112B0[][2] = +static const u8 *const gUnknown_086112B0[][2] = { {gText_082C11D1, gText_082C12D5}, {gText_082C13AB, gText_082C1444}, @@ -615,7 +624,7 @@ const u8 *const gUnknown_086112B0[][2] = {gText_082C2EF5, gText_082C3023}, }; -const u8 *const gUnknown_08611330[] = +static const u8 *const gUnknown_08611330[] = { gText_082B6EA5, gText_082B6EEC, @@ -635,36 +644,379 @@ const u8 *const gUnknown_08611330[] = gText_082B71F9, }; -const bool8 gUnknown_08611370[] = +static const bool8 gUnknown_08611370[MOVES_COUNT] = { - 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, - 0x01, 0x01, 0x01, + [MOVE_NONE] = FALSE, + [MOVE_POUND] = FALSE, + [MOVE_KARATE_CHOP] = TRUE, + [MOVE_DOUBLE_SLAP] = TRUE, + [MOVE_COMET_PUNCH] = FALSE, + [MOVE_MEGA_PUNCH] = TRUE, + [MOVE_PAY_DAY] = FALSE, + [MOVE_FIRE_PUNCH] = TRUE, + [MOVE_ICE_PUNCH] = TRUE, + [MOVE_THUNDER_PUNCH] = TRUE, + [MOVE_SCRATCH] = FALSE, + [MOVE_VICE_GRIP] = FALSE, + [MOVE_GUILLOTINE] = TRUE, + [MOVE_RAZOR_WIND] = FALSE, + [MOVE_SWORDS_DANCE] = TRUE, + [MOVE_CUT] = FALSE, + [MOVE_GUST] = FALSE, + [MOVE_WING_ATTACK] = FALSE, + [MOVE_WHIRLWIND] = TRUE, + [MOVE_FLY] = TRUE, + [MOVE_BIND] = TRUE, + [MOVE_SLAM] = TRUE, + [MOVE_VINE_WHIP] = FALSE, + [MOVE_STOMP] = TRUE, + [MOVE_DOUBLE_KICK] = TRUE, + [MOVE_MEGA_KICK] = TRUE, + [MOVE_JUMP_KICK] = TRUE, + [MOVE_ROLLING_KICK] = TRUE, + [MOVE_SAND_ATTACK] = TRUE, + [MOVE_HEADBUTT] = TRUE, + [MOVE_HORN_ATTACK] = FALSE, + [MOVE_FURY_ATTACK] = FALSE, + [MOVE_HORN_DRILL] = TRUE, + [MOVE_TACKLE] = FALSE, + [MOVE_BODY_SLAM] = TRUE, + [MOVE_WRAP] = TRUE, + [MOVE_TAKE_DOWN] = TRUE, + [MOVE_THRASH] = TRUE, + [MOVE_DOUBLE_EDGE] = TRUE, + [MOVE_TAIL_WHIP] = FALSE, + [MOVE_POISON_STING] = FALSE, + [MOVE_TWINEEDLE] = TRUE, + [MOVE_PIN_MISSILE] = FALSE, + [MOVE_LEER] = FALSE, + [MOVE_BITE] = TRUE, + [MOVE_GROWL] = FALSE, + [MOVE_ROAR] = TRUE, + [MOVE_SING] = TRUE, + [MOVE_SUPERSONIC] = TRUE, + [MOVE_SONIC_BOOM] = TRUE, + [MOVE_DISABLE] = TRUE, + [MOVE_ACID] = FALSE, + [MOVE_EMBER] = FALSE, + [MOVE_FLAMETHROWER] = TRUE, + [MOVE_MIST] = TRUE, + [MOVE_WATER_GUN] = FALSE, + [MOVE_HYDRO_PUMP] = TRUE, + [MOVE_SURF] = TRUE, + [MOVE_ICE_BEAM] = TRUE, + [MOVE_BLIZZARD] = TRUE, + [MOVE_PSYBEAM] = TRUE, + [MOVE_BUBBLE_BEAM] = FALSE, + [MOVE_AURORA_BEAM] = FALSE, + [MOVE_HYPER_BEAM] = TRUE, + [MOVE_PECK] = FALSE, + [MOVE_DRILL_PECK] = TRUE, + [MOVE_SUBMISSION] = TRUE, + [MOVE_LOW_KICK] = TRUE, + [MOVE_COUNTER] = TRUE, + [MOVE_SEISMIC_TOSS] = TRUE, + [MOVE_STRENGTH] = TRUE, + [MOVE_ABSORB] = FALSE, + [MOVE_MEGA_DRAIN] = FALSE, + [MOVE_LEECH_SEED] = TRUE, + [MOVE_GROWTH] = TRUE, + [MOVE_RAZOR_LEAF] = TRUE, + [MOVE_SOLAR_BEAM] = TRUE, + [MOVE_POISON_POWDER] = TRUE, + [MOVE_STUN_SPORE] = TRUE, + [MOVE_SLEEP_POWDER] = TRUE, + [MOVE_PETAL_DANCE] = TRUE, + [MOVE_STRING_SHOT] = FALSE, + [MOVE_DRAGON_RAGE] = TRUE, + [MOVE_FIRE_SPIN] = TRUE, + [MOVE_THUNDER_SHOCK] = FALSE, + [MOVE_THUNDERBOLT] = TRUE, + [MOVE_THUNDER_WAVE] = TRUE, + [MOVE_THUNDER] = TRUE, + [MOVE_ROCK_THROW] = FALSE, + [MOVE_EARTHQUAKE] = TRUE, + [MOVE_FISSURE] = TRUE, + [MOVE_DIG] = TRUE, + [MOVE_TOXIC] = TRUE, + [MOVE_CONFUSION] = FALSE, + [MOVE_PSYCHIC] = TRUE, + [MOVE_HYPNOSIS] = TRUE, + [MOVE_MEDITATE] = TRUE, + [MOVE_AGILITY] = TRUE, + [MOVE_QUICK_ATTACK] = TRUE, + [MOVE_RAGE] = FALSE, + [MOVE_TELEPORT] = FALSE, + [MOVE_NIGHT_SHADE] = TRUE, + [MOVE_MIMIC] = TRUE, + [MOVE_SCREECH] = TRUE, + [MOVE_DOUBLE_TEAM] = TRUE, + [MOVE_RECOVER] = TRUE, + [MOVE_HARDEN] = TRUE, + [MOVE_MINIMIZE] = TRUE, + [MOVE_SMOKESCREEN] = TRUE, + [MOVE_CONFUSE_RAY] = TRUE, + [MOVE_WITHDRAW] = TRUE, + [MOVE_DEFENSE_CURL] = TRUE, + [MOVE_BARRIER] = TRUE, + [MOVE_LIGHT_SCREEN] = TRUE, + [MOVE_HAZE] = TRUE, + [MOVE_REFLECT] = TRUE, + [MOVE_FOCUS_ENERGY] = TRUE, + [MOVE_BIDE] = FALSE, + [MOVE_METRONOME] = TRUE, + [MOVE_MIRROR_MOVE] = TRUE, + [MOVE_SELF_DESTRUCT] = TRUE, + [MOVE_EGG_BOMB] = TRUE, + [MOVE_LICK] = TRUE, + [MOVE_SMOG] = FALSE, + [MOVE_SLUDGE] = FALSE, + [MOVE_BONE_CLUB] = FALSE, + [MOVE_FIRE_BLAST] = TRUE, + [MOVE_WATERFALL] = TRUE, + [MOVE_CLAMP] = TRUE, + [MOVE_SWIFT] = TRUE, + [MOVE_SKULL_BASH] = TRUE, + [MOVE_SPIKE_CANNON] = FALSE, + [MOVE_CONSTRICT] = FALSE, + [MOVE_AMNESIA] = TRUE, + [MOVE_KINESIS] = TRUE, + [MOVE_SOFT_BOILED] = TRUE, + [MOVE_HI_JUMP_KICK] = TRUE, + [MOVE_GLARE] = TRUE, + [MOVE_DREAM_EATER] = TRUE, + [MOVE_POISON_GAS] = FALSE, + [MOVE_BARRAGE] = FALSE, + [MOVE_LEECH_LIFE] = FALSE, + [MOVE_LOVELY_KISS] = TRUE, + [MOVE_SKY_ATTACK] = TRUE, + [MOVE_TRANSFORM] = TRUE, + [MOVE_BUBBLE] = FALSE, + [MOVE_DIZZY_PUNCH] = TRUE, + [MOVE_SPORE] = TRUE, + [MOVE_FLASH] = TRUE, + [MOVE_PSYWAVE] = TRUE, + [MOVE_SPLASH] = FALSE, + [MOVE_ACID_ARMOR] = TRUE, + [MOVE_CRABHAMMER] = TRUE, + [MOVE_EXPLOSION] = TRUE, + [MOVE_FURY_SWIPES] = FALSE, + [MOVE_BONEMERANG] = TRUE, + [MOVE_REST] = TRUE, + [MOVE_ROCK_SLIDE] = TRUE, + [MOVE_HYPER_FANG] = TRUE, + [MOVE_SHARPEN] = TRUE, + [MOVE_CONVERSION] = TRUE, + [MOVE_TRI_ATTACK] = TRUE, + [MOVE_SUPER_FANG] = TRUE, + [MOVE_SLASH] = TRUE, + [MOVE_SUBSTITUTE] = TRUE, + [MOVE_STRUGGLE] = TRUE, + [MOVE_SKETCH] = TRUE, + [MOVE_TRIPLE_KICK] = TRUE, + [MOVE_THIEF] = TRUE, + [MOVE_SPIDER_WEB] = TRUE, + [MOVE_MIND_READER] = TRUE, + [MOVE_NIGHTMARE] = TRUE, + [MOVE_FLAME_WHEEL] = FALSE, + [MOVE_SNORE] = TRUE, + [MOVE_CURSE] = TRUE, + [MOVE_FLAIL] = TRUE, + [MOVE_CONVERSION_2] = TRUE, + [MOVE_AEROBLAST] = TRUE, + [MOVE_COTTON_SPORE] = TRUE, + [MOVE_REVERSAL] = TRUE, + [MOVE_SPITE] = TRUE, + [MOVE_POWDER_SNOW] = FALSE, + [MOVE_PROTECT] = TRUE, + [MOVE_MACH_PUNCH] = TRUE, + [MOVE_SCARY_FACE] = TRUE, + [MOVE_FAINT_ATTACK] = TRUE, + [MOVE_SWEET_KISS] = TRUE, + [MOVE_BELLY_DRUM] = TRUE, + [MOVE_SLUDGE_BOMB] = TRUE, + [MOVE_MUD_SLAP] = TRUE, + [MOVE_OCTAZOOKA] = TRUE, + [MOVE_SPIKES] = TRUE, + [MOVE_ZAP_CANNON] = TRUE, + [MOVE_FORESIGHT] = TRUE, + [MOVE_DESTINY_BOND] = TRUE, + [MOVE_PERISH_SONG] = TRUE, + [MOVE_ICY_WIND] = TRUE, + [MOVE_DETECT] = TRUE, + [MOVE_BONE_RUSH] = FALSE, + [MOVE_LOCK_ON] = TRUE, + [MOVE_OUTRAGE] = TRUE, + [MOVE_SANDSTORM] = TRUE, + [MOVE_GIGA_DRAIN] = TRUE, + [MOVE_ENDURE] = TRUE, + [MOVE_CHARM] = TRUE, + [MOVE_ROLLOUT] = TRUE, + [MOVE_FALSE_SWIPE] = TRUE, + [MOVE_SWAGGER] = TRUE, + [MOVE_MILK_DRINK] = TRUE, + [MOVE_SPARK] = FALSE, + [MOVE_FURY_CUTTER] = TRUE, + [MOVE_STEEL_WING] = TRUE, + [MOVE_MEAN_LOOK] = TRUE, + [MOVE_ATTRACT] = TRUE, + [MOVE_SLEEP_TALK] = TRUE, + [MOVE_HEAL_BELL] = TRUE, + [MOVE_RETURN] = TRUE, + [MOVE_PRESENT] = TRUE, + [MOVE_FRUSTRATION] = TRUE, + [MOVE_SAFEGUARD] = TRUE, + [MOVE_PAIN_SPLIT] = TRUE, + [MOVE_SACRED_FIRE] = TRUE, + [MOVE_MAGNITUDE] = FALSE, + [MOVE_DYNAMIC_PUNCH] = TRUE, + [MOVE_MEGAHORN] = TRUE, + [MOVE_DRAGON_BREATH] = TRUE, + [MOVE_BATON_PASS] = TRUE, + [MOVE_ENCORE] = TRUE, + [MOVE_PURSUIT] = TRUE, + [MOVE_RAPID_SPIN] = TRUE, + [MOVE_SWEET_SCENT] = TRUE, + [MOVE_IRON_TAIL] = TRUE, + [MOVE_METAL_CLAW] = TRUE, + [MOVE_VITAL_THROW] = TRUE, + [MOVE_MORNING_SUN] = TRUE, + [MOVE_SYNTHESIS] = TRUE, + [MOVE_MOONLIGHT] = TRUE, + [MOVE_HIDDEN_POWER] = TRUE, + [MOVE_CROSS_CHOP] = TRUE, + [MOVE_TWISTER] = FALSE, + [MOVE_RAIN_DANCE] = TRUE, + [MOVE_SUNNY_DAY] = TRUE, + [MOVE_CRUNCH] = TRUE, + [MOVE_MIRROR_COAT] = TRUE, + [MOVE_PSYCH_UP] = TRUE, + [MOVE_EXTREME_SPEED] = TRUE, + [MOVE_ANCIENT_POWER] = TRUE, + [MOVE_SHADOW_BALL] = TRUE, + [MOVE_FUTURE_SIGHT] = TRUE, + [MOVE_ROCK_SMASH] = TRUE, + [MOVE_WHIRLPOOL] = TRUE, + [MOVE_BEAT_UP] = TRUE, + [MOVE_FAKE_OUT] = TRUE, + [MOVE_UPROAR] = TRUE, + [MOVE_STOCKPILE] = TRUE, + [MOVE_SPIT_UP] = TRUE, + [MOVE_SWALLOW] = TRUE, + [MOVE_HEAT_WAVE] = TRUE, + [MOVE_HAIL] = TRUE, + [MOVE_TORMENT] = TRUE, + [MOVE_FLATTER] = TRUE, + [MOVE_WILL_O_WISP] = TRUE, + [MOVE_MEMENTO] = TRUE, + [MOVE_FACADE] = TRUE, + [MOVE_FOCUS_PUNCH] = TRUE, + [MOVE_SMELLING_SALT] = TRUE, + [MOVE_FOLLOW_ME] = TRUE, + [MOVE_NATURE_POWER] = TRUE, + [MOVE_CHARGE] = TRUE, + [MOVE_TAUNT] = TRUE, + [MOVE_HELPING_HAND] = TRUE, + [MOVE_TRICK] = TRUE, + [MOVE_ROLE_PLAY] = TRUE, + [MOVE_WISH] = TRUE, + [MOVE_ASSIST] = TRUE, + [MOVE_INGRAIN] = TRUE, + [MOVE_SUPERPOWER] = TRUE, + [MOVE_MAGIC_COAT] = TRUE, + [MOVE_RECYCLE] = TRUE, + [MOVE_REVENGE] = TRUE, + [MOVE_BRICK_BREAK] = TRUE, + [MOVE_YAWN] = TRUE, + [MOVE_KNOCK_OFF] = TRUE, + [MOVE_ENDEAVOR] = TRUE, + [MOVE_ERUPTION] = TRUE, + [MOVE_SKILL_SWAP] = TRUE, + [MOVE_IMPRISON] = TRUE, + [MOVE_REFRESH] = TRUE, + [MOVE_GRUDGE] = TRUE, + [MOVE_SNATCH] = TRUE, + [MOVE_SECRET_POWER] = TRUE, + [MOVE_DIVE] = TRUE, + [MOVE_ARM_THRUST] = FALSE, + [MOVE_CAMOUFLAGE] = TRUE, + [MOVE_TAIL_GLOW] = TRUE, + [MOVE_LUSTER_PURGE] = TRUE, + [MOVE_MIST_BALL] = TRUE, + [MOVE_FEATHER_DANCE] = TRUE, + [MOVE_TEETER_DANCE] = TRUE, + [MOVE_BLAZE_KICK] = TRUE, + [MOVE_MUD_SPORT] = TRUE, + [MOVE_ICE_BALL] = FALSE, + [MOVE_NEEDLE_ARM] = TRUE, + [MOVE_SLACK_OFF] = TRUE, + [MOVE_HYPER_VOICE] = TRUE, + [MOVE_POISON_FANG] = FALSE, + [MOVE_CRUSH_CLAW] = TRUE, + [MOVE_BLAST_BURN] = TRUE, + [MOVE_HYDRO_CANNON] = TRUE, + [MOVE_METEOR_MASH] = TRUE, + [MOVE_ASTONISH] = TRUE, + [MOVE_WEATHER_BALL] = TRUE, + [MOVE_AROMATHERAPY] = TRUE, + [MOVE_FAKE_TEARS] = TRUE, + [MOVE_AIR_CUTTER] = TRUE, + [MOVE_OVERHEAT] = TRUE, + [MOVE_ODOR_SLEUTH] = TRUE, + [MOVE_ROCK_TOMB] = TRUE, + [MOVE_SILVER_WIND] = TRUE, + [MOVE_METAL_SOUND] = TRUE, + [MOVE_GRASS_WHISTLE] = TRUE, + [MOVE_TICKLE] = TRUE, + [MOVE_COSMIC_POWER] = TRUE, + [MOVE_WATER_SPOUT] = TRUE, + [MOVE_SIGNAL_BEAM] = TRUE, + [MOVE_SHADOW_PUNCH] = TRUE, + [MOVE_EXTRASENSORY] = TRUE, + [MOVE_SKY_UPPERCUT] = TRUE, + [MOVE_SAND_TOMB] = TRUE, + [MOVE_SHEER_COLD] = TRUE, + [MOVE_MUDDY_WATER] = TRUE, + [MOVE_BULLET_SEED] = FALSE, + [MOVE_AERIAL_ACE] = TRUE, + [MOVE_ICICLE_SPEAR] = FALSE, + [MOVE_IRON_DEFENSE] = TRUE, + [MOVE_BLOCK] = TRUE, + [MOVE_HOWL] = TRUE, + [MOVE_DRAGON_CLAW] = TRUE, + [MOVE_FRENZY_PLANT] = TRUE, + [MOVE_BULK_UP] = TRUE, + [MOVE_BOUNCE] = TRUE, + [MOVE_MUD_SHOT] = FALSE, + [MOVE_POISON_TAIL] = TRUE, + [MOVE_COVET] = TRUE, + [MOVE_VOLT_TACKLE] = TRUE, + [MOVE_MAGICAL_LEAF] = TRUE, + [MOVE_WATER_SPORT] = TRUE, + [MOVE_CALM_MIND] = TRUE, + [MOVE_LEAF_BLADE] = TRUE, + [MOVE_DRAGON_DANCE] = TRUE, + [MOVE_ROCK_BLAST] = FALSE, + [MOVE_SHOCK_WAVE] = TRUE, + [MOVE_WATER_PULSE] = TRUE, + [MOVE_DOOM_DESIRE] = TRUE, + [MOVE_PSYCHO_BOOST] = TRUE, }; -const u8 gUnknown_086114D3[] = {0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00}; +static const u8 gUnknown_086114D3[] = {0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00}; -void (* const gUnknown_086114E0[])(void) = +static void (* const sApprenticeFunctions[])(void) = { - sub_81A093C, - sub_81A0964, + Script_IsPlayersApprenticeActive, + Script_SetPlayersApprenticeLvlMode, sub_81A0978, sub_819FC60, sub_81A0984, sub_81A0990, sub_81A09D0, - sub_81A0A20, - sub_81A0C9C, - sub_81A087C, + Script_CreateApprenticeMenu, + Script_PrintMessage, + Script_ResetPlayerApprentice, sub_81A1638, sub_81A0CC0, sub_81A09B4, @@ -683,7 +1035,7 @@ void (* const gUnknown_086114E0[])(void) = sub_81A1370, }; -const u8 gUnknown_08611548[8] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09}; +static const u8 gUnknown_08611548[8] = {0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09}; // text extern const u8 gText_Give[]; @@ -691,15 +1043,6 @@ extern const u8 gText_NoNeed[]; extern const u8 gText_Yes[]; extern const u8 gText_No[]; -// This file's functions. -void sub_81A087C(void); -static u16 sub_819FF98(u8 arg0); -static bool8 sub_81A0194(u8 arg0, u16 moveId); -static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId); -static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height); -static void RemoveAndHideWindow(u8 windowId); -static void ExecuteFuncAfterButtonPress(void (*func)(void)); - void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId) { u8 i, var; @@ -716,12 +1059,12 @@ void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId) StringExpandPlaceholders(gStringVar4, str); } -void sub_819FA50(void) +void Apprentice_EnableBothScriptContexts(void) { EnableBothScriptContexts(); } -void sub_819FA5C(struct Apprentice *apprentice) +void ResetApprenticeStruct(struct Apprentice *apprentice) { u8 i; @@ -732,7 +1075,7 @@ void sub_819FA5C(struct Apprentice *apprentice) apprentice->id = 16; } -void sub_819FAA0(void) +void ResetAllApprenticeData(void) { u8 i, j; @@ -752,7 +1095,7 @@ void sub_819FAA0(void) gSaveBlock2Ptr->apprentices[i].unk40 = 0; } - sub_81A087C(); + Script_ResetPlayerApprentice(); } static bool8 IsPlayersApprenticeActive(void) @@ -760,7 +1103,7 @@ static bool8 IsPlayersApprenticeActive(void) return (PLAYER_APPRENTICE.activeLvlMode != 0); } -void sub_819FBC8(void) +static void sub_819FBC8(void) { if (gSaveBlock2Ptr->apprentices[0].number == 0) { @@ -783,7 +1126,7 @@ static void SetPlayersApprenticeLvlMode(u8 mode) PLAYER_APPRENTICE.activeLvlMode = mode; } -void sub_819FC60(void) +static void sub_819FC60(void) { u8 array[APPRENTICE_SPECIES_COUNT]; u8 i; @@ -803,7 +1146,7 @@ void sub_819FC60(void) PLAYER_APPRENTICE.monIds[i] = ((array[i * 2] & 0xF) << 4) | ((array[i * 2 + 1]) & 0xF); } -u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) +static u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) { u8 i, count; u8 ret = 0; @@ -829,7 +1172,7 @@ u8 sub_819FCF8(u8 val, u8 *arg1, u8 *arg2) return ret; } -void sub_819FD64(void) +static void sub_819FD64(void) { u8 sp_0[10]; u8 sp_C[3]; @@ -1028,7 +1371,7 @@ static bool8 sub_81A0194(u8 arg0, u16 moveId) return TRUE; } -void GetLatestLearnedMoves(u16 species, u16 *moves) +static void GetLatestLearnedMoves(u16 species, u16 *moves) { u8 i, j; u8 level, knownMovesCount; @@ -1054,7 +1397,7 @@ void GetLatestLearnedMoves(u16 species, u16 *moves) moves[j] = learnset[(i - 1) - j] & 0x1FF; } -u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2) +static u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2) { u16 moves[4]; u8 i, count; @@ -1084,7 +1427,7 @@ u16 sub_81A0284(u8 arg0, u8 speciesTableId, u8 arg2) return moves[arg2]; } -void sub_81A0390(u8 arg0) +static void sub_81A0390(u8 arg0) { struct ApprenticeMon *apprenticeMons[3]; u8 i, j; @@ -1221,7 +1564,7 @@ static void CreateMenuWithAnswers(u8 arg0) #define tWrapAround data[5] #define tWindowId data[6] -void Task_ChooseAnswer(u8 taskId) +static void Task_ChooseAnswer(u8 taskId) { s8 input; s16 *data = gTasks[taskId].data; @@ -1286,12 +1629,12 @@ static void CreateChooseAnswerTask(bool8 noBButton, u8 itemsCount, u8 windowId) #undef tWrapAround #undef tWindowId -void sub_81A085C(void) +void CallApprenticeFunction(void) { - gUnknown_086114E0[gSpecialVar_0x8004](); + sApprenticeFunctions[gSpecialVar_0x8004](); } -void sub_81A087C(void) +static void Script_ResetPlayerApprentice(void) { u8 i; @@ -1314,7 +1657,7 @@ void sub_81A087C(void) } } -void sub_81A093C(void) +static void Script_IsPlayersApprenticeActive(void) { if (!IsPlayersApprenticeActive()) gSpecialVar_Result = FALSE; @@ -1322,32 +1665,32 @@ void sub_81A093C(void) gSpecialVar_Result = TRUE; } -void sub_81A0964(void) +static void Script_SetPlayersApprenticeLvlMode(void) { SetPlayersApprenticeLvlMode(gSpecialVar_0x8005); } -void sub_81A0978(void) +static void sub_81A0978(void) { sub_819FBC8(); } -void sub_81A0984(void) +static void sub_81A0984(void) { sub_819FD64(); } -void sub_81A0990(void) +static void sub_81A0990(void) { PLAYER_APPRENTICE.field_B1_1++; } -void sub_81A09B4(void) +static void sub_81A09B4(void) { gSpecialVar_Result = PLAYER_APPRENTICE.field_B1_1; } -void sub_81A09D0(void) +static void sub_81A09D0(void) { s32 var = PLAYER_APPRENTICE.field_B1_1 - 3; if (var < 0) @@ -1366,7 +1709,7 @@ void sub_81A09D0(void) } } -void sub_81A0A20(void) +static void Script_CreateApprenticeMenu(void) { CreateMenuWithAnswers(gSpecialVar_0x8005); } @@ -1466,7 +1809,7 @@ static void PrintMessage(void) CreateTask(Task_WaitForPrintingMessage, 1); } -void sub_81A0C9C(void) +static void Script_PrintMessage(void) { ScriptContext2_Enable(); FreezeEventObjects(); @@ -1476,7 +1819,7 @@ void sub_81A0C9C(void) PrintMessage(); } -void sub_81A0CC0(void) +static void sub_81A0CC0(void) { if (PLAYER_APPRENTICE.field_B1_1 < 3) { @@ -1507,7 +1850,7 @@ void sub_81A0CC0(void) } } -void sub_81A0D40(void) +static void sub_81A0D40(void) { if (gSpecialVar_0x8005) { @@ -1516,7 +1859,7 @@ void sub_81A0D40(void) } } -void sub_81A0D80(void) +static void sub_81A0D80(void) { if (PLAYER_APPRENTICE.field_B1_1 >= 3) { @@ -1528,7 +1871,7 @@ void sub_81A0D80(void) } } -void sub_81A0DD4(void) +static void sub_81A0DD4(void) { u8 i; u8 count = 0; @@ -1575,12 +1918,12 @@ void sub_81A0DD4(void) } } -void sub_81A0FE4(void) +static void sub_81A0FE4(void) { FREE_AND_SET_NULL(gUnknown_030062F0); } -void sub_81A0FFC(void) +static void sub_81A0FFC(void) { u8 *stringDst; u8 text[16]; @@ -1649,18 +1992,18 @@ void sub_81A0FFC(void) } } -void sub_81A11F8(void) +static void sub_81A11F8(void) { PLAYER_APPRENTICE.field_B1_2 = gSpecialVar_0x8005; } -void sub_81A1218(void) +static void sub_81A1218(void) { sub_81AAC28(); } #ifdef NONMATCHING -void sub_81A1224(void) +static void sub_81A1224(void) { u8 count; u8 i, j; @@ -1691,7 +2034,7 @@ void sub_81A1224(void) } #else NAKED -void sub_81A1224(void) +static void sub_81A1224(void) { asm_unified("\n\ push {r4-r7,lr}\n\ @@ -1864,7 +2207,7 @@ _081A1362:\n\ } #endif // NONMATCHING -void sub_81A1370(void) +static void sub_81A1370(void) { s32 i; s32 r10; @@ -1898,7 +2241,7 @@ void sub_81A1370(void) gSaveBlock2Ptr->apprentices[r9] = gSaveBlock2Ptr->apprentices[0]; } -void sub_81A1438(void) +static void sub_81A1438(void) { u8 i; @@ -1921,7 +2264,7 @@ void sub_81A1438(void) sub_8165AE8(&gSaveBlock2Ptr->apprentices[0]); } -void sub_81A150C(void) +static void sub_81A150C(void) { u8 i; u8 mapObjectGfxId; @@ -1948,7 +2291,7 @@ void sub_81A150C(void) } } -void sub_81A15A4(void) +static void sub_81A15A4(void) { u8 i; u8 mapObjectGfxId; @@ -1975,12 +2318,12 @@ void sub_81A15A4(void) } } -void sub_81A1638(void) +static void sub_81A1638(void) { gSpecialVar_0x8004 = 1; } -void sub_81A1644(void) +static void sub_81A1644(void) { gSpecialVar_0x8004 = 1; } @@ -2007,7 +2350,7 @@ const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language) } } -void sub_81A16B4(u8 taskId) +static void sub_81A16B4(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) SwitchTaskToFollowupFunc(taskId); @@ -2030,7 +2373,7 @@ static void ExecuteFuncAfterButtonPress(void (*func)(void)) gTasks[taskId].data[1] = (u32)(func) >> 16; } -void sub_81A175C(TaskFunc taskFunc) +static void sub_81A175C(TaskFunc taskFunc) { u8 taskId = CreateTask(sub_81A16B4, 1); SetTaskFuncWithFollowupFunc(taskId, sub_81A16B4, taskFunc); diff --git a/src/item_menu.c b/src/item_menu.c index 0cdedec97..bb619cac8 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -46,6 +46,7 @@ #include "text_window.h" #include "menu_helpers.h" #include "window.h" +#include "apprentice.h" void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)()); void CB2_Bag(void); @@ -2203,7 +2204,7 @@ void unknown_ItemMenu_Show(u8 taskId) void bag_menu_leave_maybe_3(void) { - gFieldCallback = sub_819FA50; + gFieldCallback = Apprentice_EnableBothScriptContexts; SetMainCallback2(CB2_ReturnToField); } diff --git a/src/new_game.c b/src/new_game.c index 36c028ce8..127e48c35 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -25,6 +25,7 @@ #include "battle_records.h" #include "item.h" #include "pokedex.h" +#include "apprentice.h" extern u8 gDifferentSaveFile; extern u16 gSaveFileStatus; @@ -44,7 +45,6 @@ extern void NewGameInitPCItems(void); extern void ClearDecorationInventories(void); extern void ResetFanClub(void); extern void copy_strings_to_sav1(void); -extern void sub_819FAA0(void); extern void sub_81A4B14(void); extern void sub_8195E10(void); extern void sub_801AFD8(void); @@ -203,7 +203,7 @@ void NewGameInitData(void) ResetMiniGamesResults(); copy_strings_to_sav1(); SetLilycoveLady(); - sub_819FAA0(); + ResetAllApprenticeData(); sub_81A4B14(); sub_8195E10(); sub_801AFD8(); From cd4f65ecef4d3dc091d10749d8b43ce3a87ccfa6 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 14 Oct 2018 17:06:47 +0200 Subject: [PATCH 10/10] Make apprentice compile --- src/record_mixing.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/record_mixing.c b/src/record_mixing.c index 88f7e60f5..4c3c3d03c 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -1567,7 +1567,7 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src) r8 = 0; for (i = 0; i < 2; i++) { - id = ((i + gSaveBlock2Ptr->field_B2_1) % 3) + 1; + id = ((i + gSaveBlock2Ptr->playerApprentice.field_B2_1) % 3) + 1; if (src[id].playerName[0] != EOS) { if (ReadUnalignedWord(src[id].playerId) != ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId)) @@ -1597,11 +1597,11 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src) case 2: if (Random2() > 0x3333) { - dst[1] = src[gSaveBlock2Ptr->field_B2_1 + 1]; + dst[1] = src[gSaveBlock2Ptr->playerApprentice.field_B2_1 + 1]; } else { - dst[1] = src[((gSaveBlock2Ptr->field_B2_1 + 1) % 3 + 1)]; + dst[1] = src[((gSaveBlock2Ptr->playerApprentice.field_B2_1 + 1) % 3 + 1)]; } break; } @@ -1675,7 +1675,7 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2 r8 = 0; for (i = 0; i < 2; i++) { - if (structPtr[i].playerName[0] != EOS && !sub_80E841C(&structPtr[i], gSaveBlock2Ptr->apprentices)) + if (structPtr[i].playerName[0] != EOS && !sub_80E841C(&structPtr[i], &gSaveBlock2Ptr->apprentices[0])) { r7++; r8 = i; @@ -1685,17 +1685,17 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2 switch (r7) { case 1: - structId = gSaveBlock2Ptr->field_B2_1 + 1; + structId = gSaveBlock2Ptr->playerApprentice.field_B2_1 + 1; gSaveBlock2Ptr->apprentices[structId] = structPtr[r8]; - gSaveBlock2Ptr->field_B2_1 = (gSaveBlock2Ptr->field_B2_1 + 1) % 3; + gSaveBlock2Ptr->playerApprentice.field_B2_1 = (gSaveBlock2Ptr->playerApprentice.field_B2_1 + 1) % 3; break; case 2: for (i = 0; i < 2; i++) { - structId = ((i ^ 1) + gSaveBlock2Ptr->field_B2_1) % 3 + 1; + structId = ((i ^ 1) + gSaveBlock2Ptr->playerApprentice.field_B2_1) % 3 + 1; gSaveBlock2Ptr->apprentices[structId] = structPtr[i]; } - gSaveBlock2Ptr->field_B2_1 = (gSaveBlock2Ptr->field_B2_1 + 2) % 3; + gSaveBlock2Ptr->playerApprentice.field_B2_1 = (gSaveBlock2Ptr->playerApprentice.field_B2_1 + 2) % 3; break; } }