diff options
Diffstat (limited to 'src')
33 files changed, 23329 insertions, 2142 deletions
diff --git a/src/agb_flash_mx.c b/src/agb_flash_mx.c index 01f848901..67348901f 100644 --- a/src/agb_flash_mx.c +++ b/src/agb_flash_mx.c @@ -26,7 +26,11 @@ const struct FlashSetupInfo MX29L010 = 0 // appears to be unused }, { 3, 1 }, // wait state setup data +#if defined(GERMAN) && defined(SAPPHIRE) + { { 0xBF, 0xD4 } } // ID +#else { { 0xC2, 0x09 } } // ID +#endif } }; diff --git a/src/battle_setup.c b/src/battle_setup.c index adcbe8eaa..04674e739 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -845,17 +845,17 @@ void HandleFirstBattleEnd(void) SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } -u32 TrainerBattleLoadArg32(u8 *ptr) +u32 TrainerBattleLoadArg32(const u8 *ptr) { return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); } -u16 TrainerBattleLoadArg16(u8 *ptr) +u16 TrainerBattleLoadArg16(const u8 *ptr) { return ptr[0] | (ptr[1] << 8); } -u8 TrainerBattleLoadArg8(u8 *ptr) +u8 TrainerBattleLoadArg8(const u8 *ptr) { return ptr[0]; } @@ -867,16 +867,16 @@ u16 trainerflag_opponent(void) bool32 battle_exit_is_player_defeat(u32 a1) { - switch (a1 - 1) + switch (a1) { - case 1: case 2: - return TRUE; - case 0: case 3: + return TRUE; + case 1: case 4: case 5: case 6: + case 7: return FALSE; } return FALSE; @@ -895,7 +895,7 @@ void sub_80822BC(void) gTrainerBattleEndScript = 0; } -void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data) +void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, const u8 *data) { while (1) { @@ -923,7 +923,7 @@ void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data) *(u32 *)specs->ptr = 0; break; case 6: - *(u8 **)specs->ptr = data; + *(const u8 **)specs->ptr = data; return; } specs++; @@ -939,7 +939,7 @@ void battle_80801F0(void) } } -u8 *TrainerBattleConfigure(u8 *data) +u8 *TrainerBattleConfigure(const u8 *data) { sub_80822BC(); gTrainerBattleMode = TrainerBattleLoadArg8(data); diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 0e81e4fec..6cbc38ecc 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -41,13 +41,20 @@ extern u16 gUnknown_030041B4; extern const struct CompressedSpriteSheet gUnknown_083C1F74; extern const struct CompressedSpritePalette gUnknown_083C1F7C; -extern u8 *gUnknown_0841192C[]; - extern u8 gBerryCheck_Gfx[]; extern u8 gBerryCheck_Pal[]; extern u8 gUnknown_08E788E4[]; extern u8 gUnknown_08E78A84[]; +static const u8 *const gUnknown_0841192C[] = +{ + ContestStatsText_VerySoft, + ContestStatsText_Soft, + ContestStatsText_Hard, + ContestStatsText_VeryHard, + ContestStatsText_SuperHard, +}; + static void sub_8146014(void); static void sub_814602C(void); static bool8 sub_8146058(void); @@ -131,7 +138,7 @@ static bool8 sub_8146058(void) break; case 8: berry = gScriptItemId + OFFSET_7B; - gUnknown_0203932C = sub_80A7D8C(berry, 56, 64); + gUnknown_0203932C = CreateBerrySprite(berry, 56, 64); gMain.state += 1; break; case 9: @@ -374,7 +381,7 @@ static void sub_81466E8(u8 taskId, s8 direction) lsls r0, 3\n\ ldr r1, _08146748 @ =gTasks + 0x8\n\ adds r6, r0, r1\n\ - ldr r4, _0814674C @ =gUnknown_03005D10\n\ + ldr r4, _0814674C @ =gBagPocketScrollStates\n\ movs r0, 0xC\n\ adds r0, r4\n\ mov r8, r0\n\ @@ -412,7 +419,7 @@ _08146728:\n\ b _08146766\n\ .align 2, 0\n\ _08146748: .4byte gTasks + 0x8\n\ -_0814674C: .4byte gUnknown_03005D10\n\ +_0814674C: .4byte gBagPocketScrollStates\n\ _08146750:\n\ mov r4, r8\n\ ldrb r0, [r4, 0x2]\n\ @@ -487,7 +494,7 @@ static void sub_8146810(s8 berry) asrs r1, r0, 24\n\ cmp r1, 0\n\ ble _08146848\n\ - ldr r0, _08146840 @ =gUnknown_03005D10\n\ + ldr r0, _08146840 @ =gBagPocketScrollStates\n\ adds r4, r0, 0\n\ adds r4, 0xC\n\ ldrb r2, [r0, 0xC]\n\ @@ -504,12 +511,12 @@ static void sub_8146810(s8 berry) movs r0, 0x7\n\ b _0814686E\n\ .align 2, 0\n\ -_08146840: .4byte gUnknown_03005D10\n\ +_08146840: .4byte gBagPocketScrollStates\n\ _08146844:\n\ adds r0, r2, r3\n\ b _0814686E\n\ _08146848:\n\ - ldr r0, _08146868 @ =gUnknown_03005D10\n\ + ldr r0, _08146868 @ =gBagPocketScrollStates\n\ adds r5, r0, 0\n\ adds r5, 0xC\n\ ldrb r2, [r0, 0xC]\n\ @@ -525,7 +532,7 @@ _08146848:\n\ strb r1, [r6, 0xC]\n\ b _08146870\n\ .align 2, 0\n\ -_08146868: .4byte gUnknown_03005D10\n\ +_08146868: .4byte gBagPocketScrollStates\n\ _0814686C:\n\ adds r0, r2, r4\n\ _0814686E:\n\ @@ -538,7 +545,7 @@ _08146870:\n\ ldrb r1, [r0, 0x1]\n\ ldrb r0, [r0]\n\ adds r1, r0\n\ - ldr r0, _081468B0 @ =gUnknown_03005D24\n\ + ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\ ldr r0, [r0]\n\ lsls r1, 2\n\ adds r1, r0\n\ @@ -559,7 +566,7 @@ _08146870:\n\ bx r0\n\ .align 2, 0\n\ _081468AC: .4byte gScriptItemId\n\ -_081468B0: .4byte gUnknown_03005D24\n\ +_081468B0: .4byte gCurrentBagPocketItemSlots\n\ _081468B4: .4byte gUnknown_0203932C\n\ _081468B8: .4byte gSprites\n\ .syntax divided\n"); @@ -571,7 +578,7 @@ static void sub_81468BC(void) sub_81464E4(); // center of berry sprite - gUnknown_0203932C = sub_80A7D8C(gScriptItemId + OFFSET_7B, 56, 64); + gUnknown_0203932C = CreateBerrySprite(gScriptItemId + OFFSET_7B, 56, 64); sub_8146600(gScriptItemId + OFFSET_7B); } diff --git a/src/credits.c b/src/credits.c index 8ec126a41..8c4cfb84d 100644 --- a/src/credits.c +++ b/src/credits.c @@ -250,27 +250,17 @@ static void sub_814395C(void) BuildOamBuffer(); UpdatePaletteFade(); - if (!(gMain.heldKeys & B_BUTTON)) + if ((gMain.heldKeys & B_BUTTON) + && gUnknown_02039324 != 0 + && gTasks[gUnknown_02039322].func == task_a_8143B68) { - return; - } - - if (!gUnknown_02039324) - { - return; - } - - if (gTasks[gUnknown_02039322].func != task_a_8143B68) - { - return; + vblank_8143948(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + gUnknown_02039325 = 1; } - - vblank_8143948(); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - gUnknown_02039325 = 1; } void sub_81439D0(void) @@ -296,9 +286,7 @@ void sub_81439D0(void) while (TRUE) { if (sub_8144ECC(0, taskIdA)) - { break; - } } taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; @@ -344,12 +332,8 @@ void sub_81439D0(void) static void task_a_8143B38(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - gTasks[taskIdA].func = task_a_8143B68; + if (!gPaletteFade.active) + gTasks[taskIdA].func = task_a_8143B68; } static void task_a_8143B68(u8 taskIdA) @@ -389,14 +373,12 @@ static void task_a_8143B68(u8 taskIdA) static void task_a_8143BFC(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_80C9BFC; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_80C9BFC; } static void task_a_80C9BFC(u8 taskIdA) @@ -405,33 +387,29 @@ static void task_a_80C9BFC(u8 taskIdA) SetVBlankCallback(NULL); - if (!sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) + if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA)) { - return; - } - - BeginNormalPaletteFade(-1, 0, 16, 0, 0); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); - backup = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = backup; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + backup = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = backup; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(vblank_8143948); - gTasks[taskIdA].func = task_a_8143B38; + SetVBlankCallback(vblank_8143948); + gTasks[taskIdA].func = task_a_8143B38; + } } static void task_a_8143CC0(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + REG_DISPCNT = 0; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143D04; } - - REG_DISPCNT = 0; - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143D04; } void task_a_8143D04(u8 taskIdA) @@ -501,13 +479,11 @@ static void task_a_8143EBC(u8 taskIdA) static void task_a_8143F04(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + sub_81450AC(taskIdA); + gTasks[taskIdA].func = task_a_8143F3C; } - - sub_81450AC(taskIdA); - gTasks[taskIdA].func = task_a_8143F3C; } static void task_a_8143F3C(u8 taskIdA) @@ -547,62 +523,52 @@ static void task_a_8143FDC(u8 taskIdA) static void task_a_8144024(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; - } + sub_81452D0(0x3800, 0); - sub_81452D0(0x3800, 0); - - BeginNormalPaletteFade(-1, 0, 0, 0, 0); - gTasks[taskIdA].data[TDA_0] = 7200; - gTasks[taskIdA].func = task_a_8144080; + BeginNormalPaletteFade(-1, 0, 0, 0, 0); + gTasks[taskIdA].data[TDA_0] = 7200; + gTasks[taskIdA].func = task_a_8144080; + } } static void task_a_8144080(u8 taskIdA) { - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; - } + if (gTasks[taskIdA].data[TDA_0] == 0) + { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskIdA].func = task_a_8144114; + return; + } - if (gTasks[taskIdA].data[TDA_0] == 0) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } + if (gMain.newKeys) + { + FadeOutBGM(4); + BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); + gTasks[taskIdA].func = task_a_8144114; + return; + } - if (gMain.newKeys) - { - FadeOutBGM(4); - BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF); - gTasks[taskIdA].func = task_a_8144114; - return; - } + if (gTasks[taskIdA].data[TDA_0] == 7144) + { + FadeOutBGM(8); + } - if (gTasks[taskIdA].data[TDA_0] == 7144) - { - FadeOutBGM(8); - } + if (gTasks[taskIdA].data[TDA_0] == 6840) + m4aSongNumStart(BGM_END); - if (gTasks[taskIdA].data[TDA_0] == 6840) - { - m4aSongNumStart(BGM_END); + gTasks[taskIdA].data[TDA_0] -= 1; } - - gTasks[taskIdA].data[TDA_0] -= 1; } static void task_a_8144114(u8 taskIdA) { - if (gPaletteFade.active) - { - return; - } - - SoftReset(0xFF); + if (!gPaletteFade.active) + SoftReset(0xFF); } static void sub_8144130(void) @@ -639,38 +605,30 @@ static void task_b_81441B8(u8 taskIdB) case 8: case 9: default: - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + gTasks[taskIdB].data[TDB_0] = 1; + gTasks[taskIdB].data[TDB_3] = 0x58; + gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; + gUnknown_02039320 = 0; } - gTasks[taskIdB].data[TDB_0] = 1; - gTasks[taskIdB].data[TDB_3] = 0x58; - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; - gUnknown_02039320 = 0; return; - case 1: if (gTasks[taskIdB].data[TDB_3] != 0) { gTasks[taskIdB].data[TDB_3] -= 1; return; } - gTasks[taskIdB].data[TDB_0] += 1; return; - case 2: REG_DISPCNT &= ~DISPCNT_BG0_ON; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68) { if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT) { - for (i = 0; i < 5; i++) - { sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); - } gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; gTasks[taskIdB].data[TDB_0] += 1; @@ -678,36 +636,24 @@ static void task_b_81441B8(u8 taskIdB) gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1; if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN); - } else - { BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN); - } return; } - - gTasks[taskIdB].data[TDB_0] = 10; return; } - gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0; return; - case 3: REG_DISPCNT |= DISPCNT_BG0_ON; - - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; + gTasks[taskIdB].data[TDB_0] += 1; } - - gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82; - gTasks[taskIdB].data[TDB_0] += 1; return; - case 4: if (gTasks[taskIdB].data[TDB_3] != 0) { @@ -720,28 +666,18 @@ static void task_b_81441B8(u8 taskIdB) gTasks[taskIdB].data[TDB_0] += 1; return; } - gTasks[taskIdB].data[TDB_0] += 1; - if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1) - { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN); - } else - { BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN); - } - return; - case 5: - if (gPaletteFade.active) + if (!gPaletteFade.active) { - return; + MenuZeroFillWindowRect(0, 9, 29, 19); + gTasks[taskIdB].data[TDB_0] = 2; } - - MenuZeroFillWindowRect(0, 9, 29, 19); - gTasks[taskIdB].data[TDB_0] = 2; return; case 10: @@ -962,14 +898,11 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] = 0x7FFF; } } - sub_8149020(0); break; - case 1: sub_8149020(0); break; - case 2: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) { @@ -984,7 +917,6 @@ void task_e_8144934(u8 taskIdE) } sub_8149020(1); break; - case 3: if (gTasks[taskIdE].data[TDE_1] != 0x7FFF) { @@ -999,10 +931,8 @@ void task_e_8144934(u8 taskIdE) gTasks[taskIdE].data[TDE_1] += 1; } } - sub_8149020(1); break; - case 4: sub_8149020(2); break; @@ -1024,7 +954,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); break; - case 1: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1036,7 +965,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8); break; - case 2: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1048,7 +976,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); break; - case 3: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1060,7 +987,6 @@ static void sub_8144A68(u8 data, u8 taskIdA) gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0; gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8); break; - case 4: gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0; gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0; @@ -1087,9 +1013,7 @@ static void sub_8144A68(u8 data, u8 taskIdA) gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0; if (data == 2) - { gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45; - } } static bool8 sub_8144ECC(u8 data, u8 taskIdA) @@ -1113,14 +1037,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) FreeAllSpritePalettes(); gMain.state = 1; break; - case 1: gUnknown_02039358 = 34; gUnknown_0203935A = 0; sub_8148CB0(data); gMain.state += 1; break; - case 2: if (gSaveBlock2.playerGender == MALE) { @@ -1156,17 +1078,14 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA) gSprites[spriteId].callback = spritecb_rival_8145420; gSprites[spriteId].anims = gSpriteAnimTable_0840CA94; }; - gMain.state += 1; break; - case 3: sub_8144A68(data, taskIdA); sub_8148E90(data); gMain.state = 0; return TRUE; } - return FALSE; } @@ -1199,7 +1118,8 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } -static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { +static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) +{ u16 baseTile; u16 i; @@ -1209,65 +1129,45 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { baseTile = (arg2 / 16) << 12; for (i = 0; i < 32 * 32; i++) - { ((u16 *) (VRAM + arg1))[i] = baseTile + 1; - } for (i = 0; i < 21; i++) - { ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile; - } for (i = 0; i < 20; i++) - { ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile; - } for (i = 0; i < 23; i++) - { ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile; - } for (i = 0; i < 12; i++) - { ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; - } } u16 sub_8145208(u8 arg0) { - u16 out = (arg0 & 0x3F) + 80; if (arg0 == 0xFF) - { return 1; - } if (arg0 & (1 << 7)) - { out |= 1 << 11; - } - if (arg0 & (1 << 6)) - { out |= 1 << 10; - } return out; } -void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { +void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) +{ u8 y, x; - const u16 tileOffset = (palette / 16) << 12; for (y = 0; y < 5; y++) { for (x = 0; x < 3; x++) - { ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); - } } } @@ -1307,37 +1207,26 @@ static void spritecb_player_8145378(struct Sprite *sprite) case 0: StartSpriteAnimIfDifferent(sprite, 0); break; - case 1: StartSpriteAnimIfDifferent(sprite, 1); if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; - case 2: StartSpriteAnimIfDifferent(sprite, 2); break; - case 3: StartSpriteAnimIfDifferent(sprite, 3); break; - case 4: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > 120) - { sprite->pos1.x -= 1; - } break; - case 5: StartSpriteAnimIfDifferent(sprite, 0); if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; } } @@ -1356,49 +1245,31 @@ static void spritecb_rival_8145420(struct Sprite *sprite) sprite->pos2.y = 0; StartSpriteAnimIfDifferent(sprite, 0); break; - case 1: if (sprite->pos1.x > 200) - { StartSpriteAnimIfDifferent(sprite, 1); - } else - { StartSpriteAnimIfDifferent(sprite, 2); - } - if (sprite->pos1.x > -32) - { sprite->pos1.x -= 2; - } - sprite->pos2.y = -gUnknown_0203935A; break; - case 2: sprite->data7 += 1; StartSpriteAnimIfDifferent(sprite, 0); - if ((sprite->data7 & 3) == 0) - { sprite->pos1.x += 1; - } break; - case 3: StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - { sprite->pos1.x -= 1; - } break; - - } } -void spritecb_81454E0(struct Sprite *sprite) { +void spritecb_81454E0(struct Sprite *sprite) +{ if (gUnknown_0203935C) { DestroySprite(sprite); @@ -1417,7 +1288,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->data0 = 1; break; - case 1: if (sprite->data2 < 256) { @@ -1432,23 +1302,18 @@ void spritecb_81454E0(struct Sprite *sprite) { { case 1: if ((sprite->data7 & 3) == 0) - { sprite->pos1.y += 1; - } sprite->pos1.x -= 2; break; case 2: break; case 3: if ((sprite->data7 & 3) == 0) - { sprite->pos1.y += 1; - } sprite->pos1.x += 2; break; } break; - case 2: if (sprite->data3 != 0) { @@ -1463,7 +1328,6 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 += 1; } break; - case 3: if (sprite->data3 != 0) { @@ -1482,13 +1346,11 @@ void spritecb_81454E0(struct Sprite *sprite) { sprite->data0 = 10; } break; - case 10: REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroySprite(sprite); break; - } } @@ -1500,17 +1362,14 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) u8 spriteId2; species = NationalPokedexNumToSpecies(species); - switch (species) { default: personality = 0; break; - case SPECIES_SPINDA: personality = gSaveBlock2.pokedex.spindaPersonality; break; - case SPECIES_UNOWN: personality = gSaveBlock2.pokedex.unownPersonality; break; @@ -1562,7 +1421,8 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } -static void sub_81458DC(void) { +static void sub_81458DC(void) +{ struct Unk201C000 *unk201C000 = &ewram1c000; u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); u16 seenTypesCount; @@ -1580,19 +1440,13 @@ static void sub_81458DC(void) { } for (dexNum = seenTypesCount; dexNum < 386; dexNum++) - { unk201C000->unk90[dexNum] = 0; - } unk201C000->unk394 = seenTypesCount; if (unk201C000->unk394 < POKEMON_TILE_COUNT) - { unk201C000->unk8E = seenTypesCount; - } else - { unk201C000->unk8E = POKEMON_TILE_COUNT; - } j = 0; do @@ -1625,7 +1479,6 @@ static void sub_81458DC(void) { } else { - for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); if (dexNum < unk201C000->unk8E - 1) @@ -1634,7 +1487,9 @@ static void sub_81458DC(void) { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } else + { unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + } } unk201C000->unk8E = POKEMON_TILE_COUNT; } diff --git a/src/data/item_descriptions_de.h b/src/data/item_descriptions_de.h new file mode 100644 index 000000000..ba1147f9b --- /dev/null +++ b/src/data/item_descriptions_de.h @@ -0,0 +1,1392 @@ +static const u8 gItemDescription_MasterBall[] = _( + "Der beste BALL.\n" + "Fängt das POKéMON\n" + "garantiert."); + +static const u8 gItemDescription_UltraBall[] = _( + "BALL mit hoher Er-\n" + "folgsquote. Besser\n" + "als ein SUPERBALL."); + +static const u8 gItemDescription_GreatBall[] = _( + "BALL mit guter Er-\n" + "folgsquote. Besser\n" + "als ein POKéBALL."); + +static const u8 gItemDescription_PokeBall[] = _( + "Damit fängst\n" + "du wilde\n" + "POKéMON."); + +static const u8 gItemDescription_SafariBall[] = _( + "Ein BALL, der nur\n" + "in der SAFARI-ZONE\n" + "eingesetzt wird."); + +static const u8 gItemDescription_NetBall[] = _( + "BALL fängt POKéMON\n" + "des Typs WASSER\n" + "und KÄFER besser."); + +static const u8 gItemDescription_DiveBall[] = _( + "BALL fängt besser\n" + "POKéMON auf\n" + "dem Meeresgrund."); + +static const u8 gItemDescription_NestBall[] = _( + "BALL mit höherer\n" + "Erfolgsquote bei\n" + "schwachen POKéMON."); + +static const u8 gItemDescription_RepeatBall[] = _( + "BALL fängt besser\n" + "bereits gefangene\n" + "POKéMON."); + +static const u8 gItemDescription_TimerBall[] = _( + "BALL wird effekti-\n" + "ver, je länger der\n" + "Kampf dauert."); + +static const u8 gItemDescription_LuxuryBall[] = _( + "Behaglicher BALL,\n" + "der POKéMON\n" + "freundlicher macht."); + +static const u8 gItemDescription_PremierBall[] = _( + "Seltener BALL, als\n" + "Reminiszenz an ir-\n" + "gendein Ereignis."); + +static const u8 gItemDescription_Potion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "20 Punkte auf."); + +static const u8 gItemDescription_Antidote[] = _( + "Heilt Vergiftungen\n" + "bei POKéMON."); + +static const u8 gItemDescription_BurnHeal[] = _( + "Heilt Verbrennun-\n" + "gen bei POKéMON."); + +static const u8 gItemDescription_IceHeal[] = _( + "Taut POKéMON\n" + "wieder auf."); + +static const u8 gItemDescription_Awakening[] = _( + "Weckt schlafendes\n" + "POKéMON auf."); + +static const u8 gItemDescription_ParalyzeHeal[] = _( + "Heilt Paralyse\n" + "eines POKéMON."); + +static const u8 gItemDescription_FullRestore[] = _( + "Stellt KP und\n" + "Status eines\n" + "POKéMON wieder her."); + +static const u8 gItemDescription_MaxPotion[] = _( + "Füllt die KP\n" + "vollständig auf."); + +static const u8 gItemDescription_HyperPotion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "200 Punkte auf."); + +static const u8 gItemDescription_SuperPotion[] = _( + "Füllt die KP eines\n" + "POKéMON um\n" + "50 Punkte auf."); + +static const u8 gItemDescription_FullHeal[] = _( + "Beseitigt alle\n" + "Statusprobleme\n" + "eines POKéMON."); + +static const u8 gItemDescription_Revive[] = _( + "Belebt POKéMON\n" + "und füllt die KP zur\n" + "Hälfte wieder auf."); + +static const u8 gItemDescription_MaxRevive[] = _( + "Belebt POKéMON\n" + "und füllt KP voll-\n" + "ständig wieder auf."); + +static const u8 gItemDescription_FreshWater[] = _( + "Ein stilles Wasser,\n" + "das die KP um 50\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_SodaPop[] = _( + "Ein Mineralwasser,\n" + "das die KP um 60\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_Lemonade[] = _( + "Ein süßes Getränk,\n" + "das die KP um 80\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_MoomooMilk[] = _( + "Vitaminreiche Milch,\n" + "die die KP um 100\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_EnergyPowder[] = _( + "Ein bitteres Pulver,\n" + "das die KP um\n" + "50 Punkte auffüllt."); + +static const u8 gItemDescription_EnergyRoot[] = _( + "Eine bittere Wurzel,\n" + "die die KP um 200\n" + "Punkte auffüllt."); + +static const u8 gItemDescription_HealPowder[] = _( + "Ein bitteres Pulver,\n" + "das alle Statuspro-\n" + "bleme heilt."); + +static const u8 gItemDescription_RevivalHerb[] = _( + "Ein bitteres Kraut,\n" + "das besiegte\n" + "POKéMON belebt."); + +static const u8 gItemDescription_Ether[] = _( + "Füllt AP einer aus-\n" + "gewählten Attacke\n" + "um 10 Punkte auf."); + +static const u8 gItemDescription_MaxEther[] = _( + "Füllt AP einer aus-\n" + "gewählten Attacke\n" + "vollständig auf."); + +static const u8 gItemDescription_Elixir[] = _( + "Füllt alle AP\n" + "um 10 Punkte auf."); + +static const u8 gItemDescription_MaxElixir[] = _( + "Füllt alle AP eines\n" + "POKéMON voll-\n" + "ständig auf."); + +static const u8 gItemDescription_LavaCookie[] = _( + "Eine regionale Spe-\n" + "zialität. Heilt alle\n" + "Statusprobleme."); + +static const u8 gItemDescription_BlueFlute[] = _( + "Eine gläserne Flöte,\n" + "die schlafende\n" + "POKéMON aufweckt."); + +static const u8 gItemDescription_YellowFlute[] = _( + "Eine gläserne Flöte,\n" + "die verwirrte\n" + "POKéMON heilt."); + +static const u8 gItemDescription_RedFlute[] = _( + "Eine gläserne Flöte,\n" + "die POKéMON von\n" + "Anziehung heilt."); + +static const u8 gItemDescription_BlackFlute[] = _( + "Eine gläserne Flöte,\n" + "die wilde\n" + "POKéMON abhält."); + +static const u8 gItemDescription_WhiteFlute[] = _( + "Eine gläserne Flöte,\n" + "die wilde\n" + "POKéMON anzieht."); + +static const u8 gItemDescription_BerryJuice[] = _( + "Reiner Fruchtsaft,\n" + "der die KP um\n" + "20 Punkte auffüllt."); + +static const u8 gItemDescription_SacredAsh[] = _( + "Belebt und\n" + "erfrischt alle\n" + "besiegten POKéMON."); + +static const u8 gItemDescription_ShoalSalt[] = _( + "Salz, das sich tief\n" + "in der KÜSTEN- \n" + "HÖHLE befand."); + +static const u8 gItemDescription_ShoalShell[] = _( + "Muschelschale, die\n" + "sich in der KÜSTEN- \n" + "HÖHLE befand."); + +static const u8 gItemDescription_RedShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_BlueShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_YellowShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_GreenShard[] = _( + "Scherbe eines\n" + "antiken Relikts\n" + "von geringem Wert."); + +static const u8 gItemDescription_HPUp[] = _( + "Hebt die KP\n" + "eines POKéMON."); + +static const u8 gItemDescription_Protein[] = _( + "Hebt den\n" + "ANGR.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Iron[] = _( + "Hebt den\n" + "VERT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Carbos[] = _( + "Hebt den\n" + "INIT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_Calcium[] = _( + "Hebt den\n" + "SP. ANGR.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_RareCandy[] = _( + "Hebt den Level\n" + "eines POKéMON\n" + "um eins an."); + +static const u8 gItemDescription_PPUp[] = _( + "Hebt die maximale\n" + "Anzahl der AP\n" + "einer Attacke."); + +static const u8 gItemDescription_Zinc[] = _( + "Hebt den\n" + "SP. VERT.-Wert\n" + "eines POKéMON."); + +static const u8 gItemDescription_PPMax[] = _( + "Maximiert die\n" + "Anzahl der AP\n" + "einer Attacke."); + +static const u8 gItemDescription_GuardSpec[] = _( + "Statusänderung\n" + "wird für einen\n" + "Kampf verhindert."); + +static const u8 gItemDescription_DireHit[] = _( + "Hebt die\n" + "Volltrefferquote\n" + "für einen Kampf."); + +static const u8 gItemDescription_XAttack[] = _( + "Hebt den\n" + "ANGR.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XDefend[] = _( + "Hebt den\n" + "VERT.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XSpeed[] = _( + "Hebt den\n" + "INIT.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_XAccuracy[] = _( + "Hebt die\n" + "GENAUIGKEIT\n" + "für einen Kampf."); + +static const u8 gItemDescription_XSpecial[] = _( + "Hebt den\n" + "SP. ANGR.-Wert\n" + "für einen Kampf."); + +static const u8 gItemDescription_PokeDoll[] = _( + "Ermöglicht Flucht\n" + "im Kampf gegen\n" + "wilde POKéMON."); + +static const u8 gItemDescription_FluffyTail[] = _( + "Entfliehe damit\n" + "jedem Kampf mit ei-\n" + "nem wilden POKéMON."); + +static const u8 gItemDescription_SuperRepel[] = _( + "Hält 200 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_MaxRepel[] = _( + "Hält 250 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_EscapeRope[] = _( + "Ermöglicht die\n" + "Flucht aus Höhlen\n" + "oder Ähnlichem."); + +static const u8 gItemDescription_Repel[] = _( + "Hält 100 Schritte\n" + "lang schwache,\n" + "wilde POKéMON ab."); + +static const u8 gItemDescription_SunStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_MoonStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_FireStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_ThunderStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_WaterStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_LeafStone[] = _( + "Löst bei bestimm-\n" + "ten POKéMON die\n" + "Entwicklung aus."); + +static const u8 gItemDescription_TinyMushroom[] = _( + "Ein gemeiner\n" + "Pilz von \n" + "geringem Wert."); + +static const u8 gItemDescription_BigMushroom[] = _( + "Ein seltener\n" + "Pilz von \n" + "hohem Wert."); + +static const u8 gItemDescription_Pearl[] = _( + "Eine hübsche Perle\n" + "von geringem Wert."); + +static const u8 gItemDescription_BigPearl[] = _( + "Schöne, große Per-\n" + "le, die einen hohen\n" + "Preis erzielen kann."); + +static const u8 gItemDescription_Stardust[] = _( + "Schöner, roter\n" + "Sand, der von\n" + "großem Wert ist."); + +static const u8 gItemDescription_StarPiece[] = _( + "Roter Edelstein,\n" + "der einen hohen\n" + "Preis erzielen kann."); + +static const u8 gItemDescription_Nugget[] = _( + "Ein Barren aus pu-\n" + "rem Gold, der von\n" + "großem Wert ist."); + +static const u8 gItemDescription_HeartScale[] = _( + "Hübsche Schuppe,\n" + "höchst begehrt\n" + "bei Sammlern."); + +static const u8 gItemDescription_OrangeMail[] = _( + "BRIEF (Tragen) mit \n" + "ZIGZACHS-\n" + "Aufdruck."); + +static const u8 gItemDescription_HarborMail[] = _( + "BRIEF (Tragen) mit \n" + "WINGULL-\n" + "Aufdruck."); + +static const u8 gItemDescription_GlitterMail[] = _( + "BRIEF (Tragen) mit \n" + "PIKACHU-\n" + "Aufdruck."); + +static const u8 gItemDescription_MechMail[] = _( + "BRIEF (Tragen) mit \n" + "MAGNETILO-\n" + "Aufdruck."); + +static const u8 gItemDescription_WoodMail[] = _( + "BRIEF (Tragen) mit \n" + "BUMMELZ-\n" + "Aufdruck."); + +static const u8 gItemDescription_WaveMail[] = _( + "BRIEF (Tragen) mit \n" + "WAILMER-\n" + "Aufdruck."); + +static const u8 gItemDescription_BeadMail[] = _( + "BRIEF mit Abbildung\n" + "des POKéMON, das\n" + "ihn trägt."); + +static const u8 gItemDescription_ShadowMail[] = _( + "BRIEF (Tragen) mit \n" + "ZWIRRLICHT-\n" + "Aufdruck."); + +static const u8 gItemDescription_TropicMail[] = _( + "BRIEF (Tragen) mit \n" + "BLUBELLA-\n" + "Aufdruck."); + +static const u8 gItemDescription_DreamMail[] = _( + "BRIEF mit Abbildung\n" + "des POKéMON, das\n" + "ihn trägt."); + +static const u8 gItemDescription_FabMail[] = _( + "BRIEF (Tragen) mit \n" + "edlem Aufdruck."); + +static const u8 gItemDescription_RetroMail[] = _( + "BRIEF mit den Ab-\n" + "bildungen dreier\n" + "POKéMON-Gesichter."); + +static const u8 gItemDescription_CheriBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Paralyse."); + +static const u8 gItemDescription_ChestoBerry[] = _( + "Item (Tragen)\n" + "weckt schlafendes\n" + "POKéMON im Kampf."); + +static const u8 gItemDescription_PechaBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Vergiftung."); + +static const u8 gItemDescription_RawstBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Verbrennung."); + +static const u8 gItemDescription_AspearBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Frost."); + +static const u8 gItemDescription_LeppaBerry[] = _( + "Item (Tragen) füllt\n" + "AP im Kampf um\n" + "10 Punkte auf."); + +static const u8 gItemDescription_OranBerry[] = _( + "Item (Tragen) füllt\n" + "KP im Kampf um\n" + "10 Punkte auf."); + +static const u8 gItemDescription_PersimBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Verwirrung."); + +static const u8 gItemDescription_LumBerry[] = _( + "Item (Tragen) be-\n" + "wirkt Selbstheilung\n" + "bei Statusproblem."); + +static const u8 gItemDescription_SitrusBerry[] = _( + "Item (Tragen) füllt\n" + "KP im Kampf um\n" + "30 Punkte auf."); + +static const u8 gItemDescription_FigyBerry[] = _( + "Item (Tragen) füllt\n" + "im Kampf KP auf, be-\n" + "wirkt evtl. Verwirr."); + +static const u8 gItemDescription_WikiBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_MagoBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_AguavBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_IapapaBerry[] = _( + "Item (Tragen) füllt\n" + "KP auf, bewirkt\n" + "evtl. Verwirrung."); + +static const u8 gItemDescription_RazzBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "HIMMIH wächst."); + +static const u8 gItemDescription_BlukBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MORB wächst."); + +static const u8 gItemDescription_NanabBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "NANAB wächst."); + +static const u8 gItemDescription_WepearBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "NIRBE wächst."); + +static const u8 gItemDescription_PinapBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SANANA wächst."); + +static const u8 gItemDescription_PomegBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "GRANA wächst."); + +static const u8 gItemDescription_KelpsyBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SETANG wächst."); + +static const u8 gItemDescription_QualotBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "QUALOT wächst."); + +static const u8 gItemDescription_HondewBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "HONMEL wächst."); + +static const u8 gItemDescription_GrepaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "LABRUS wächst."); + +static const u8 gItemDescription_TamatoBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "TAMOT wächst."); + +static const u8 gItemDescription_CornnBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "SAIM wächst."); + +static const u8 gItemDescription_MagostBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MAGOST wächst."); + +static const u8 gItemDescription_RabutaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "RABUTA wächst."); + +static const u8 gItemDescription_NomelBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "TRONZI wächst."); + +static const u8 gItemDescription_SpelonBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "KIWAN wächst."); + +static const u8 gItemDescription_PamtreBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "PALLM wächst."); + +static const u8 gItemDescription_WatmelBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "WASMEL wächst."); + +static const u8 gItemDescription_DurinBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "DURIN wächst."); + +static const u8 gItemDescription_BelueBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "MYRTIL wächst."); + +static const u8 gItemDescription_LiechiBerry[] = _( + "Item (Tragen) hebt\n" + "ANGR.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_GanlonBerry[] = _( + "Item (Tragen) hebt\n" + "VERT.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_SalacBerry[] = _( + "Item (Tragen) hebt\n" + "INIT.-Wert in einer\n" + "Notlage."); + +static const u8 gItemDescription_PetayaBerry[] = _( + "Item (Tragen) hebt\n" + "SP. ANGR.-Wert\n" + "in einer Notlage."); + +static const u8 gItemDescription_ApicotBerry[] = _( + "Item (Tragen) hebt\n" + "SP. VERT.-Wert\n" + "in einer Notlage."); + +static const u8 gItemDescription_LansatBerry[] = _( + "Item (Tragen) hebt\n" + "Volltrefferquote\n" + "in einer Notlage."); + +static const u8 gItemDescription_StarfBerry[] = _( + "Item (Tragen) hebt\n" + "einen Statuswert\n" + "in einer Notlage."); + +static const u8 gItemDescription_EnigmaBerry[] = _( + "Säe {POKEBLOCK}-Zutat\n" + "in Lehmboden, damit\n" + "Mysterium wächst."); + +static const u8 gItemDescription_BrightPowder[] = _( + "Item (Tragen)\n" + "senkt die Genauig-\n" + "keit des Gegners."); + +static const u8 gItemDescription_WhiteHerb[] = _( + "Item (Tragen) hebt\n" + "jede Statusverän-\n" + "derung auf."); + +static const u8 gItemDescription_MachoBrace[] = _( + "Item (Tragen) för-\n" + "dert Wachstum,\n" + "aber senkt INIT."); + +static const u8 gItemDescription_ExpShare[] = _( + "Item (Tragen) teilt\n" + "die Kampf-EP."); + +static const u8 gItemDescription_QuickClaw[] = _( + "Item (Tragen) hebt\n" + "die Erstschlag-\n" + "quote."); + +static const u8 gItemDescription_SootheBell[] = _( + "Item (Tragen) be-\n" + "sänftigt und för-\n" + "dert Sympathie."); + +static const u8 gItemDescription_MentalHerb[] = _( + "Item (Tragen) er-\n" + "löst POKéMON von\n" + "der Anziehung."); + +static const u8 gItemDescription_ChoiceBand[] = _( + "Stärkt eine Atta-\n" + "cke. Aber nur diese\n" + "ist einsetzbar."); + +static const u8 gItemDescription_KingsRock[] = _( + "Item (Tragen) kann\n" + "Gegner zurück-\n" + "weichen lassen."); + +static const u8 gItemDescription_SilverPowder[] = _( + "Item (Tragen) ver-\n" + "bessert KÄFER-\n" + "Attacken."); + +static const u8 gItemDescription_AmuletCoin[] = _( + "Doppelter Geldbe-\n" + "trag, wenn Träger \n" + "am Kampf teilnimmt."); + +static const u8 gItemDescription_CleanseTag[] = _( + "Item (Tragen) kann\n" + "wilde POKéMON\n" + "abhalten."); + +static const u8 gItemDescription_SoulDew[] = _( + "Item (Tragen) hebt\n" + "SP.ANG & SP.VER von\n" + "LATIOS & LATIAS."); + +static const u8 gItemDescription_DeepSeaTooth[] = _( + "Item (Tragen) hebt\n" + "SP. ANGR. von\n" + "PERLU."); + +static const u8 gItemDescription_DeepSeaScale[] = _( + "Item (Tragen) hebt\n" + "SP. VERT. von\n" + "PERLU."); + +static const u8 gItemDescription_SmokeBall[] = _( + "Item (Tragen) er-\n" + "möglicht Flucht vor\n" + "wilden POKéMON."); + +static const u8 gItemDescription_Everstone[] = _( + "Wundersamer Stein\n" + "zum Tragen. Bewirkt\n" + "Entwicklungsstopp."); + +static const u8 gItemDescription_FocusBand[] = _( + "Item (Tragen) kann\n" + "manchmal K.O.\n" + "verhindern."); + +static const u8 gItemDescription_LuckyEgg[] = _( + "Item (Tragen)\n" + "erhöht im Kampf er-\n" + "haltene Extra-EP."); + +static const u8 gItemDescription_ScopeLens[] = _( + "Item (Tragen)\n" + "erhöht die\n" + "Volltrefferquote."); + +static const u8 gItemDescription_MetalCoat[] = _( + "Item (Tragen)\n" + "verstärkt STAHL-\n" + "Attacken."); + +static const u8 gItemDescription_Leftovers[] = _( + "Item (Tragen) füllt\n" + "im Kampf langsam\n" + "KP wieder auf."); + +static const u8 gItemDescription_DragonScale[] = _( + "Seltsame Haut zum\n" + "Tragen für POKéMON\n" + "des Typs DRACHEN."); + +static const u8 gItemDescription_LightBall[] = _( + "Item (Tragen)\n" + "erhöht PIKACHUS\n" + "SP. ANGR."); + +static const u8 gItemDescription_SoftSand[] = _( + "Item (Tragen)\n" + "verstärkt BODEN-\n" + "Attacken."); + +static const u8 gItemDescription_HardStone[] = _( + "Item (Tragen)\n" + "verstärkt GESTEIN-\n" + "Attacken."); + +static const u8 gItemDescription_MiracleSeed[] = _( + "Item (Tragen)\n" + "verstärkt PFLAN-\n" + "ZEN-Attacken."); + +static const u8 gItemDescription_BlackGlasses[] = _( + "Item (Tragen)\n" + "verstärkt UNLICHT-\n" + "Attacken."); + +static const u8 gItemDescription_BlackBelt[] = _( + "Item (Tragen)\n" + "verstärkt KAMPF-\n" + "Attacken."); + +static const u8 gItemDescription_Magnet[] = _( + "Item (Tragen)\n" + "verstärkt ELEKTRO-\n" + "Attacken."); + +static const u8 gItemDescription_MysticWater[] = _( + "Item (Tragen)\n" + "verstärkt WASSER-\n" + "Attacken."); + +static const u8 gItemDescription_SharpBeak[] = _( + "Item (Tragen)\n" + "verstärkt FLUG-\n" + "Attacken."); + +static const u8 gItemDescription_PoisonBarb[] = _( + "Item (Tragen)\n" + "verstärkt GIFT-\n" + "Attacken."); + +static const u8 gItemDescription_NeverMeltIce[] = _( + "Item (Tragen)\n" + "verstärkt EIS-\n" + "Attacken."); + +static const u8 gItemDescription_SpellTag[] = _( + "Item (Tragen)\n" + "verstärkt GEIST-\n" + "Attacken."); + +static const u8 gItemDescription_TwistedSpoon[] = _( + "Item (Tragen)\n" + "verstärkt PSYCHO-\n" + "Attacken."); + +static const u8 gItemDescription_Charcoal[] = _( + "Item (Tragen)\n" + "verstärkt FEUER-\n" + "Attacken."); + +static const u8 gItemDescription_DragonFang[] = _( + "Item (Tragen)\n" + "verstärkt DRACHEN-\n" + "Attacken."); + +static const u8 gItemDescription_SilkScarf[] = _( + "Item (Tragen)\n" + "verstärkt NORMAL-\n" + "Attacken."); + +static const u8 gItemDescription_UpGrade[] = _( + "Eine mysteriöse\n" + "Box der SILPH CO."); + +static const u8 gItemDescription_ShellBell[] = _( + "Item (Tragen) füllt\n" + "im Kampf langsam \n" + "KP wieder auf."); + +static const u8 gItemDescription_SeaIncense[] = _( + "Item (Tragen)\n" + "verstärkt WASSER-\n" + "Attacken."); + +static const u8 gItemDescription_LaxIncense[] = _( + "Item (Tragen)\n" + "senkt Genauigkeit\n" + "des Gegners."); + +static const u8 gItemDescription_LuckyPunch[] = _( + "Item (Tragen)\n" + "erhöht CHANEIRAS\n" + "Volltrefferquote."); + +static const u8 gItemDescription_MetalPowder[] = _( + "Item (Tragen)\n" + "erhöht VERT.-Wert\n" + "von DITTO."); + +static const u8 gItemDescription_ThickClub[] = _( + "Irgendeine Art\n" + "Knochen von\n" + "geringem Wert."); + +static const u8 gItemDescription_Stick[] = _( + "Gemeiner Lauch,\n" + "der nur von\n" + "geringem Wert ist."); + +static const u8 gItemDescription_RedScarf[] = _( + "Item (Tragen) hebt\n" + "COOL.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_BlueScarf[] = _( + "Item (Tragen) hebt\n" + "SCHÖN.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_PinkScarf[] = _( + "Item (Tragen) hebt\n" + "ANMUT-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_GreenScarf[] = _( + "Item (Tragen) hebt\n" + "KLUG.-Wert für den\n" + "WETTBEWERB."); + +static const u8 gItemDescription_YellowScarf[] = _( + "Item (Tragen) hebt\n" + "STÄRKE-Wert für\n" + "den WETTBEWERB."); + +static const u8 gItemDescription_MachBike[] = _( + "Klapprad, das dop-\n" + "pelt so schnell ist\n" + "wie ein Fußgänger."); + +static const u8 gItemDescription_CoinCase[] = _( + "Kann bis zu 9.999\n" + "MÜNZEN aufnehmen."); + +static const u8 gItemDescription_Itemfinder[] = _( + "Ein Gerät, das ver-\n" + "borgene Items via \n" + "Schallwellen ortet."); + +static const u8 gItemDescription_OldRod[] = _( + "Damit kannst du in\n" + "jedem Gewässer\n" + "POKéMON angeln."); + +static const u8 gItemDescription_GoodRod[] = _( + "Eine recht gute\n" + "Angel zum\n" + "POKéMON-Fischen."); + +static const u8 gItemDescription_SuperRod[] = _( + "Die beste Angel,\n" + "um nach POKéMON\n" + "zu fischen."); + +static const u8 gItemDescription_SSTicket[] = _( + "Ein Ticket zur\n" + "Fahrt auf\n" + "einer Fähre."); + +static const u8 gItemDescription_ContestPass[] = _( + "Ausweis zur Teil-\n" + "nahme an POKéMON- \n" + "WETTBEWERBEN."); + +static const u8 gItemDescription_WailmerPail[] = _( + "Ein Gegenstand zum\n" + "Gießen von Pflan-\n" + "zen wie BEEREN."); + +static const u8 gItemDescription_DevonGoods[] = _( + "Päckchen, das Ma-\n" + "schinenteile von\n" + "DEVON enthält."); + +static const u8 gItemDescription_SootSack[] = _( + "Beutel zum Sammeln\n" + "und Aufbewahren\n" + "von Vulkanasche."); + +static const u8 gItemDescription_BasementKey[] = _( + "Schlüssel für NEU\n" + "MALVENFROH unter\n" + "MALVENFROH CITY."); + +static const u8 gItemDescription_AcroBike[] = _( + "Klapprad ermög-\n" + "licht Sprünge und\n" + "Wheelies."); + +static const u8 gItemDescription_PokeblockCase[] = _( + "Box für {POKEBLOCK},\n" + "die im BEERENMIXER\n" + "hergestellt werden."); + +static const u8 gItemDescription_Letter[] = _( + "Brief an TROY\n" + "vom PRÄSIDENTEN\n" + "der DEVON CORP."); + +static const u8 gItemDescription_EonTicket[] = _( + "Bootsticket zu\n" + "einer fernen Insel\n" + "im Süden."); + +static const u8 gItemDescription_RedOrb[] = _( + "Rot glühende Kugel,\n" + "die eine uralte\n" + "Macht bergen soll."); + +static const u8 gItemDescription_BlueOrb[] = _( + "Blau glühende Kugel,\n" + "die eine uralte\n" + "Macht bergen soll."); + +static const u8 gItemDescription_Scanner[] = _( + "Ein Gerät, das\n" + "im SCHIFFSWRACK\n" + "gefunden wurde."); + +static const u8 gItemDescription_GoGoggles[] = _( + "Schicke Brille, die\n" + "die Augen vor Sand-\n" + "stürmen schützt."); + +static const u8 gItemDescription_Meteorite[] = _( + "Meteorit. Fundort:\n" + "METEORFÄLLE."); + +static const u8 gItemDescription_Room1Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room2Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room4Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_Room6Key[] = _( + "Schlüssel zur Tür\n" + "einer Kabine auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_StorageKey[] = _( + "Schlüssel zum\n" + "Lagerraum auf\n" + "dem SCHIFFSWRACK."); + +static const u8 gItemDescription_RootFossil[] = _( + "Fossil eines ural-\n" + "ten POKéMON, das in\n" + "der Tiefsee lebte."); + +static const u8 gItemDescription_ClawFossil[] = _( + "Fossil eines ural-\n" + "ten POKéMON, das in\n" + "der Tiefsee lebte."); + +static const u8 gItemDescription_DevonScope[] = _( + "Gerät von DEVON, \n" + "das unsichtbare\n" + "POKéMON entlarvt."); + +static const u8 gItemDescription_TM01[] = _( + "Stark. POKéMON er-\n" + "schrickt vielleicht\n" + "bei gegn. Attacke."); + +static const u8 gItemDescription_TM02[] = _( + "Gegner wird mit\n" + "langen, scharfen\n" + "Krallen attackiert."); + +static const u8 gItemDescription_TM03[] = _( + "Eine Ultraschall-\n" + "welle, die den Geg-\n" + "ner verwirren kann."); + +static const u8 gItemDescription_TM04[] = _( + "Verstärkt SP. ANGR.\n" + "und SP. VERT. durch\n" + "Konzentration."); + +static const u8 gItemDescription_TM05[] = _( + "Brüller schlägt Geg-\n" + "ner in die Flucht \n" + "und beendet Kampf."); + +static const u8 gItemDescription_TM06[] = _( + "Vergiftet den Geg-\n" + "ner und schadet \n" + "ihm zunehmend."); + +static const u8 gItemDescription_TM07[] = _( + "Hagelsturm schadet\n" + "allen POKéMON außer\n" + "denen des Typs EIS."); + +static const u8 gItemDescription_TM08[] = _( + "Stärkt den Körper.\n" + "So steigt ANGR.-\n" + "und VERT.-Wert."); + +static const u8 gItemDescription_TM09[] = _( + "Bepflanzt den\n" + "Gegner mit 2 bis 5\n" + "Samen auf einmal."); + +static const u8 gItemDescription_TM10[] = _( + "Die Stärke dieser\n" + "Attacke hängt vom \n" + "jew. POKéMON ab."); + +static const u8 gItemDescription_TM11[] = _( + "Verstärkt FEUER-\n" + "Attacken über \n" + "5 Runden."); + +static const u8 gItemDescription_TM12[] = _( + "Reizt Geg. so, dass\n" + "er nur Angriffs-\n" + "attacken einsetzt."); + +static const u8 gItemDescription_TM13[] = _( + "Eisig kalter Strahl,\n" + "der den Gegner\n" + "einfrieren kann."); + +static const u8 gItemDescription_TM14[] = _( + "Eis- und Schnee- \n" + "Attacke, die Gegner\n" + "einfrieren kann."); + +static const u8 gItemDescription_TM15[] = _( + "Stark, muss sich\n" + "aber in der nächs-\n" + "ten Runde aufladen."); + +static const u8 gItemDescription_TM16[] = _( + "Wand aus Licht, die\n" + "Senkung des SP.\n" + "ANGR. verringert."); + +static const u8 gItemDescription_TM17[] = _( + "Schützt, könnte\n" + "aber bei häufigem\n" + "Einsatz versagen."); + +static const u8 gItemDescription_TM18[] = _( + "Verstärkt WASSER-\n" + "Attacken über\n" + "5 Runden."); + +static const u8 gItemDescription_TM19[] = _( + "Füllt KP um die Hälf-\n" + "te der zugefügten\n" + "Schadenspunkte."); + +static const u8 gItemDescription_TM20[] = _( + "Mystische Macht\n" + "verhindert Status-\n" + "veränderungen."); + +static const u8 gItemDescription_TM21[] = _( + "Je unbeliebter der\n" + "Trainer, desto grö-\n" + "ßer die Wirkung."); + +static const u8 gItemDescription_TM22[] = _( + "Erst wird Sonnen-\n" + "licht absorbiert,\n" + "dann erfolgt Angr."); + +static const u8 gItemDescription_TM23[] = _( + "Schlag mit harter\n" + "Rute. Kann gleichz.\n" + "VERT.-Wert senken."); + +static const u8 gItemDescription_TM24[] = _( + "Starke Elektro-\n" + "Attacke kann\n" + "Paralyse bewirken."); + +static const u8 gItemDescription_TM25[] = _( + "Mächtiger Donner-\n" + "schlag, der Paraly-\n" + "se bewirken kann."); + +static const u8 gItemDescription_TM26[] = _( + "Starkes Beben hat\n" + "keinen Einfluss auf\n" + "fliegende Gegner."); + +static const u8 gItemDescription_TM27[] = _( + "Je beliebter der\n" + "Trainer, desto grö-\n" + "ßer die Wirkung."); + +static const u8 gItemDescription_TM28[] = _( + "Erst gräbt sich An-\n" + "greifer ein, dann\n" + "erfolgt Angriff."); + +static const u8 gItemDescription_TM29[] = _( + "Starke PSYCHO-At-\n" + "tacke, die SP. VERT.\n" + "senken kann."); + +static const u8 gItemDescription_TM30[] = _( + "Dunkler Klumpen,\n" + "der SP. VERT.\n" + "senken kann."); + +static const u8 gItemDescription_TM31[] = _( + "Zerstört Barrieren\n" + "wie SCHUTZSCHILD,\n" + "fügt Schaden zu."); + +static const u8 gItemDescription_TM32[] = _( + "Virtueller Doppel-\n" + "gänger erhöht\n" + "den Flucht-Wert."); + +static const u8 gItemDescription_TM33[] = _( + "Wand aus Licht, die\n" + "physische Atta-\n" + "cken schwächt."); + +static const u8 gItemDescription_TM34[] = _( + "Fügt Gegner einen\n" + "Stromschlag zu,\n" + "der nie verfehlt."); + +static const u8 gItemDescription_TM35[] = _( + "Entfesselt Feuer-\n" + "strahl, der Gegner\n" + "verbrennen kann."); + +static const u8 gItemDescription_TM36[] = _( + "Bewirft Gegner mit\n" + "Matsch, der ihn\n" + "vergiften kann."); + +static const u8 gItemDescription_TM37[] = _( + "Sandsturm trifft\n" + "etliche Runden lang\n" + "die Kämpfenden."); + +static const u8 gItemDescription_TM38[] = _( + "Kraftvolle FEUER-\n" + "Attacke, die Gegner\n" + "verbrennen kann."); + +static const u8 gItemDescription_TM39[] = _( + "Stoppt GESTEIN-\n" + "Attacken. Kann\n" + "INIT.-Wert senken."); + +static const u8 gItemDescription_TM40[] = _( + "Eine extrem schnel-\n" + "le Attacke, die\n" + "unausweichlich ist."); + +static const u8 gItemDescription_TM41[] = _( + "Blockiert gerade\n" + "verwendete Atta-\n" + "cke des Gegners."); + +static const u8 gItemDescription_TM42[] = _( + "Stärkt ANGR.-Wert\n" + "bei Gift, Brand oder\n" + "Paralyse."); + +static const u8 gItemDescription_TM43[] = _( + "Die Umgebung\n" + "beeinflusst die Art\n" + "der Attacke."); + +static const u8 gItemDescription_TM44[] = _( + "POKéMON schläft\n" + "2 Runden. Füllt KP\n" + "und heilt Status."); + +static const u8 gItemDescription_TM45[] = _( + "Erschwert Angriff\n" + "auf Gegner des an-\n" + "deren Geschlechts."); + +static const u8 gItemDescription_TM46[] = _( + "Beim Angriff wird\n" + "Item des Gegners\n" + "evtl. gestohlen."); + +static const u8 gItemDescription_TM47[] = _( + "Den Gegner\n" + "treffen stählerne\n" + "Flügelschläge."); + +static const u8 gItemDescription_TM48[] = _( + "Austausch der\n" + "Fähigkeiten bei der\n" + "nächsten Attacke."); + +static const u8 gItemDescription_TM49[] = _( + "Stiehlt die\n" + "Effekte der gegne-\n" + "rischen Attacke."); + +static const u8 gItemDescription_TM50[] = _( + "Höchste Kraft,\n" + "aber senkt SP.\n" + "ANGR. enorm."); + +static const u8 gItemDescription_HM01[] = _( + "Gegner wird mit\n" + "klingenscharfen\n" + "Krallen attackiert."); + +static const u8 gItemDescription_HM02[] = _( + "PKMN fliegt hoch,\n" + "dann erfolgt rasan-\n" + "ter Luftangriff."); + +static const u8 gItemDescription_HM03[] = _( + "Eine riesige Flut-\n" + "welle ergießt sich\n" + "über dem Gegner."); + +static const u8 gItemDescription_HM04[] = _( + "Den Gegner trifft \n" + "ein energiegelade-\n" + "ner Kraftschlag."); + +static const u8 gItemDescription_HM05[] = _( + "Ein gleißender\n" + "Lichtstrahl, der\n" + "Genau. senken kann."); + +static const u8 gItemDescription_HM06[] = _( + "Steinbrecherische\n" + "Attacke, die VERT.-\n" + "Wert senken kann."); + +static const u8 gItemDescription_HM07[] = _( + "Mächtige Attacke,\n" + "die Wasserfälle\n" + "bezwingbar macht."); + +static const u8 gItemDescription_HM08[] = _( + "PKMN taucht ab,\n" + "dann erfolgt An-\n" + "griff aus der Tiefe."); + +static const u8 gItemDescription_Dummy[] = _(""); diff --git a/src/data/item_descriptions_en.h b/src/data/item_descriptions_en.h new file mode 100644 index 000000000..e07a5fc19 --- /dev/null +++ b/src/data/item_descriptions_en.h @@ -0,0 +1,1392 @@ +static const u8 gItemDescription_MasterBall[] = _( + "The best BALL that\n" + "catches a POKéMON\n" + "without fail."); + +static const u8 gItemDescription_UltraBall[] = _( + "A better BALL with\n" + "a higher catch rate\n" + "than a GREAT BALL."); + +static const u8 gItemDescription_GreatBall[] = _( + "A good BALL with a\n" + "higher catch rate\n" + "than a POKé BALL."); + +static const u8 gItemDescription_PokeBall[] = _( + "A tool used for\n" + "catching wild\n" + "POKéMON."); + +static const u8 gItemDescription_SafariBall[] = _( + "A special BALL that\n" + "is used only in the\n" + "SAFARI ZONE."); + +static const u8 gItemDescription_NetBall[] = _( + "A BALL that works\n" + "well on WATER- and\n" + "BUG-type POKéMON."); + +static const u8 gItemDescription_DiveBall[] = _( + "A BALL that works\n" + "better on POKéMON\n" + "on the ocean floor."); + +static const u8 gItemDescription_NestBall[] = _( + "A BALL that works\n" + "better on weaker\n" + "POKéMON."); + +static const u8 gItemDescription_RepeatBall[] = _( + "A BALL that works\n" + "better on POKéMON\n" + "caught before."); + +static const u8 gItemDescription_TimerBall[] = _( + "More effective as\n" + "more turns are\n" + "taken in battle."); + +static const u8 gItemDescription_LuxuryBall[] = _( + "A cozy BALL that\n" + "makes POKéMON\n" + "more friendly."); + +static const u8 gItemDescription_PremierBall[] = _( + "A rare BALL made\n" + "in commemoration\n" + "of some event."); + +static const u8 gItemDescription_Potion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "20 points."); + +static const u8 gItemDescription_Antidote[] = _( + "Heals a poisoned\n" + "POKéMON."); + +static const u8 gItemDescription_BurnHeal[] = _( + "Heals POKéMON\n" + "of a burn."); + +static const u8 gItemDescription_IceHeal[] = _( + "Defrosts a frozen\n" + "POKéMON."); + +static const u8 gItemDescription_Awakening[] = _( + "Awakens a sleeping\n" + "POKéMON."); + +static const u8 gItemDescription_ParalyzeHeal[] = _( + "Heals a paralyzed\n" + "POKéMON."); + +static const u8 gItemDescription_FullRestore[] = _( + "Fully restores the\n" + "HP and status of a\n" + "POKéMON."); + +static const u8 gItemDescription_MaxPotion[] = _( + "Fully restores the\n" + "HP of a POKéMON."); + +static const u8 gItemDescription_HyperPotion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "200 points."); + +static const u8 gItemDescription_SuperPotion[] = _( + "Restores the HP of\n" + "a POKéMON by\n" + "50 points."); + +static const u8 gItemDescription_FullHeal[] = _( + "Heals all the status\n" + "problems of one\n" + "POKéMON."); + +static const u8 gItemDescription_Revive[] = _( + "Revives a fainted\n" + "POKéMON with half\n" + "its HP."); + +static const u8 gItemDescription_MaxRevive[] = _( + "Revives a fainted\n" + "POKéMON with all\n" + "its HP."); + +static const u8 gItemDescription_FreshWater[] = _( + "A mineral water\n" + "that restores HP\n" + "by 50 points."); + +static const u8 gItemDescription_SodaPop[] = _( + "A fizzy soda drink\n" + "that restores HP\n" + "by 60 points."); + +static const u8 gItemDescription_Lemonade[] = _( + "A very sweet drink\n" + "that restores HP\n" + "by 80 points."); + +static const u8 gItemDescription_MoomooMilk[] = _( + "A nutritious milk\n" + "that restores HP\n" + "by 100 points."); + +static const u8 gItemDescription_EnergyPowder[] = _( + "A bitter powder\n" + "that restores HP\n" + "by 50 points."); + +static const u8 gItemDescription_EnergyRoot[] = _( + "A bitter root\n" + "that restores HP\n" + "by 200 points."); + +static const u8 gItemDescription_HealPowder[] = _( + "A bitter powder\n" + "that heals all\n" + "status problems."); + +static const u8 gItemDescription_RevivalHerb[] = _( + "A very bitter herb\n" + "that revives a\n" + "fainted POKéMON."); + +static const u8 gItemDescription_Ether[] = _( + "Restores the PP\n" + "of a selected move\n" + "by 10."); + +static const u8 gItemDescription_MaxEther[] = _( + "Fully restores the\n" + "PP of a selected\n" + "move."); + +static const u8 gItemDescription_Elixir[] = _( + "Restores the PP\n" + "of all moves by 10."); + +static const u8 gItemDescription_MaxElixir[] = _( + "Fully restores the\n" + "PP of a POKéMON’s\n" + "moves."); + +static const u8 gItemDescription_LavaCookie[] = _( + "A local specialty\n" + "that heals all\n" + "status problems."); + +static const u8 gItemDescription_BlueFlute[] = _( + "A glass flute that\n" + "awakens sleeping\n" + "POKéMON."); + +static const u8 gItemDescription_YellowFlute[] = _( + "A glass flute that\n" + "snaps POKéMON\n" + "out of confusion."); + +static const u8 gItemDescription_RedFlute[] = _( + "A glass flute that\n" + "snaps POKéMON\n" + "out of attraction."); + +static const u8 gItemDescription_BlackFlute[] = _( + "A glass flute that\n" + "keeps away wild\n" + "POKéMON."); + +static const u8 gItemDescription_WhiteFlute[] = _( + "A glass flute that\n" + "lures wild POKéMON."); + +static const u8 gItemDescription_BerryJuice[] = _( + "A 100% pure juice\n" + "that restores HP\n" + "by 20 points."); + +static const u8 gItemDescription_SacredAsh[] = _( + "Fully revives and\n" + "restores all\n" + "fainted POKéMON."); + +static const u8 gItemDescription_ShoalSalt[] = _( + "Salt obtained from\n" + "deep inside the\n" + "SHOAL CAVE."); + +static const u8 gItemDescription_ShoalShell[] = _( + "A seashell found\n" + "deep inside the\n" + "SHOAL CAVE."); + +static const u8 gItemDescription_RedShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BlueShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_YellowShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_GreenShard[] = _( + "A shard from an\n" + "ancient item.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_HPUp[] = _( + "Raises the HP of\n" + "one POKéMON."); + +static const u8 gItemDescription_Protein[] = _( + "Raises the stat\n" + "ATTACK of one\n" + "POKéMON."); + +static const u8 gItemDescription_Iron[] = _( + "Raises the stat\n" + "DEFENSE of one\n" + "POKéMON."); + +static const u8 gItemDescription_Carbos[] = _( + "Raises the stat\n" + "SPEED of one\n" + "POKéMON."); + +static const u8 gItemDescription_Calcium[] = _( + "Raises the stat\n" + "SP. ATK of one\n" + "POKéMON."); + +static const u8 gItemDescription_RareCandy[] = _( + "Raises the level\n" + "of a POKéMON by\n" + "one."); + +static const u8 gItemDescription_PPUp[] = _( + "Raises the maximum\n" + "PP of a selected\n" + "move."); + +static const u8 gItemDescription_Zinc[] = _( + "Raises the stat\n" + "SP. DEF of one\n" + "POKéMON."); + +static const u8 gItemDescription_PPMax[] = _( + "Raises the PP of a\n" + "move to its maximum\n" + "points."); + +static const u8 gItemDescription_GuardSpec[] = _( + "Prevents stat\n" + "reduction when\n" + "used in battle."); + +static const u8 gItemDescription_DireHit[] = _( + "Raises the\n" + "critical-hit ratio\n" + "during one battle."); + +static const u8 gItemDescription_XAttack[] = _( + "Raises the stat\n" + "ATTACK during one\n" + "battle."); + +static const u8 gItemDescription_XDefend[] = _( + "Raises the stat\n" + "DEFENSE during one\n" + "battle."); + +static const u8 gItemDescription_XSpeed[] = _( + "Raises the stat\n" + "SPEED during one\n" + "battle."); + +static const u8 gItemDescription_XAccuracy[] = _( + "Raises accuracy\n" + "of attack moves\n" + "during one battle."); + +static const u8 gItemDescription_XSpecial[] = _( + "Raises the stat\n" + "SP. ATK during one\n" + "battle."); + +static const u8 gItemDescription_PokeDoll[] = _( + "Use to flee from\n" + "any battle with\n" + "a wild POKéMON."); + +static const u8 gItemDescription_FluffyTail[] = _( + "Use to flee from\n" + "any battle with\n" + "a wild POKéMON."); + +static const u8 gItemDescription_SuperRepel[] = _( + "Repels weak wild\n" + "POKéMON for 200\n" + "steps."); + +static const u8 gItemDescription_MaxRepel[] = _( + "Repels weak wild\n" + "POKéMON for 250\n" + "steps."); + +static const u8 gItemDescription_EscapeRope[] = _( + "Use to escape\n" + "instantly from a\n" + "cave or a dungeon."); + +static const u8 gItemDescription_Repel[] = _( + "Repels weak wild\n" + "POKéMON for 100\n" + "steps."); + +static const u8 gItemDescription_SunStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_MoonStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_FireStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_ThunderStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_WaterStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_LeafStone[] = _( + "Makes certain\n" + "species of POKéMON\n" + "evolve."); + +static const u8 gItemDescription_TinyMushroom[] = _( + "A plain, ordinary\n" + "mushroom.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BigMushroom[] = _( + "A rare mushroom\n" + "that would sell at a\n" + "high price."); + +static const u8 gItemDescription_Pearl[] = _( + "A pretty pearl.\n" + "Can be sold cheaply."); + +static const u8 gItemDescription_BigPearl[] = _( + "A lovely large pearl\n" + "that would sell at a\n" + "high price."); + +static const u8 gItemDescription_Stardust[] = _( + "Beautiful red sand.\n" + "Can be sold at a\n" + "high price."); + +static const u8 gItemDescription_StarPiece[] = _( + "A red gem shard.\n" + "It would sell for a\n" + "very high price."); + +static const u8 gItemDescription_Nugget[] = _( + "A nugget of pure\n" + "gold. Can be sold at\n" + "a high price."); + +static const u8 gItemDescription_HeartScale[] = _( + "A lovely scale.\n" + "It is coveted by\n" + "collectors."); + +static const u8 gItemDescription_OrangeMail[] = _( + "A ZIGZAGOON-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_HarborMail[] = _( + "A WINGULL-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_GlitterMail[] = _( + "A PIKACHU-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_MechMail[] = _( + "A MAGNEMITE-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_WoodMail[] = _( + "A SLAKOTH-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_WaveMail[] = _( + "A WAILMER-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_BeadMail[] = _( + "MAIL featuring a\n" + "sketch of the\n" + "holding POKéMON."); + +static const u8 gItemDescription_ShadowMail[] = _( + "A DUSKULL-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_TropicMail[] = _( + "A BELLOSSOM-print\n" + "MAIL to be held by\n" + "a POKéMON."); + +static const u8 gItemDescription_DreamMail[] = _( + "MAIL featuring a\n" + "sketch of the\n" + "holding POKéMON."); + +static const u8 gItemDescription_FabMail[] = _( + "A gorgeous-print\n" + "MAIL to be held\n" + "by a POKéMON."); + +static const u8 gItemDescription_RetroMail[] = _( + "MAIL featuring the\n" + "drawings of three\n" + "POKéMON."); + +static const u8 gItemDescription_CheriBerry[] = _( + "A hold item that\n" + "heals paralysis\n" + "in battle."); + +static const u8 gItemDescription_ChestoBerry[] = _( + "A hold item that\n" + "awakens POKéMON\n" + "in battle."); + +static const u8 gItemDescription_PechaBerry[] = _( + "A hold item that\n" + "heals poisoning\n" + "in battle."); + +static const u8 gItemDescription_RawstBerry[] = _( + "A hold item that\n" + "heals a burn in\n" + "battle."); + +static const u8 gItemDescription_AspearBerry[] = _( + "A hold item that\n" + "defrosts POKéMON\n" + "in battle."); + +static const u8 gItemDescription_LeppaBerry[] = _( + "A hold item that\n" + "restores 10 PP in\n" + "battle."); + +static const u8 gItemDescription_OranBerry[] = _( + "A hold item that\n" + "restores 10 HP in\n" + "battle."); + +static const u8 gItemDescription_PersimBerry[] = _( + "A hold item that\n" + "heals confusion\n" + "in battle."); + +static const u8 gItemDescription_LumBerry[] = _( + "A hold item that\n" + "heals status in\n" + "battle."); + +static const u8 gItemDescription_SitrusBerry[] = _( + "A hold item that\n" + "restores 30 HP in\n" + "battle."); + +static const u8 gItemDescription_FigyBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_WikiBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_MagoBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_AguavBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_IapapaBerry[] = _( + "A hold item that\n" + "restores HP but\n" + "may confuse."); + +static const u8 gItemDescription_RazzBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow RAZZ."); + +static const u8 gItemDescription_BlukBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow BLUK."); + +static const u8 gItemDescription_NanabBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow NANAB."); + +static const u8 gItemDescription_WepearBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow WEPEAR."); + +static const u8 gItemDescription_PinapBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow PINAP."); + +static const u8 gItemDescription_PomegBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow POMEG."); + +static const u8 gItemDescription_KelpsyBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow KELPSY."); + +static const u8 gItemDescription_QualotBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow QUALOT."); + +static const u8 gItemDescription_HondewBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow HONDEW."); + +static const u8 gItemDescription_GrepaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow GREPA."); + +static const u8 gItemDescription_TamatoBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow TAMATO."); + +static const u8 gItemDescription_CornnBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow CORNN."); + +static const u8 gItemDescription_MagostBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow MAGOST."); + +static const u8 gItemDescription_RabutaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow RABUTA."); + +static const u8 gItemDescription_NomelBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow NOMEL."); + +static const u8 gItemDescription_SpelonBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow SPELON."); + +static const u8 gItemDescription_PamtreBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow PAMTRE."); + +static const u8 gItemDescription_WatmelBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow WATMEL."); + +static const u8 gItemDescription_DurinBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow DURIN."); + +static const u8 gItemDescription_BelueBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow BELUE."); + +static const u8 gItemDescription_LiechiBerry[] = _( + "A hold item that\n" + "raises ATTACK in\n" + "a pinch."); + +static const u8 gItemDescription_GanlonBerry[] = _( + "A hold item that\n" + "raises DEFENSE in\n" + "a pinch."); + +static const u8 gItemDescription_SalacBerry[] = _( + "A hold item that\n" + "raises SPEED in\n" + "a pinch."); + +static const u8 gItemDescription_PetayaBerry[] = _( + "A hold item that\n" + "raises SP. ATK in\n" + "a pinch."); + +static const u8 gItemDescription_ApicotBerry[] = _( + "A hold item that\n" + "raises SP. DEF in\n" + "a pinch."); + +static const u8 gItemDescription_LansatBerry[] = _( + "A hold item that\n" + "ups the critical-\n" + "hit rate in a pinch."); + +static const u8 gItemDescription_StarfBerry[] = _( + "A hold item that\n" + "sharply boosts a\n" + "stat in a pinch."); + +static const u8 gItemDescription_EnigmaBerry[] = _( + "{POKEBLOCK} ingredient.\n" + "Plant in loamy soil\n" + "to grow a mystery."); + +static const u8 gItemDescription_BrightPowder[] = _( + "A hold item that\n" + "casts a glare to\n" + "reduce accuracy."); + +static const u8 gItemDescription_WhiteHerb[] = _( + "A hold item that\n" + "restores any\n" + "lowered stat."); + +static const u8 gItemDescription_MachoBrace[] = _( + "A hold item that\n" + "promotes growth,\n" + "but reduces SPEED."); + +static const u8 gItemDescription_ExpShare[] = _( + "A hold item that\n" + "gets EXP. points\n" + "from battles."); + +static const u8 gItemDescription_QuickClaw[] = _( + "A hold item that\n" + "occasionally allows\n" + "the first strike."); + +static const u8 gItemDescription_SootheBell[] = _( + "A hold item that\n" + "calms spirits and\n" + "fosters friendship."); + +static const u8 gItemDescription_MentalHerb[] = _( + "A hold item that\n" + "snaps POKéMON out\n" + "of infatuation."); + +static const u8 gItemDescription_ChoiceBand[] = _( + "Raises a move’s\n" + "power, but permits\n" + "only that move."); + +static const u8 gItemDescription_KingsRock[] = _( + "A hold item that\n" + "may cause flinching\n" + "when the foe is hit."); + +static const u8 gItemDescription_SilverPowder[] = _( + "A hold item that\n" + "raises the power of\n" + "BUG-type moves."); + +static const u8 gItemDescription_AmuletCoin[] = _( + "Doubles money in\n" + "battle if the holder\n" + "takes part."); + +static const u8 gItemDescription_CleanseTag[] = _( + "A hold item that\n" + "helps repel wild\n" + "POKéMON."); + +static const u8 gItemDescription_SoulDew[] = _( + "Hold item: Raises\n" + "SP. ATK & SP. DEF\n" + "of LATIOS & LATIAS."); + +static const u8 gItemDescription_DeepSeaTooth[] = _( + "A hold item that\n" + "raises the SP. ATK\n" + "of CLAMPERL."); + +static const u8 gItemDescription_DeepSeaScale[] = _( + "A hold item that\n" + "raises the SP. DEF\n" + "of CLAMPERL."); + +static const u8 gItemDescription_SmokeBall[] = _( + "A hold item that\n" + "can be used to flee\n" + "from a wild POKéMON."); + +static const u8 gItemDescription_Everstone[] = _( + "A wondrous stone\n" + "& a hold item that\n" + "prevents evolution."); + +static const u8 gItemDescription_FocusBand[] = _( + "A hold item that\n" + "occasionally\n" + "prevents fainting."); + +static const u8 gItemDescription_LuckyEgg[] = _( + "A hold item that\n" + "boosts EXP. points\n" + "earned in battle."); + +static const u8 gItemDescription_ScopeLens[] = _( + "A hold item that\n" + "raises the critical-\n" + "hit rate."); + +static const u8 gItemDescription_MetalCoat[] = _( + "A hold item that\n" + "raises the power of\n" + "STEEL-type moves."); + +static const u8 gItemDescription_Leftovers[] = _( + "A hold item that\n" + "gradually restores\n" + "HP in battle."); + +static const u8 gItemDescription_DragonScale[] = _( + "A strange scale\n" + "held by DRAGON-\n" + "type POKéMON."); + +static const u8 gItemDescription_LightBall[] = _( + "A hold item that\n" + "raises the SP. ATK\n" + "of PIKACHU."); + +static const u8 gItemDescription_SoftSand[] = _( + "A hold item that\n" + "raises the power of\n" + "GROUND-type moves."); + +static const u8 gItemDescription_HardStone[] = _( + "A hold item that\n" + "raises the power of\n" + "ROCK-type moves."); + +static const u8 gItemDescription_MiracleSeed[] = _( + "A hold item that\n" + "raises the power of\n" + "GRASS-type moves."); + +static const u8 gItemDescription_BlackGlasses[] = _( + "A hold item that\n" + "raises the power of\n" + "DARK-type moves."); + +static const u8 gItemDescription_BlackBelt[] = _( + "A hold item that\n" + "boosts FIGHTING-\n" + "type moves."); + +static const u8 gItemDescription_Magnet[] = _( + "A hold item that\n" + "boosts ELECTRIC-\n" + "type moves."); + +static const u8 gItemDescription_MysticWater[] = _( + "A hold item that\n" + "raises the power of\n" + "WATER-type moves."); + +static const u8 gItemDescription_SharpBeak[] = _( + "A hold item that\n" + "raises the power of\n" + "FLYING-type moves."); + +static const u8 gItemDescription_PoisonBarb[] = _( + "A hold item that\n" + "raises the power of\n" + "POISON-type moves."); + +static const u8 gItemDescription_NeverMeltIce[] = _( + "A hold item that\n" + "raises the power of\n" + "ICE-type moves."); + +static const u8 gItemDescription_SpellTag[] = _( + "A hold item that\n" + "raises the power of\n" + "GHOST-type moves."); + +static const u8 gItemDescription_TwistedSpoon[] = _( + "A hold item that\n" + "boosts PSYCHIC-\n" + "type moves."); + +static const u8 gItemDescription_Charcoal[] = _( + "A hold item that\n" + "raises the power of\n" + "FIRE-type moves."); + +static const u8 gItemDescription_DragonFang[] = _( + "A hold item that\n" + "raises the power of\n" + "DRAGON-type moves."); + +static const u8 gItemDescription_SilkScarf[] = _( + "A hold item that\n" + "raises the power of\n" + "NORMAL-type moves."); + +static const u8 gItemDescription_UpGrade[] = _( + "A peculiar box made\n" + "by SILPH CO."); + +static const u8 gItemDescription_ShellBell[] = _( + "A hold item that\n" + "restores HP upon\n" + "striking the foe."); + +static const u8 gItemDescription_SeaIncense[] = _( + "A hold item that\n" + "slightly boosts\n" + "WATER-type moves."); + +static const u8 gItemDescription_LaxIncense[] = _( + "A hold item that\n" + "slightly lowers the\n" + "foe’s accuracy."); + +static const u8 gItemDescription_LuckyPunch[] = _( + "A hold item that\n" + "raises CHANSEY’s\n" + "critical-hit rate."); + +static const u8 gItemDescription_MetalPowder[] = _( + "A hold item that\n" + "raises DEFENSE."); + +static const u8 gItemDescription_ThickClub[] = _( + "A bone of some\n" + "sort. It can be sold\n" + "cheaply."); + +static const u8 gItemDescription_Stick[] = _( + "A stick of leek.\n" + "It can be sold\n" + "cheaply."); + +static const u8 gItemDescription_RedScarf[] = _( + "A hold item that\n" + "raises COOL in\n" + "CONTESTS."); + +static const u8 gItemDescription_BlueScarf[] = _( + "A hold item that\n" + "raises BEAUTY in\n" + "CONTESTS."); + +static const u8 gItemDescription_PinkScarf[] = _( + "A hold item that\n" + "raises CUTE in\n" + "CONTESTS."); + +static const u8 gItemDescription_GreenScarf[] = _( + "A hold item that\n" + "raises SMART in\n" + "CONTESTS."); + +static const u8 gItemDescription_YellowScarf[] = _( + "A hold item that\n" + "raises TOUGH in\n" + "CONTESTS."); + +static const u8 gItemDescription_MachBike[] = _( + "A folding bicycle\n" + "that more than\n" + "doubles foot speed."); + +static const u8 gItemDescription_CoinCase[] = _( + "A case that holds\n" + "up to 9,999 COINS."); + +static const u8 gItemDescription_Itemfinder[] = _( + "A device that\n" + "signals an invisible\n" + "item by sound."); + +static const u8 gItemDescription_OldRod[] = _( + "Use by any body of\n" + "water to fish for\n" + "wild POKéMON."); + +static const u8 gItemDescription_GoodRod[] = _( + "A decent fishing\n" + "rod for catching\n" + "wild POKéMON."); + +static const u8 gItemDescription_SuperRod[] = _( + "The best fishing\n" + "rod for catching\n" + "wild POKéMON."); + +static const u8 gItemDescription_SSTicket[] = _( + "The ticket required\n" + "for sailing on a\n" + "ferry."); + +static const u8 gItemDescription_ContestPass[] = _( + "The pass required\n" + "for entering\n" + "POKéMON CONTESTS."); + +static const u8 gItemDescription_WailmerPail[] = _( + "A tool used for\n" + "watering BERRIES\n" + "and plants."); + +static const u8 gItemDescription_DevonGoods[] = _( + "A package that\n" + "contains DEVON’s\n" + "machine parts."); + +static const u8 gItemDescription_SootSack[] = _( + "A sack used to\n" + "gather and hold\n" + "volcanic ash."); + +static const u8 gItemDescription_BasementKey[] = _( + "The key for NEW\n" + "MAUVILLE beneath\n" + "MAUVILLE CITY."); + +static const u8 gItemDescription_AcroBike[] = _( + "A folding bicycle\n" + "capable of jumps\n" + "and wheelies."); + +static const u8 gItemDescription_PokeblockCase[] = _( + "A case for holding\n" + "{POKEBLOCK}S made with\n" + "a BERRY BLENDER."); + +static const u8 gItemDescription_Letter[] = _( + "A letter to STEVEN\n" + "from the PRESIDENT\n" + "of the DEVON CORP."); + +static const u8 gItemDescription_EonTicket[] = _( + "The ticket for a\n" + "ferry to a distant\n" + "southern island."); + +static const u8 gItemDescription_RedOrb[] = _( + "A red, glowing orb\n" + "said to contain an\n" + "ancient power."); + +static const u8 gItemDescription_BlueOrb[] = _( + "A blue, glowing orb\n" + "said to contain an\n" + "ancient power."); + +static const u8 gItemDescription_Scanner[] = _( + "A device found\n" + "inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_GoGoggles[] = _( + "Nifty goggles that\n" + "protect eyes from\n" + "desert sandstorms."); + +static const u8 gItemDescription_Meteorite[] = _( + "A meteorite found\n" + "at METEOR FALLS."); + +static const u8 gItemDescription_Room1Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room2Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room4Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_Room6Key[] = _( + "A key that opens a\n" + "door inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_StorageKey[] = _( + "The key to the\n" + "storage inside the\n" + "ABANDONED SHIP."); + +static const u8 gItemDescription_RootFossil[] = _( + "A fossil of an\n" + "ancient, seafloor-\n" + "dwelling POKéMON."); + +static const u8 gItemDescription_ClawFossil[] = _( + "A fossil of an\n" + "ancient, seafloor-\n" + "dwelling POKéMON."); + +static const u8 gItemDescription_DevonScope[] = _( + "A device by DEVON\n" + "that signals any\n" + "unseeable POKéMON."); + +static const u8 gItemDescription_TM01[] = _( + "Powerful, but makes\n" + "the user flinch if\n" + "hit by the foe."); + +static const u8 gItemDescription_TM02[] = _( + "Hooks and slashes\n" + "the foe with long,\n" + "sharp claws."); + +static const u8 gItemDescription_TM03[] = _( + "Generates an\n" + "ultrasonic wave\n" + "that may confuse."); + +static const u8 gItemDescription_TM04[] = _( + "Raises SP. ATK and\n" + "SP. DEF by focusing\n" + "the mind."); + +static const u8 gItemDescription_TM05[] = _( + "A savage roar that\n" + "makes the foe flee \n" + "to end the battle."); + +static const u8 gItemDescription_TM06[] = _( + "Poisons the foe\n" + "with a toxin that\n" + "gradually worsens."); + +static const u8 gItemDescription_TM07[] = _( + "Summons a hailstorm\n" + "that hurts all\n" + "types except ICE."); + +static const u8 gItemDescription_TM08[] = _( + "Bulks up the body\n" + "to boost both\n" + "ATTACK & DEFENSE."); + +static const u8 gItemDescription_TM09[] = _( + "Shoots 2 to 5 seeds\n" + "in a row to strike\n" + "the foe."); + +static const u8 gItemDescription_TM10[] = _( + "The attack power\n" + "varies among\n" + "different POKéMON."); + +static const u8 gItemDescription_TM11[] = _( + "Raises the power of\n" + "FIRE-type moves\n" + "for 5 turns."); + +static const u8 gItemDescription_TM12[] = _( + "Enrages the foe so\n" + "it can only use\n" + "attack moves."); + +static const u8 gItemDescription_TM13[] = _( + "Fires an icy cold\n" + "beam that may\n" + "freeze the foe."); + +static const u8 gItemDescription_TM14[] = _( + "A vicious snow-and-\n" + "wind attack that\n" + "may freeze the foe."); + +static const u8 gItemDescription_TM15[] = _( + "Powerful, but needs\n" + "recharging the\n" + "next turn."); + +static const u8 gItemDescription_TM16[] = _( + "Creates a wall of\n" + "light that lowers\n" + "SP. ATK damage."); + +static const u8 gItemDescription_TM17[] = _( + "Negates all damage,\n" + "but may fail if used\n" + "in succession."); + +static const u8 gItemDescription_TM18[] = _( + "Raises the power of\n" + "WATER-type moves\n" + "for 5 turns."); + +static const u8 gItemDescription_TM19[] = _( + "Recovers half the\n" + "HP of the damage \n" + "this move inflicts."); + +static const u8 gItemDescription_TM20[] = _( + "Prevents status\n" + "abnormality with a\n" + "mystical power."); + +static const u8 gItemDescription_TM21[] = _( + "The less the user\n" + "likes you, the more\n" + "powerful this move."); + +static const u8 gItemDescription_TM22[] = _( + "Absorbs sunlight in\n" + "the 1st turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_TM23[] = _( + "Slams the foe with\n" + "a hard tail. It may\n" + "lower DEFENSE."); + +static const u8 gItemDescription_TM24[] = _( + "A powerful electric\n" + "attack that may\n" + "cause paralysis."); + +static const u8 gItemDescription_TM25[] = _( + "Strikes the foe\n" + "with a thunderbolt.\n" + "It may paralyze."); + +static const u8 gItemDescription_TM26[] = _( + "Causes a quake\n" + "that has no effect\n" + "on flying foes."); + +static const u8 gItemDescription_TM27[] = _( + "The more the user\n" + "likes you, the more\n" + "powerful this move."); + +static const u8 gItemDescription_TM28[] = _( + "Digs underground\n" + "the 1st turn, then\n" + "strikes next turn."); + +static const u8 gItemDescription_TM29[] = _( + "A powerful psychic\n" + "attack that may\n" + "lower SP. DEF."); + +static const u8 gItemDescription_TM30[] = _( + "Hurls a dark lump\n" + "at the foe. It may\n" + "lower SP. DEF."); + +static const u8 gItemDescription_TM31[] = _( + "Destroys barriers\n" + "like LIGHT SCREEN\n" + "and causes damage."); + +static const u8 gItemDescription_TM32[] = _( + "Creates illusory\n" + "copies to enhance\n" + "elusiveness."); + +static const u8 gItemDescription_TM33[] = _( + "Creates a wall of\n" + "light that weakens\n" + "physical attacks."); + +static const u8 gItemDescription_TM34[] = _( + "Zaps the foe with a\n" + "jolt of electricity\n" + "that never misses."); + +static const u8 gItemDescription_TM35[] = _( + "Looses a stream of\n" + "fire that may burn\n" + "the foe."); + +static const u8 gItemDescription_TM36[] = _( + "Hurls sludge at the\n" + "foe. It may poison\n" + "the foe."); + +static const u8 gItemDescription_TM37[] = _( + "Causes a sandstorm\n" + "that hits the foe\n" + "over several turns."); + +static const u8 gItemDescription_TM38[] = _( + "A powerful fire\n" + "attack that may\n" + "burn the foe."); + +static const u8 gItemDescription_TM39[] = _( + "Stops the foe from\n" + "moving with rocks.\n" + "May lower SPEED."); + +static const u8 gItemDescription_TM40[] = _( + "An extremely fast\n" + "attack that can’t\n" + "be avoided."); + +static const u8 gItemDescription_TM41[] = _( + "Prevents the foe\n" + "from using the same\n" + "move in a row."); + +static const u8 gItemDescription_TM42[] = _( + "Raises ATTACK when\n" + "poisoned, burned,\n" + "or paralyzed."); + +static const u8 gItemDescription_TM43[] = _( + "Adds an effect to\n" + "attack depending\n" + "on the location."); + +static const u8 gItemDescription_TM44[] = _( + "The user sleeps for\n" + "2 turns to restore\n" + "health and status."); + +static const u8 gItemDescription_TM45[] = _( + "Makes it tough to\n" + "attack a foe of the\n" + "opposite gender."); + +static const u8 gItemDescription_TM46[] = _( + "While attacking,\n" + "it may steal the\n" + "foe’s held item."); + +static const u8 gItemDescription_TM47[] = _( + "Spreads hard-edged\n" + "wings and slams\n" + "into the foe."); + +static const u8 gItemDescription_TM48[] = _( + "Switches abilities\n" + "with the foe on the\n" + "turn this is used."); + +static const u8 gItemDescription_TM49[] = _( + "Steals the effects\n" + "of the move the foe\n" + "is trying to use."); + +static const u8 gItemDescription_TM50[] = _( + "Enables full-power\n" + "attack, but sharply\n" + "lowers SP. ATK."); + +static const u8 gItemDescription_HM01[] = _( + "Attacks the foe\n" + "with sharp blades\n" + "or claws."); + +static const u8 gItemDescription_HM02[] = _( + "Flies up on the\n" + "first turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_HM03[] = _( + "Creates a huge\n" + "wave, then crashes\n" + "it down on the foe."); + +static const u8 gItemDescription_HM04[] = _( + "Builds enormous\n" + "power, then slams\n" + "the foe."); + +static const u8 gItemDescription_HM05[] = _( + "Looses a powerful\n" + "blast of light that\n" + "reduces accuracy."); + +static const u8 gItemDescription_HM06[] = _( + "A rock-crushingly\n" + "tough attack that\n" + "may lower DEFENSE."); + +static const u8 gItemDescription_HM07[] = _( + "Attacks the foe\n" + "with enough power\n" + "to climb waterfalls."); + +static const u8 gItemDescription_HM08[] = _( + "Dives underwater\n" + "the 1st turn, then\n" + "attacks next turn."); + +static const u8 gItemDescription_Dummy[] = _(""); diff --git a/src/data/items_de.h b/src/data/items_de.h new file mode 100644 index 000000000..0453a95d0 --- /dev/null +++ b/src/data/items_de.h @@ -0,0 +1,5587 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MEISTERBALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MasterBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("HYPERBALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_UltraBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("SUPERBALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKéBALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARIBALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SafariBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NETZBALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NetBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("TAUCHBALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DiveBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NESTBALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NestBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("WIEDERBALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RepeatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMERBALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TimerBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXUSBALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LuxuryBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIERBALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PremierBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + { + .name = _("TRANK"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gItemDescription_Potion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GEGENGIFT"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Antidote, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FEUERHEILER"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BurnHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("EISHEILER"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_IceHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AUFWECKER"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Awakening, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARA-HEILER"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ParalyzeHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-GENESUNG"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_FullRestore, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-TRANK"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPERTRANK"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_HyperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPERTRANK"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_SuperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPERHEILER"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FullHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BELEBER"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Revive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TOP-BELEBER"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MaxRevive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TAFELWASSER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_FreshWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SPRUDEL"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gItemDescription_SodaPop, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LIMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gItemDescription_Lemonade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("KUHMUH-MILCH"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_MoomooMilk, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGIESTAUB"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("KRAFTWURZEL"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyRoot, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEILPUDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HealPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("VITALKRAUT"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RevivalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ÄTHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Ether, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("TOP-ÄTHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxEther, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIER"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Elixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("TOP-ELIXIER"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxElixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVAKEKS"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LavaCookie, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLAUE FLÖTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GELBE FLÖTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ROTE FLÖTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SCHW. FLÖTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_BlackFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEISSE FLÖTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gItemDescription_WhiteFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BEERENSAFT"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gItemDescription_BerryJuice, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ZAUBERASCHE"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SacredAsh, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KÜSTENSALZ"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalSalt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KÜSTENSCHALE"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalShell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PURPURSTÜCK"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("INDIGOSTÜCK"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GELBSTÜCK"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRÜNSTÜCK"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KP-PLUS"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Protein, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EISEN"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Iron, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBON"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Carbos, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KALZIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Calcium, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SONDERBONBON"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RareCandy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AP-PLUS"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINK"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Zinc, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AP-TOP"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPMax, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MEGABLOCK"), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GuardSpec, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("ANGRIFFPLUS"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DireHit, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-ANGRIFF"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAttack, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-ABWEHR"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XDefend, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-TEMPO"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-TREFFER"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAccuracy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X-SPEZIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpecial, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKéPUPPE"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeDoll, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("ENECO-RUTE"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FluffyTail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUPERSCHUTZ"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_SuperRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TOP-SCHUTZ"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gItemDescription_MaxRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FLUCHTSEIL"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EscapeRope, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHUTZ"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_Repel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SONNENSTEIN"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SunStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MONDSTEIN"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MoonStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FEUERSTEIN"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FireStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DONNERSTEIN"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ThunderStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WASSERSTEIN"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaterStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLATTSTEIN"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LeafStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MINIPILZ"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TinyMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RIESENPILZ"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PERLE"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Pearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RIESENPERLE"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigPearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STERNENSTAUB"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Stardust, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STERNENSTÜCK"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StarPiece, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Nugget, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HERZSCHUPPE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HeartScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZIGZAGBRIEF"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OrangeMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HAFENBRIEF"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HarborMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITZERBRIEF"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GlitterMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("EILBRIEF"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MechMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WALDBRIEF"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WoodMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WELLENBRIEF"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaveMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("PERLENBRIEF"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BeadMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("DUNKELBRIEF"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShadowMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPENBRIEF"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TropicMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("TRAUMBRIEF"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DreamMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("EDELBRIEF"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FabMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETROBRIEF"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RetroMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + { + .name = _("AMRENABEERE"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gItemDescription_CheriBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MARONBEERE"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gItemDescription_ChestoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PIRSIFBEERE"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gItemDescription_PechaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRAGIABEERE"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gItemDescription_RawstBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("WILBIRBEERE"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gItemDescription_AspearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("JONAGOBEERE"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gItemDescription_LeppaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("SINELBEERE"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gItemDescription_OranBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIMBEERE"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gItemDescription_PersimBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PRUNUSBEERE"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gItemDescription_LumBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("TSITRUBEERE"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gItemDescription_SitrusBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("GIEFEBEERE"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gItemDescription_FigyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKIBEERE"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gItemDescription_WikiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOBEERE"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gItemDescription_MagoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GAUVEBEERE"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gItemDescription_AguavBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YAPABEERE"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gItemDescription_IapapaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HIMMIHBEERE"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RazzBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MORBBEERE"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlukBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANABBEERE"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NanabBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NIRBEBEERE"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WepearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SANANABEERE"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinapBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRANABEERE"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PomegBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SETANGBEERE"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_KelpsyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOTBEERE"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_QualotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONMELBEERE"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HondewBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LABRUSBEERE"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GrepaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMOTBEERE"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TamatoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SAIMBEERE"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CornnBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOSTBEERE"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MagostBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTABEERE"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RabutaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TRONZIBEERE"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NomelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KIWANBEERE"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SpelonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PALLMBEERE"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PamtreBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WASMELBEERE"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WatmelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURINBEERE"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DurinBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYRTILBEERE"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BelueBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LYDZIBEERE"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_LiechiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LINGANBEERE"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_GanlonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALKABEERE"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gItemDescription_SalacBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAHAYBEERE"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_PetayaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APIKOBEERE"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_ApicotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSATBEERE"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gItemDescription_LansatBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KRAMBOBEERE"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gItemDescription_StarfBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMABEERE"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnigmaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLENDPUDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gItemDescription_BrightPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHLOHKRAUT"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gItemDescription_WhiteHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHOBAND"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gItemDescription_MachoBrace, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EP-TEILER"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gItemDescription_ExpShare, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FLINKKLAUE"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gItemDescription_QuickClaw, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SANFTGLOCKE"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gItemDescription_SootheBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTALKRAUT"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gItemDescription_MentalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAHLBAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gItemDescription_ChoiceBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING-STEIN"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gItemDescription_KingsRock, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILBERSTAUB"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilverPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MÜNZAMULETT"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gItemDescription_AmuletCoin, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHUTZBAND"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gItemDescription_CleanseTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEELENTAU"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gItemDescription_SoulDew, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ABYSSZAHN"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaTooth, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ABYSSPLATTE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAUCHBALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gItemDescription_SmokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EWIGSTEIN"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gItemDescription_Everstone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOKUS-BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gItemDescription_FocusBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GLÜCKS-EI"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gItemDescription_LuckyEgg, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE-LINSE"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gItemDescription_ScopeLens, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METALLMANTEL"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MetalCoat, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ÜBERRESTE"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gItemDescription_Leftovers, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRACHENHAUT"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gItemDescription_DragonScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KUGELBLITZ"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gItemDescription_LightBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PUDERSAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SoftSand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRANITSTEIN"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_HardStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WUNDERSAAT"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MiracleSeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHATTENGLAS"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackGlasses, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCHWARZGURT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackBelt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Magnet, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZAUBERWASSER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MysticWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HACKATTACK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SharpBeak, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GIFTSTICH"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_PoisonBarb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EWIGES EIS"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_NeverMeltIce, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BANNSTICKER"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SpellTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KRÜMMLÖFFEL"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_TwistedSpoon, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HOLZKOHLE"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Charcoal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRACHENZAHN"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_DragonFang, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEIDENSCHAL"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gItemDescription_UpGrade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEEGESANG"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gItemDescription_ShellBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEERAUCH"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gItemDescription_SeaIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAXRAUCH"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gItemDescription_LaxIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gItemDescription_LuckyPunch, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METALLSTAUB"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gItemDescription_MetalPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KAMPFKNOCHEN"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gItemDescription_ThickClub, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAUCHSTANGE"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gItemDescription_Stick, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROTER SCHAL"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLAUER SCHAL"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROSA SCHAL"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GRÜNER SCHAL"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GELBER SCHAL"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EILRAD"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MachBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MÜNZKORB"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CoinCase, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DETEKTOR"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Itemfinder, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ANGEL"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OldRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROFIANGEL"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoodRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPERANGEL"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SuperRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("BOOTSTICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SSTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WETTB.-KARTE"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ContestPass, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMERKANNE"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WailmerPail, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON-WAREN"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonGoods, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ASCHETASCHE"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SootSack, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELLERÖFFNER"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BasementKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KUNSTRAD"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_AcroBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK}BOX"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeblockCase, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BRIEF"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Letter, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ÄON-TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EonTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("ROTE KUGEL"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLAUE KUGEL"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Scanner, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WÜSTENGLAS"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoGoggles, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORIT"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Meteorite, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K1-SCHLÜSSEL"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room1Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K2-SCHLÜSSEL"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room2Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K4-SCHLÜSSEL"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room4Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("K6-SCHLÜSSEL"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room6Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("L.-SCHLÜSSEL"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StorageKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WURZELFOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RootFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KLAUENFOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ClawFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON-SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonScope, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM01"), + .itemId = ITEM_TM01, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM01, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM02, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM03, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM04, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM05, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM06, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM07, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM08, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM09, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM10, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM11, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM12, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM13, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM14, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM15, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM16, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM17, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM18, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM19, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM20, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM21, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM22, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM23, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM24, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM25, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM26, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM27, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM28, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM29, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM30, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM31, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM32, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM33, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM34, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM35, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM36, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM37, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM38, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM39, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM40, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM41, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM42, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM43, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM44, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM45, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM46, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM47, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM48, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM49, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM50, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM01"), + .itemId = ITEM_HM01, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM01, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM02"), + .itemId = ITEM_HM02, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM02, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM03"), + .itemId = ITEM_HM03, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM03, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM04"), + .itemId = ITEM_HM04, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM04, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM05"), + .itemId = ITEM_HM05, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM05, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM06"), + .itemId = ITEM_HM06, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM06, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM07"), + .itemId = ITEM_HM07, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM07, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("VM08"), + .itemId = ITEM_HM08, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM08, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/src/data/items_en.h b/src/data/items_en.h new file mode 100644 index 000000000..a3e822370 --- /dev/null +++ b/src/data/items_en.h @@ -0,0 +1,5587 @@ +const struct Item gItems[] = +{ + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MASTER BALL"), + .itemId = ITEM_MASTER_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MasterBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 0, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 0, + }, + { + .name = _("ULTRA BALL"), + .itemId = ITEM_ULTRA_BALL, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_UltraBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 1, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 1, + }, + { + .name = _("GREAT BALL"), + .itemId = ITEM_GREAT_BALL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 2, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 2, + }, + { + .name = _("POKé BALL"), + .itemId = ITEM_POKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 3, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 3, + }, + { + .name = _("SAFARI BALL"), + .itemId = ITEM_SAFARI_BALL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SafariBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 4, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 4, + }, + { + .name = _("NET BALL"), + .itemId = ITEM_NET_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NetBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 5, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 5, + }, + { + .name = _("DIVE BALL"), + .itemId = ITEM_DIVE_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DiveBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 6, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 6, + }, + { + .name = _("NEST BALL"), + .itemId = ITEM_NEST_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NestBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 7, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 7, + }, + { + .name = _("REPEAT BALL"), + .itemId = ITEM_REPEAT_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RepeatBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 8, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 8, + }, + { + .name = _("TIMER BALL"), + .itemId = ITEM_TIMER_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TimerBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 9, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 9, + }, + { + .name = _("LUXURY BALL"), + .itemId = ITEM_LUXURY_BALL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LuxuryBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 10, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 10, + }, + { + .name = _("PREMIER BALL"), + .itemId = ITEM_PREMIER_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PremierBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_POKE_BALLS, + .type = 11, + .fieldUseFunc = NULL, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_PokeBall, + .secondaryId = 11, + }, + { + .name = _("POTION"), + .itemId = ITEM_POTION, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 20, + .description = gItemDescription_Potion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ANTIDOTE"), + .itemId = ITEM_ANTIDOTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Antidote, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BURN HEAL"), + .itemId = ITEM_BURN_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BurnHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ICE HEAL"), + .itemId = ITEM_ICE_HEAL, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_IceHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("AWAKENING"), + .itemId = ITEM_AWAKENING, + .price = 250, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Awakening, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PARLYZ HEAL"), + .itemId = ITEM_PARALYZE_HEAL, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ParalyzeHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL RESTORE"), + .itemId = ITEM_FULL_RESTORE, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_FullRestore, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX POTION"), + .itemId = ITEM_MAX_POTION, + .price = 2500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HYPER POTION"), + .itemId = ITEM_HYPER_POTION, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_HyperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SUPER POTION"), + .itemId = ITEM_SUPER_POTION, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_SuperPotion, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FULL HEAL"), + .itemId = ITEM_FULL_HEAL, + .price = 600, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FullHeal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVE"), + .itemId = ITEM_REVIVE, + .price = 1500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Revive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MAX REVIVE"), + .itemId = ITEM_MAX_REVIVE, + .price = 4000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MaxRevive, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FRESH WATER"), + .itemId = ITEM_FRESH_WATER, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_FreshWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SODA POP"), + .itemId = ITEM_SODA_POP, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 60, + .description = gItemDescription_SodaPop, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEMONADE"), + .itemId = ITEM_LEMONADE, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 80, + .description = gItemDescription_Lemonade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("MOOMOO MILK"), + .itemId = ITEM_MOOMOO_MILK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_MoomooMilk, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGYPOWDER"), + .itemId = ITEM_ENERGY_POWDER, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ENERGY ROOT"), + .itemId = ITEM_ENERGY_ROOT, + .price = 800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnergyRoot, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("HEAL POWDER"), + .itemId = ITEM_HEAL_POWDER, + .price = 450, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HealPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("REVIVAL HERB"), + .itemId = ITEM_REVIVAL_HERB, + .price = 2800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RevivalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ETHER"), + .itemId = ITEM_ETHER, + .price = 1200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Ether, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ETHER"), + .itemId = ITEM_MAX_ETHER, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxEther, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ELIXIR"), + .itemId = ITEM_ELIXIR, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 10, + .description = gItemDescription_Elixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("MAX ELIXIR"), + .itemId = ITEM_MAX_ELIXIR, + .price = 4500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 255, + .description = gItemDescription_MaxElixir, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("LAVA COOKIE"), + .itemId = ITEM_LAVA_COOKIE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LavaCookie, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLUE FLUTE"), + .itemId = ITEM_BLUE_FLUTE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("YELLOW FLUTE"), + .itemId = ITEM_YELLOW_FLUTE, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RED FLUTE"), + .itemId = ITEM_RED_FLUTE, + .price = 300, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("BLACK FLUTE"), + .itemId = ITEM_BLACK_FLUTE, + .price = 400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 50, + .description = gItemDescription_BlackFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE FLUTE"), + .itemId = ITEM_WHITE_FLUTE, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 150, + .description = gItemDescription_WhiteFlute, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BERRY JUICE"), + .itemId = ITEM_BERRY_JUICE, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 20, + .description = gItemDescription_BerryJuice, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SACRED ASH"), + .itemId = ITEM_SACRED_ASH, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SacredAsh, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SALT"), + .itemId = ITEM_SHOAL_SALT, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalSalt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHOAL SHELL"), + .itemId = ITEM_SHOAL_SHELL, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShoalShell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SHARD"), + .itemId = ITEM_RED_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SHARD"), + .itemId = ITEM_BLUE_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SHARD"), + .itemId = ITEM_YELLOW_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SHARD"), + .itemId = ITEM_GREEN_SHARD, + .price = 200, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenShard, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HP UP"), + .itemId = ITEM_HP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PROTEIN"), + .itemId = ITEM_PROTEIN, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Protein, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IRON"), + .itemId = ITEM_IRON, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Iron, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CARBOS"), + .itemId = ITEM_CARBOS, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Carbos, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CALCIUM"), + .itemId = ITEM_CALCIUM, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Calcium, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RARE CANDY"), + .itemId = ITEM_RARE_CANDY, + .price = 4800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RareCandy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP UP"), + .itemId = ITEM_PP_UP, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPUp, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ZINC"), + .itemId = ITEM_ZINC, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Zinc, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PP MAX"), + .itemId = ITEM_PP_MAX, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PPMax, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPUp, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GUARD SPEC."), + .itemId = ITEM_GUARD_SPEC, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GuardSpec, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("DIRE HIT"), + .itemId = ITEM_DIRE_HIT, + .price = 650, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DireHit, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ATTACK"), + .itemId = ITEM_X_ATTACK, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAttack, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X DEFEND"), + .itemId = ITEM_X_DEFEND, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XDefend, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPEED"), + .itemId = ITEM_X_SPEED, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X ACCURACY"), + .itemId = ITEM_X_ACCURACY, + .price = 950, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XAccuracy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("X SPECIAL"), + .itemId = ITEM_X_SPECIAL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_XSpecial, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_StatIncrease, + .secondaryId = 0, + }, + { + .name = _("POKé DOLL"), + .itemId = ITEM_POKE_DOLL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeDoll, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("FLUFFY TAIL"), + .itemId = ITEM_FLUFFY_TAIL, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FluffyTail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 2, + .battleUseFunc = ItemUseInBattle_Escape, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUPER REPEL"), + .itemId = ITEM_SUPER_REPEL, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 200, + .description = gItemDescription_SuperRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAX REPEL"), + .itemId = ITEM_MAX_REPEL, + .price = 700, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 250, + .description = gItemDescription_MaxRepel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ESCAPE ROPE"), + .itemId = ITEM_ESCAPE_ROPE, + .price = 550, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EscapeRope, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("REPEL"), + .itemId = ITEM_REPEL, + .price = 350, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 100, + .description = gItemDescription_Repel, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_Repel, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SUN STONE"), + .itemId = ITEM_SUN_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SunStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MOON STONE"), + .itemId = ITEM_MOON_STONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MoonStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FIRE STONE"), + .itemId = ITEM_FIRE_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FireStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THUNDERSTONE"), + .itemId = ITEM_THUNDER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ThunderStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATER STONE"), + .itemId = ITEM_WATER_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaterStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEAF STONE"), + .itemId = ITEM_LEAF_STONE, + .price = 2100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_LeafStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TINYMUSHROOM"), + .itemId = ITEM_TINY_MUSHROOM, + .price = 500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TinyMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG MUSHROOM"), + .itemId = ITEM_BIG_MUSHROOM, + .price = 5000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigMushroom, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PEARL"), + .itemId = ITEM_PEARL, + .price = 1400, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Pearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BIG PEARL"), + .itemId = ITEM_BIG_PEARL, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BigPearl, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARDUST"), + .itemId = ITEM_STARDUST, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Stardust, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STAR PIECE"), + .itemId = ITEM_STAR_PIECE, + .price = 9800, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StarPiece, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NUGGET"), + .itemId = ITEM_NUGGET, + .price = 10000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Nugget, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HEART SCALE"), + .itemId = ITEM_HEART_SCALE, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HeartScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ORANGE MAIL"), + .itemId = ITEM_ORANGE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OrangeMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARBOR MAIL"), + .itemId = ITEM_HARBOR_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HarborMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("GLITTER MAIL"), + .itemId = ITEM_GLITTER_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GlitterMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("MECH MAIL"), + .itemId = ITEM_MECH_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MechMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 3, + }, + { + .name = _("WOOD MAIL"), + .itemId = ITEM_WOOD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WoodMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 4, + }, + { + .name = _("WAVE MAIL"), + .itemId = ITEM_WAVE_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WaveMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 5, + }, + { + .name = _("BEAD MAIL"), + .itemId = ITEM_BEAD_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BeadMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 6, + }, + { + .name = _("SHADOW MAIL"), + .itemId = ITEM_SHADOW_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ShadowMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 7, + }, + { + .name = _("TROPIC MAIL"), + .itemId = ITEM_TROPIC_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TropicMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 8, + }, + { + .name = _("DREAM MAIL"), + .itemId = ITEM_DREAM_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DreamMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 9, + }, + { + .name = _("FAB MAIL"), + .itemId = ITEM_FAB_MAIL, + .price = 50, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_FabMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 10, + }, + { + .name = _("RETRO MAIL"), + .itemId = ITEM_RETRO_MAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RetroMail, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 0, + .fieldUseFunc = ItemUseOutOfBattle_Mail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 11, + }, + { + .name = _("CHERI BERRY"), + .itemId = ITEM_CHERI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PAR, + .holdEffectParam = 0, + .description = gItemDescription_CheriBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("CHESTO BERRY"), + .itemId = ITEM_CHESTO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_SLP, + .holdEffectParam = 0, + .description = gItemDescription_ChestoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PECHA BERRY"), + .itemId = ITEM_PECHA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_PSN, + .holdEffectParam = 0, + .description = gItemDescription_PechaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("RAWST BERRY"), + .itemId = ITEM_RAWST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_BRN, + .holdEffectParam = 0, + .description = gItemDescription_RawstBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("ASPEAR BERRY"), + .itemId = ITEM_ASPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_FRZ, + .holdEffectParam = 0, + .description = gItemDescription_AspearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LEPPA BERRY"), + .itemId = ITEM_LEPPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_PP, + .holdEffectParam = 10, + .description = gItemDescription_LeppaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_PPRecovery, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_PPRecovery, + .secondaryId = 0, + }, + { + .name = _("ORAN BERRY"), + .itemId = ITEM_ORAN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 10, + .description = gItemDescription_OranBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("PERSIM BERRY"), + .itemId = ITEM_PERSIM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_CONFUSION, + .holdEffectParam = 0, + .description = gItemDescription_PersimBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("LUM BERRY"), + .itemId = ITEM_LUM_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CURE_STATUS, + .holdEffectParam = 0, + .description = gItemDescription_LumBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("SITRUS BERRY"), + .itemId = ITEM_SITRUS_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RESTORE_HP, + .holdEffectParam = 30, + .description = gItemDescription_SitrusBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_Medicine, + .secondaryId = 0, + }, + { + .name = _("FIGY BERRY"), + .itemId = ITEM_FIGY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, + .holdEffectParam = 8, + .description = gItemDescription_FigyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WIKI BERRY"), + .itemId = ITEM_WIKI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_DRY, + .holdEffectParam = 8, + .description = gItemDescription_WikiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGO BERRY"), + .itemId = ITEM_MAGO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, + .holdEffectParam = 8, + .description = gItemDescription_MagoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AGUAV BERRY"), + .itemId = ITEM_AGUAV_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, + .holdEffectParam = 8, + .description = gItemDescription_AguavBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("IAPAPA BERRY"), + .itemId = ITEM_IAPAPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, + .holdEffectParam = 8, + .description = gItemDescription_IapapaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RAZZ BERRY"), + .itemId = ITEM_RAZZ_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RazzBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUK BERRY"), + .itemId = ITEM_BLUK_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlukBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NANAB BERRY"), + .itemId = ITEM_NANAB_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NanabBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WEPEAR BERRY"), + .itemId = ITEM_WEPEAR_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WepearBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINAP BERRY"), + .itemId = ITEM_PINAP_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinapBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POMEG BERRY"), + .itemId = ITEM_POMEG_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PomegBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KELPSY BERRY"), + .itemId = ITEM_KELPSY_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_KelpsyBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUALOT BERRY"), + .itemId = ITEM_QUALOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_QualotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HONDEW BERRY"), + .itemId = ITEM_HONDEW_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HondewBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREPA BERRY"), + .itemId = ITEM_GREPA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GrepaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TAMATO BERRY"), + .itemId = ITEM_TAMATO_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TamatoBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CORNN BERRY"), + .itemId = ITEM_CORNN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CornnBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGOST BERRY"), + .itemId = ITEM_MAGOST_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MagostBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RABUTA BERRY"), + .itemId = ITEM_RABUTA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RabutaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NOMEL BERRY"), + .itemId = ITEM_NOMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_NomelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELON BERRY"), + .itemId = ITEM_SPELON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SpelonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PAMTRE BERRY"), + .itemId = ITEM_PAMTRE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PamtreBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WATMEL BERRY"), + .itemId = ITEM_WATMEL_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WatmelBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DURIN BERRY"), + .itemId = ITEM_DURIN_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DurinBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BELUE BERRY"), + .itemId = ITEM_BELUE_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BelueBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIECHI BERRY"), + .itemId = ITEM_LIECHI_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_LiechiBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GANLON BERRY"), + .itemId = ITEM_GANLON_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_GanlonBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SALAC BERRY"), + .itemId = ITEM_SALAC_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SPEED_UP, + .holdEffectParam = 4, + .description = gItemDescription_SalacBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PETAYA BERRY"), + .itemId = ITEM_PETAYA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, + .holdEffectParam = 4, + .description = gItemDescription_PetayaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("APICOT BERRY"), + .itemId = ITEM_APICOT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, + .holdEffectParam = 4, + .description = gItemDescription_ApicotBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LANSAT BERRY"), + .itemId = ITEM_LANSAT_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_CRITICAL_UP, + .holdEffectParam = 4, + .description = gItemDescription_LansatBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STARF BERRY"), + .itemId = ITEM_STARF_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, + .holdEffectParam = 4, + .description = gItemDescription_StarfBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ENIGMA BERRY"), + .itemId = ITEM_ENIGMA_BERRY, + .price = 20, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EnigmaBerry, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_BERRIES, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, + .battleUsage = 1, + .battleUseFunc = ItemUseInBattle_EnigmaBerry, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BRIGHTPOWDER"), + .itemId = ITEM_BRIGHT_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 10, + .description = gItemDescription_BrightPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WHITE HERB"), + .itemId = ITEM_WHITE_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_RESTORE_STATS, + .holdEffectParam = 0, + .description = gItemDescription_WhiteHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACHO BRACE"), + .itemId = ITEM_MACHO_BRACE, + .price = 3000, + .holdEffect = HOLD_EFFECT_MACHO_BRACE, + .holdEffectParam = 0, + .description = gItemDescription_MachoBrace, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EXP. SHARE"), + .itemId = ITEM_EXP_SHARE, + .price = 3000, + .holdEffect = HOLD_EFFECT_EXP_SHARE, + .holdEffectParam = 0, + .description = gItemDescription_ExpShare, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("QUICK CLAW"), + .itemId = ITEM_QUICK_CLAW, + .price = 100, + .holdEffect = HOLD_EFFECT_QUICK_CLAW, + .holdEffectParam = 20, + .description = gItemDescription_QuickClaw, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOTHE BELL"), + .itemId = ITEM_SOOTHE_BELL, + .price = 100, + .holdEffect = HOLD_EFFECT_HAPPINESS_UP, + .holdEffectParam = 0, + .description = gItemDescription_SootheBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MENTAL HERB"), + .itemId = ITEM_MENTAL_HERB, + .price = 100, + .holdEffect = HOLD_EFFECT_CURE_ATTRACT, + .holdEffectParam = 0, + .description = gItemDescription_MentalHerb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHOICE BAND"), + .itemId = ITEM_CHOICE_BAND, + .price = 100, + .holdEffect = HOLD_EFFECT_CHOICE_BAND, + .holdEffectParam = 0, + .description = gItemDescription_ChoiceBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("KING’S ROCK"), + .itemId = ITEM_KINGS_ROCK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLINCH, + .holdEffectParam = 10, + .description = gItemDescription_KingsRock, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILVERPOWDER"), + .itemId = ITEM_SILVER_POWDER, + .price = 100, + .holdEffect = HOLD_EFFECT_BUG_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilverPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("AMULET COIN"), + .itemId = ITEM_AMULET_COIN, + .price = 100, + .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, + .holdEffectParam = 10, + .description = gItemDescription_AmuletCoin, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLEANSE TAG"), + .itemId = ITEM_CLEANSE_TAG, + .price = 200, + .holdEffect = HOLD_EFFECT_REPEL, + .holdEffectParam = 0, + .description = gItemDescription_CleanseTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOUL DEW"), + .itemId = ITEM_SOUL_DEW, + .price = 200, + .holdEffect = HOLD_EFFECT_SOUL_DEW, + .holdEffectParam = 0, + .description = gItemDescription_SoulDew, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEATOOTH"), + .itemId = ITEM_DEEP_SEA_TOOTH, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaTooth, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEEPSEASCALE"), + .itemId = ITEM_DEEP_SEA_SCALE, + .price = 200, + .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, + .holdEffectParam = 0, + .description = gItemDescription_DeepSeaScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SMOKE BALL"), + .itemId = ITEM_SMOKE_BALL, + .price = 200, + .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, + .holdEffectParam = 0, + .description = gItemDescription_SmokeBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EVERSTONE"), + .itemId = ITEM_EVERSTONE, + .price = 200, + .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, + .holdEffectParam = 0, + .description = gItemDescription_Everstone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("FOCUS BAND"), + .itemId = ITEM_FOCUS_BAND, + .price = 200, + .holdEffect = HOLD_EFFECT_FOCUS_BAND, + .holdEffectParam = 10, + .description = gItemDescription_FocusBand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY EGG"), + .itemId = ITEM_LUCKY_EGG, + .price = 200, + .holdEffect = HOLD_EFFECT_LUCKY_EGG, + .holdEffectParam = 0, + .description = gItemDescription_LuckyEgg, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCOPE LENS"), + .itemId = ITEM_SCOPE_LENS, + .price = 200, + .holdEffect = HOLD_EFFECT_SCOPE_LENS, + .holdEffectParam = 0, + .description = gItemDescription_ScopeLens, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL COAT"), + .itemId = ITEM_METAL_COAT, + .price = 100, + .holdEffect = HOLD_EFFECT_STEEL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MetalCoat, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LEFTOVERS"), + .itemId = ITEM_LEFTOVERS, + .price = 200, + .holdEffect = HOLD_EFFECT_LEFTOVERS, + .holdEffectParam = 10, + .description = gItemDescription_Leftovers, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON SCALE"), + .itemId = ITEM_DRAGON_SCALE, + .price = 2100, + .holdEffect = HOLD_EFFECT_DRAGON_SCALE, + .holdEffectParam = 10, + .description = gItemDescription_DragonScale, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LIGHT BALL"), + .itemId = ITEM_LIGHT_BALL, + .price = 100, + .holdEffect = HOLD_EFFECT_LIGHT_BALL, + .holdEffectParam = 0, + .description = gItemDescription_LightBall, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOFT SAND"), + .itemId = ITEM_SOFT_SAND, + .price = 100, + .holdEffect = HOLD_EFFECT_GROUND_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SoftSand, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HARD STONE"), + .itemId = ITEM_HARD_STONE, + .price = 100, + .holdEffect = HOLD_EFFECT_ROCK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_HardStone, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MIRACLE SEED"), + .itemId = ITEM_MIRACLE_SEED, + .price = 100, + .holdEffect = HOLD_EFFECT_GRASS_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MiracleSeed, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACKGLASSES"), + .itemId = ITEM_BLACK_GLASSES, + .price = 100, + .holdEffect = HOLD_EFFECT_DARK_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackGlasses, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLACK BELT"), + .itemId = ITEM_BLACK_BELT, + .price = 100, + .holdEffect = HOLD_EFFECT_FIGHTING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_BlackBelt, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MAGNET"), + .itemId = ITEM_MAGNET, + .price = 100, + .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Magnet, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MYSTIC WATER"), + .itemId = ITEM_MYSTIC_WATER, + .price = 100, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 10, + .description = gItemDescription_MysticWater, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHARP BEAK"), + .itemId = ITEM_SHARP_BEAK, + .price = 100, + .holdEffect = HOLD_EFFECT_FLYING_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SharpBeak, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("POISON BARB"), + .itemId = ITEM_POISON_BARB, + .price = 100, + .holdEffect = HOLD_EFFECT_POISON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_PoisonBarb, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("NEVERMELTICE"), + .itemId = ITEM_NEVER_MELT_ICE, + .price = 100, + .holdEffect = HOLD_EFFECT_ICE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_NeverMeltIce, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SPELL TAG"), + .itemId = ITEM_SPELL_TAG, + .price = 100, + .holdEffect = HOLD_EFFECT_GHOST_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SpellTag, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TWISTEDSPOON"), + .itemId = ITEM_TWISTED_SPOON, + .price = 100, + .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, + .holdEffectParam = 10, + .description = gItemDescription_TwistedSpoon, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CHARCOAL"), + .itemId = ITEM_CHARCOAL, + .price = 9800, + .holdEffect = HOLD_EFFECT_FIRE_POWER, + .holdEffectParam = 10, + .description = gItemDescription_Charcoal, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DRAGON FANG"), + .itemId = ITEM_DRAGON_FANG, + .price = 100, + .holdEffect = HOLD_EFFECT_DRAGON_POWER, + .holdEffectParam = 10, + .description = gItemDescription_DragonFang, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SILK SCARF"), + .itemId = ITEM_SILK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NORMAL_POWER, + .holdEffectParam = 10, + .description = gItemDescription_SilkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("UP-GRADE"), + .itemId = ITEM_UP_GRADE, + .price = 2100, + .holdEffect = HOLD_EFFECT_UP_GRADE, + .holdEffectParam = 0, + .description = gItemDescription_UpGrade, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SHELL BELL"), + .itemId = ITEM_SHELL_BELL, + .price = 200, + .holdEffect = HOLD_EFFECT_SHELL_BELL, + .holdEffectParam = 8, + .description = gItemDescription_ShellBell, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SEA INCENSE"), + .itemId = ITEM_SEA_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_WATER_POWER, + .holdEffectParam = 5, + .description = gItemDescription_SeaIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LAX INCENSE"), + .itemId = ITEM_LAX_INCENSE, + .price = 9600, + .holdEffect = HOLD_EFFECT_EVASION_UP, + .holdEffectParam = 5, + .description = gItemDescription_LaxIncense, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LUCKY PUNCH"), + .itemId = ITEM_LUCKY_PUNCH, + .price = 10, + .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, + .holdEffectParam = 0, + .description = gItemDescription_LuckyPunch, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METAL POWDER"), + .itemId = ITEM_METAL_POWDER, + .price = 10, + .holdEffect = HOLD_EFFECT_METAL_POWDER, + .holdEffectParam = 0, + .description = gItemDescription_MetalPowder, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("THICK CLUB"), + .itemId = ITEM_THICK_CLUB, + .price = 500, + .holdEffect = HOLD_EFFECT_THICK_CLUB, + .holdEffectParam = 0, + .description = gItemDescription_ThickClub, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STICK"), + .itemId = ITEM_STICK, + .price = 200, + .holdEffect = HOLD_EFFECT_STICK, + .holdEffectParam = 0, + .description = gItemDescription_Stick, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RED SCARF"), + .itemId = ITEM_RED_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE SCARF"), + .itemId = ITEM_BLUE_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("PINK SCARF"), + .itemId = ITEM_PINK_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PinkScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GREEN SCARF"), + .itemId = ITEM_GREEN_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GreenScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("YELLOW SCARF"), + .itemId = ITEM_YELLOW_SCARF, + .price = 100, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_YellowScarf, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("MACH BIKE"), + .itemId = ITEM_MACH_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_MachBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("COIN CASE"), + .itemId = ITEM_COIN_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_CoinCase, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ITEMFINDER"), + .itemId = ITEM_ITEMFINDER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Itemfinder, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("OLD ROD"), + .itemId = ITEM_OLD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_OldRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GOOD ROD"), + .itemId = ITEM_GOOD_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoodRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("SUPER ROD"), + .itemId = ITEM_SUPER_ROD, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SuperRod, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Rod, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 2, + }, + { + .name = _("S.S. TICKET"), + .itemId = ITEM_SS_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SSTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CONTEST PASS"), + .itemId = ITEM_CONTEST_PASS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ContestPass, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("WAILMER PAIL"), + .itemId = ITEM_WAILMER_PAIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_WailmerPail, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON GOODS"), + .itemId = ITEM_DEVON_GOODS, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonGoods, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SOOT SACK"), + .itemId = ITEM_SOOT_SACK, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_SootSack, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BASEMENT KEY"), + .itemId = ITEM_BASEMENT_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BasementKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ACRO BIKE"), + .itemId = ITEM_ACRO_BIKE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_AcroBike, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 2, + .fieldUseFunc = ItemUseOutOfBattle_Bike, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("{POKEBLOCK} CASE"), + .itemId = ITEM_POKEBLOCK_CASE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_PokeblockCase, + .importance = 1, + .unk19 = 1, + .pocket = POCKET_KEY_ITEMS, + .type = 3, + .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("LETTER"), + .itemId = ITEM_LETTER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Letter, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("EON TICKET"), + .itemId = ITEM_EON_TICKET, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_EonTicket, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 1, + }, + { + .name = _("RED ORB"), + .itemId = ITEM_RED_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RedOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("BLUE ORB"), + .itemId = ITEM_BLUE_ORB, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_BlueOrb, + .importance = 2, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("SCANNER"), + .itemId = ITEM_SCANNER, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Scanner, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("GO-GOGGLES"), + .itemId = ITEM_GO_GOGGLES, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_GoGoggles, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("METEORITE"), + .itemId = ITEM_METEORITE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Meteorite, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 1 KEY"), + .itemId = ITEM_ROOM_1_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room1Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 2 KEY"), + .itemId = ITEM_ROOM_2_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room2Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 4 KEY"), + .itemId = ITEM_ROOM_4_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room4Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("RM. 6 KEY"), + .itemId = ITEM_ROOM_6_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Room6Key, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("STORAGE KEY"), + .itemId = ITEM_STORAGE_KEY, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_StorageKey, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("ROOT FOSSIL"), + .itemId = ITEM_ROOT_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_RootFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("CLAW FOSSIL"), + .itemId = ITEM_CLAW_FOSSIL, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_ClawFossil, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("DEVON SCOPE"), + .itemId = ITEM_DEVON_SCOPE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_DevonScope, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_KEY_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM01"), + .itemId = ITEM_TM01, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM01, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM02"), + .itemId = ITEM_TM02, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM02, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM03"), + .itemId = ITEM_TM03, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM03, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM04"), + .itemId = ITEM_TM04, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM04, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM05"), + .itemId = ITEM_TM05, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM05, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM06"), + .itemId = ITEM_TM06, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM06, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM07"), + .itemId = ITEM_TM07, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM07, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM08"), + .itemId = ITEM_TM08, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM08, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM09"), + .itemId = ITEM_TM09, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM09, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM10"), + .itemId = ITEM_TM10, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM10, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM11"), + .itemId = ITEM_TM11, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM11, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM12"), + .itemId = ITEM_TM12, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM12, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM13"), + .itemId = ITEM_TM13, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM13, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM14"), + .itemId = ITEM_TM14, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM14, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM15"), + .itemId = ITEM_TM15, + .price = 7500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM15, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM16"), + .itemId = ITEM_TM16, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM16, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM17"), + .itemId = ITEM_TM17, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM17, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM18"), + .itemId = ITEM_TM18, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM18, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM19"), + .itemId = ITEM_TM19, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM19, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM20"), + .itemId = ITEM_TM20, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM20, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM21"), + .itemId = ITEM_TM21, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM21, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM22"), + .itemId = ITEM_TM22, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM22, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM23"), + .itemId = ITEM_TM23, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM23, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM24"), + .itemId = ITEM_TM24, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM24, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM25"), + .itemId = ITEM_TM25, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM25, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM26"), + .itemId = ITEM_TM26, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM26, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM27"), + .itemId = ITEM_TM27, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM27, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM28"), + .itemId = ITEM_TM28, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM28, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM29"), + .itemId = ITEM_TM29, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM29, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM30"), + .itemId = ITEM_TM30, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM30, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM31"), + .itemId = ITEM_TM31, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM31, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM32"), + .itemId = ITEM_TM32, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM32, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM33"), + .itemId = ITEM_TM33, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM33, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM34"), + .itemId = ITEM_TM34, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM34, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM35"), + .itemId = ITEM_TM35, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM35, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM36"), + .itemId = ITEM_TM36, + .price = 1000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM36, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM37"), + .itemId = ITEM_TM37, + .price = 2000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM37, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM38"), + .itemId = ITEM_TM38, + .price = 5500, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM38, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM39"), + .itemId = ITEM_TM39, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM39, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM40"), + .itemId = ITEM_TM40, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM40, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM41"), + .itemId = ITEM_TM41, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM41, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM42"), + .itemId = ITEM_TM42, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM42, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM43"), + .itemId = ITEM_TM43, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM43, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM44"), + .itemId = ITEM_TM44, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM44, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM45"), + .itemId = ITEM_TM45, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM45, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM46"), + .itemId = ITEM_TM46, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM46, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM47"), + .itemId = ITEM_TM47, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM47, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM48"), + .itemId = ITEM_TM48, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM48, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM49"), + .itemId = ITEM_TM49, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM49, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("TM50"), + .itemId = ITEM_TM50, + .price = 3000, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_TM50, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM01"), + .itemId = ITEM_HM01, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM01, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM02"), + .itemId = ITEM_HM02, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM02, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM03"), + .itemId = ITEM_HM03, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM03, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM04"), + .itemId = ITEM_HM04, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM04, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM05"), + .itemId = ITEM_HM05, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM05, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM06"), + .itemId = ITEM_HM06, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM06, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM07"), + .itemId = ITEM_HM07, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM07, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("HM08"), + .itemId = ITEM_HM08, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_HM08, + .importance = 1, + .unk19 = 0, + .pocket = POCKET_TM_HM, + .type = 1, + .fieldUseFunc = ItemUseOutOfBattle_TMHM, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, + { + .name = _("????????"), + .itemId = ITEM_NONE, + .price = 0, + .holdEffect = HOLD_EFFECT_NONE, + .holdEffectParam = 0, + .description = gItemDescription_Dummy, + .importance = 0, + .unk19 = 0, + .pocket = POCKET_ITEMS, + .type = 4, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .battleUsage = 0, + .battleUseFunc = NULL, + .secondaryId = 0, + }, +}; diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h index 38263ec6e..0f64cba66 100644 --- a/src/data/pokedex_entries_de.h +++ b/src/data/pokedex_entries_de.h @@ -1,3 +1,11 @@ +#ifdef SAPPHIRE +static const u8 DexDescription_Dummy_1[] = _( + "Dieses POKéMON wurde erst vor kurzem \n" + "entdeckt und wird noch erforscht."); +static const u8 DexDescription_Dummy_2[] = _( + "Zur Zeit sind keine genauen Informatio-\n" + "nen über dieses POKéMON vorhanden."); +#else static const u8 DexDescription_Dummy_1[] = _( "Dieses POKéMON wurde erst vor kurzem \n" "entdeckt und wird noch erforscht."); @@ -5,7 +13,17 @@ static const u8 DexDescription_Dummy_2[] = _( "Zur Zeit sind keine genauen\n" "Informationen über dieses\n" "POKéMON vorhanden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisasam_1[] = _( + "BISASAM macht gern einmal ein\n" + "Nickerchen im Sonnenschein.\n" + "Auf seinem Rücken trägt es einen Samen."); +static const u8 DexDescription_Bisasam_2[] = _( + "Indem es Sonnenstrahlen aufsaugt,\n" + "wird er zunehmend größer."); +#else static const u8 DexDescription_Bisasam_1[] = _( "BISASAM macht gern einmal ein\n" "Nickerchen im Sonnenschein.\n" @@ -13,7 +31,18 @@ static const u8 DexDescription_Bisasam_1[] = _( static const u8 DexDescription_Bisasam_2[] = _( "Indem es Sonnenstrahlen aufsaugt,\n" "wird der Samen zunehmend größer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisaknosp_1[] = _( + "BISAKNOSP hat eine Knospe auf seinem\n" + "Rücken. Seine Beine und sein Stamm sind\n" + "kräftig genug, um sein Gewicht zu"); +static const u8 DexDescription_Bisaknosp_2[] = _( + "tragen. Wenn es lange in der Sonne liegt,\n" + "ist das ein Anzeichen dafür, dass die\n" + "Knospe bald blüht."); +#else static const u8 DexDescription_Bisaknosp_1[] = _( "BISAKNOSP hat eine Knospe auf seinem\n" "Rücken. Beine und Rumpf sind kräftig\n" @@ -22,7 +51,17 @@ static const u8 DexDescription_Bisaknosp_2[] = _( "Wenn es lange in der Sonne liegt, ist das\n" "ein Anzeichen dafür, dass die Knospe\n" "bald blüht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bisaflor_1[] = _( + "BISAFLOR hat eine Blume auf seinem\n" + "Rücken. Wenn sie viel Nahrung und Sonne\n" + "aufnimmt, verfärbt sie sich bunt."); +static const u8 DexDescription_Bisaflor_2[] = _( + "Der Duft der Blume besänftigt die\n" + "Gemüter der Menschen."); +#else static const u8 DexDescription_Bisaflor_1[] = _( "BISAFLOR hat eine Blume auf seinem\n" "Rücken. Wenn sie viel Nahrung und Sonne\n" @@ -30,7 +69,17 @@ static const u8 DexDescription_Bisaflor_1[] = _( static const u8 DexDescription_Bisaflor_2[] = _( "Der Duft der Blume mildert die Emotionen\n" "der Menschen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glumanda_1[] = _( + "Die Flamme auf seiner Schweifspitze\n" + "zeigt seine Gefühlslage an. Sie\n" + "flackert, wenn GLUMANDA zufrieden ist."); +static const u8 DexDescription_Glumanda_2[] = _( + "Wenn dieses POKéMON wütend wird, lodert\n" + "die Flamme sehr stark."); +#else static const u8 DexDescription_Glumanda_1[] = _( "Die Flamme auf seiner Schweifspitze\n" "zeigt seine Gefühlslage an. Sie\n" @@ -38,7 +87,18 @@ static const u8 DexDescription_Glumanda_1[] = _( static const u8 DexDescription_Glumanda_2[] = _( "Wenn dieses POKéMON wütend wird, lodert\n" "die Flamme gewaltig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glutexo_1[] = _( + "GLUTEXO attackiert seine Feinde mit\n" + "aller Gewalt und unter Einsatz seiner\n" + "scharfen Krallen. Trifft es auf starke"); +static const u8 DexDescription_Glutexo_2[] = _( + "Gegner, wird es wütend und die\n" + "Flamme auf seiner Schweifspitze\n" + "flackert in einem bläulichen Ton."); +#else static const u8 DexDescription_Glutexo_1[] = _( "Gnadenlos besiegt GLUTEXO seine Geg-\n" "ner mit seinen scharfen Klauen. Wenn es \n" @@ -47,7 +107,17 @@ static const u8 DexDescription_Glutexo_2[] = _( "wütend und die Flamme auf seiner\n" "Schweifspitze flackert in einem\n" "bläulichen Ton."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Glurak_1[] = _( + "GLURAK fliegt durch die Lüfte, um\n" + "starke Gegner aufzuspüren. Sein heißer\n" + "Feueratem bringt alles zum Schmelzen."); +static const u8 DexDescription_Glurak_2[] = _( + "Aber es richtet seinen Feueratem nie\n" + "gegen schwächere Gegner."); +#else static const u8 DexDescription_Glurak_1[] = _( "GLURAK fliegt durch die Lüfte, um\n" "starke Gegner aufzuspüren. Sein heißer\n" @@ -55,6 +125,7 @@ static const u8 DexDescription_Glurak_1[] = _( static const u8 DexDescription_Glurak_2[] = _( "Aber es richtet seinen Feueratem nie\n" "auf schwächere Gegner."); +#endif static const u8 DexDescription_Schiggy_1[] = _( "SCHIGGYs Panzer dient nicht nur zum\n" @@ -81,6 +152,15 @@ static const u8 DexDescription_Turtok_2[] = _( "verschießen, dass es damit aus fast\n" "50 Metern leere Dosen trifft."); +#ifdef SAPPHIRE +static const u8 DexDescription_Raupy_1[] = _( + "RAUPY ist sehr gefräßig. Es kann\n" + "Blätter verschlingen, die seine eigene\n" + "Größe um ein Vielfaches übersteigen."); +static const u8 DexDescription_Raupy_2[] = _( + "Seine Antennen sondern einen\n" + "übel riechenden Gestank ab."); +#else static const u8 DexDescription_Raupy_1[] = _( "RAUPY ist sehr gefräßig, es kann\n" "Blätter verschlingen, die größer sind\n" @@ -88,7 +168,17 @@ static const u8 DexDescription_Raupy_1[] = _( static const u8 DexDescription_Raupy_2[] = _( "Seine Antennen sondern einen\n" "übel riechenden Gestank ab."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Safcon_1[] = _( + "Der Panzer dieses POKéMON ist hart wie\n" + "Stahl. SAFCON bewegt sich kaum, da es\n" + "das weiche Innere unter seiner harten"); +static const u8 DexDescription_Safcon_2[] = _( + "Schale auf seine Entwicklung \n" + "vorbereitet."); +#else static const u8 DexDescription_Safcon_1[] = _( "Der Panzer dieses POKéMON ist hart wie\n" "Stahl. SAFCON bewegt sich kaum,"); @@ -96,6 +186,7 @@ static const u8 DexDescription_Safcon_2[] = _( "da es das weiche Innere unter seiner\n" "harten Schale auf seine Entwicklung \n" "vorbereitet."); +#endif static const u8 DexDescription_Smettbo_1[] = _( "SMETTBOs größte Fähigkeit ist das Auf-\n" @@ -105,6 +196,16 @@ static const u8 DexDescription_Smettbo_2[] = _( "fast 10 km von seinem Nest entfernt\n" "blühen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hornliu_1[] = _( + "HORNLIU verfügt über einen ausge-\n" + "zeichneten Geruchssinn. Es ist in der\n" + "Lage, seine Lieblingsblätter von denen"); +static const u8 DexDescription_Hornliu_2[] = _( + "zu unterscheiden, die es nicht mag,\n" + "indem es mit seinem großen roten\n" + "Rüssel daran schnuppert."); +#else static const u8 DexDescription_Hornliu_1[] = _( "HORNLIU verfügt über einen ausge-\n" "zeichneten Geruchssinn. So kann es\n" @@ -113,7 +214,18 @@ static const u8 DexDescription_Hornliu_2[] = _( "unterscheiden, die es nicht mag, indem\n" "es mit seiner großen roten Nase daran\n" "schnuppert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kokuna_1[] = _( + "KOKUNA bewegt sich kaum, wenn es sich\n" + "an einen Baum heftet. In seinem Inneren\n" + "jedoch regt sich einiges, da es sich auf"); +static const u8 DexDescription_Kokuna_2[] = _( + "seine bevorstehende Entwicklung \n" + "vorbereitet. Dabei wird seine Schale\n" + "sehr heiß."); +#else static const u8 DexDescription_Kokuna_1[] = _( "KOKUNA bewegt sich kaum, wenn es an\n" "einem Baum haftet. In seinem Inneren\n" @@ -122,14 +234,33 @@ static const u8 DexDescription_Kokuna_2[] = _( "seine bevorstehende Entwicklung vor-\n" "bereitet. Dabei wird seine Schale sehr\n" "heiß."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bibor_1[] = _( + "BIBOR ist sehr wehrhaft. Es sollte sich\n" + "besser niemand seinem Nest nähern."); +static const u8 DexDescription_Bibor_2[] = _( + "Wenn man sie ärgert, greifen sie in\n" + "Schwärmen an."); +#else static const u8 DexDescription_Bibor_1[] = _( "BIBOR sind sehr wehrhaft. Es sollte sich\n" "besser niemand ihrem Nest nähern."); static const u8 DexDescription_Bibor_2[] = _( "Wenn man sie ärgert, greifen sie in\n" "Schwärmen an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Taubsi_1[] = _( + "TAUBSI verfügt über einen sehr ge-\n" + "schulten Orientierungssinn. Es kehrt \n" + "zielsicher zu seinem Nest zurück,"); +static const u8 DexDescription_Taubsi_2[] = _( + "egal, wie weit es sich von seiner \n" + "gewohnten Umgebung entfernt hat."); +#else static const u8 DexDescription_Taubsi_1[] = _( "TAUBSI verfügt über einen sehr ge-\n" "schulten Orientierungssinn. Es kehrt \n" @@ -137,6 +268,7 @@ static const u8 DexDescription_Taubsi_1[] = _( static const u8 DexDescription_Taubsi_2[] = _( "egal, wie weit es sich von seiner\n" "gewohnten Umgebung entfernt hat."); +#endif static const u8 DexDescription_Tauboga_1[] = _( "TAUBOGA nennt ein großes Gebiet sein\n" @@ -165,6 +297,15 @@ static const u8 DexDescription_Rattfratz_2[] = _( "seinen Lebensraum und richtet sein\n" "Nest überall ein."); +#ifdef SAPPHIRE +static const u8 DexDescription_Rattikarl_1[] = _( + "RATTIKARLs kräftige Zähne wachsen\n" + "immer nach. Deshalb nagt es ständig\n" + "Steine und Baumstämme an."); +static const u8 DexDescription_Rattikarl_2[] = _( + "Manchmal knabbert es sogar\n" + "Hauswände an."); +#else static const u8 DexDescription_Rattikarl_1[] = _( "RATTIKARLs kräftige Zähne wachsen\n" "ständig. Deshalb nagt es unablässig\n" @@ -172,7 +313,18 @@ static const u8 DexDescription_Rattikarl_1[] = _( static const u8 DexDescription_Rattikarl_2[] = _( "um sie abzuwetzen. Manchmal knabbert\n" "es sogar Hauswände an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Habitak_1[] = _( + "HABITAK kann einen sehr lauten Schrei\n" + "ausstoßen, den man über die Entfernung\n" + "von 1 km vernehmen kann. Durch das"); +static const u8 DexDescription_Habitak_2[] = _( + "Echo seiner hohen, wehklagenden \n" + "Schreie warnt dieses POKéMON seine\n" + "Artgenossen vor drohender Gefahr."); +#else static const u8 DexDescription_Habitak_1[] = _( "HABITAK kann einen sehr lauten Schrei\n" "ausstoßen, den man über die Entfernung\n" @@ -181,7 +333,18 @@ static const u8 DexDescription_Habitak_2[] = _( "Durch das Echo seiner hohen, wehklagen-\n" "den Schreie warnt dieses POKéMON seine\n" "Artgenossen vor drohender Gefahr."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ibitak_1[] = _( + "IBITAK erkennt man an seinem langen \n" + "Schnabel. \n" + "Er ist hervorragend dafür geeignet,"); +static const u8 DexDescription_Ibitak_2[] = _( + "im Erdreich oder im Wasser Beute zu\n" + "jagen. Es setzt seinen langen, dünnen\n" + "Schnabel dabei sehr geschickt ein."); +#else static const u8 DexDescription_Ibitak_1[] = _( "IBITAK erkennt man an seinem langen \n" "Hals und Schnabel. \n" @@ -190,7 +353,17 @@ static const u8 DexDescription_Ibitak_2[] = _( "im Erdreich oder im Wasser Beute zu\n" "jagen. Es setzt seinen langen, dünnen\n" "Schnabel dabei sehr geschickt ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rettan_1[] = _( + "RETTAN rollt sich zu einer Spirale \n" + "zusammen, wenn es sich ausruht.\n" + "Aus dieser Haltung kann es blitzschnell"); +static const u8 DexDescription_Rettan_2[] = _( + "auf Bedrohungen aus allen Richtungen\n" + "reagieren, indem es seinen Kopf hebt."); +#else static const u8 DexDescription_Rettan_1[] = _( "RETTAN rollt sich zu einer Spirale zu-\n" "sammen, wenn es sich ausruht.\n" @@ -198,6 +371,7 @@ static const u8 DexDescription_Rettan_1[] = _( static const u8 DexDescription_Rettan_2[] = _( "auf Bedrohungen aus allen Richtungen\n" "reagieren, indem es seinen Kopf hebt."); +#endif static const u8 DexDescription_Arbok_1[] = _( "Dieses POKéMON ist unheimlich stark. Es\n" @@ -208,6 +382,16 @@ static const u8 DexDescription_Arbok_2[] = _( "es unmöglich, seinem Würgegriff zu ent-\n" "kommen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pikachu_1[] = _( + "Dieses POKéMON kann in seinen\n" + "Backentaschen Elektrizität speichern.\n" + "Diese laden sich nachts auf, während"); +static const u8 DexDescription_Pikachu_2[] = _( + "PIKACHU schläft. Es entlädt manchmal\n" + "seine elektrische Ladung, wenn es gera-\n" + "de aufgewacht und noch schläfrig ist."); +#else static const u8 DexDescription_Pikachu_1[] = _( "Immer wenn PIKACHU auf etwas Neues\n" "stößt, jagt es einen Elektroschock \n" @@ -216,7 +400,17 @@ static const u8 DexDescription_Pikachu_2[] = _( "Wenn du eine verkohlte Beere findest,\n" "hat dieses POKéMON seine elektrische\n" "Ladung falsch eingeschätzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Raichu_1[] = _( + "Dieses POKéMON gibt eine schwache\n" + "elektrische Ladung ab. Dadurch glüht\n" + "es bei Dunkelheit leicht. RAICHU entlädt"); +static const u8 DexDescription_Raichu_2[] = _( + "Elektrizität, indem es sein\n" + "Hinterteil in den Boden gräbt."); +#else static const u8 DexDescription_Raichu_1[] = _( "Wenn seine elektrische Ladung zu groß\n" "wird, entlädt RAICHU seine Energie ins\n" @@ -224,7 +418,18 @@ static const u8 DexDescription_Raichu_1[] = _( static const u8 DexDescription_Raichu_2[] = _( "Neben dem Nest dieses POKéMON findet\n" "man häufig versengtes Erdreich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sandan_1[] = _( + "SANDAN hat eine sehr trockene und\n" + "extrem robuste Haut. Dieses POKéMON\n" + "kann sich zu einem Ball zusammenrollen,"); +static const u8 DexDescription_Sandan_2[] = _( + "von dem jegliche Angriffe abprallen.\n" + "Nachts gräbt es sich im Wüstensand ein\n" + "und schläft dort."); +#else static const u8 DexDescription_Sandan_1[] = _( "SANDANs Körper kann sehr viel Wasser\n" "aufnehmen, so dass es auch in der\n" @@ -232,7 +437,18 @@ static const u8 DexDescription_Sandan_1[] = _( static const u8 DexDescription_Sandan_2[] = _( "Dieses POKéMON rollt sich zusammen, um\n" "sich vor Feinden zu schützen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sandamer_1[] = _( + "SANDAMER kann sich zu einem Ball mit\n" + "langen Stacheln zusammenrollen. Im\n" + "Kampf schlägt es seine Gegner in die"); +static const u8 DexDescription_Sandamer_2[] = _( + "Flucht, indem es sie mit seinen Stacheln\n" + "sticht. Dann springt es sie an und\n" + "schlägt mit seinen scharfen Klauen zu."); +#else static const u8 DexDescription_Sandamer_1[] = _( "SANDAMERs Körper ist übersät\n" "mit spitzen Stacheln, die eigentlich\n" @@ -240,7 +456,18 @@ static const u8 DexDescription_Sandamer_1[] = _( static const u8 DexDescription_Sandamer_2[] = _( "Einmal im Jahr fallen die alten Stacheln\n" "aus und werden durch neue ersetzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_NidoranF_1[] = _( + "NIDORAN besitzt Widerhaken, die ein\n" + "starkes Gift ausstoßen. Sie sind \n" + "vermutlich zum Schutz dieses"); +static const u8 DexDescription_NidoranF_2[] = _( + "schmächtigen POKéMON entstanden.\n" + "Wenn es wütend wird, stößt es ein\n" + "gefährliches Gift aus seinem Horn aus."); +#else static const u8 DexDescription_NidoranF_1[] = _( "NIDORAN besitzt Widerhaken, die ein\n" "starkes Gift ausstoßen. Sie sind ver-\n" @@ -249,7 +476,18 @@ static const u8 DexDescription_NidoranF_2[] = _( "schmächtigen POKéMON entstanden.\n" "Wenn es wütend wird, stößt es ein\n" "gefährliches Gift aus seinem Horn aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nidorina_1[] = _( + "Wenn NIDORINA mit seinen Freunden oder\n" + "seiner Familie zusammen ist, zieht\n" + "es seine Widerhaken ein, damit"); +static const u8 DexDescription_Nidorina_2[] = _( + "es niemanden verletzt. Dieses\n" + "POKéMON wird nervös, wenn man es\n" + "von seinen Artgenossen trennt."); +#else static const u8 DexDescription_Nidorina_1[] = _( "Wenn NIDORINA mit seinen Freunden oder\n" "seiner Familie zusammen ist, zieht\n" @@ -258,7 +496,18 @@ static const u8 DexDescription_Nidorina_2[] = _( "niemanden verletzt. Dieses\n" "POKéMON wird nervös, wenn man es\n" "von seinen Artgenossen trennt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nidoqueen_1[] = _( + "NIDOQUEENs Körper ist mit sehr harten\n" + "Schuppen bedeckt. Es ist sehr\n" + "geschickt darin, Gegner mit harten"); +static const u8 DexDescription_Nidoqueen_2[] = _( + "Attacken wegzuschleudern.\n" + "Dieses POKéMON entwickelt die größte\n" + "Kraft, wenn es seine Jungen verteidigt."); +#else static const u8 DexDescription_Nidoqueen_1[] = _( "NIDOQUEENs Körper ist mit sehr harten\n" "Schuppen bedeckt. Es ist sehr ge-\n" @@ -267,7 +516,18 @@ static const u8 DexDescription_Nidoqueen_2[] = _( "Attacken wegzuschleudern.\n" "Dieses POKéMON entwickelt am meisten\n" "Kraft, wenn es seine Jungen verteidigt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_NidoranM_1[] = _( + "Das männliche NIDORAN hat Muskeln\n" + "entwickelt, um seine Ohren bewegen zu\n" + "können. Dadurch kann es sie in jede"); +static const u8 DexDescription_NidoranM_2[] = _( + "beliebige Richtung wenden. Diesem\n" + "POKéMON entgeht nicht das leiseste\n" + "Geräusch."); +#else static const u8 DexDescription_NidoranM_1[] = _( "Das männliche NIDORAN hat Muskeln ent-\n" "wickelt, um seine Ohren bewegen zu kön-\n" @@ -276,6 +536,7 @@ static const u8 DexDescription_NidoranM_2[] = _( "ge Richtung drehen. Diesem POKéMON \n" "entgeht nicht einmal das leiseste Ge-\n" "räusch."); +#endif static const u8 DexDescription_Nidorino_1[] = _( "NIDORINO besitzt ein Horn, das sogar\n" @@ -286,6 +547,15 @@ static const u8 DexDescription_Nidorino_2[] = _( "auf und es schlägt den Gegner mit aller\n" "Kraft in die Flucht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Nidoking_1[] = _( + "NIDOKINGs Schweif ist enorm stark. Mit\n" + "einer Bewegung kann es einen \n" + "metallenen Sendemast zum Einsturz"); +static const u8 DexDescription_Nidoking_2[] = _( + "bringen. Wenn es in Rage gerät, ist es\n" + "nur schwer aufzuhalten."); +#else static const u8 DexDescription_Nidoking_1[] = _( "NIDOKINGs Schweif ist enorm stark. Mit\n" "einer Bewegung kann es einen metalle-\n" @@ -293,7 +563,18 @@ static const u8 DexDescription_Nidoking_1[] = _( static const u8 DexDescription_Nidoking_2[] = _( "Wenn es in Rage gerät, ist es nur schwer\n" "aufzuhalten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Piepi_1[] = _( + "In Vollmondnächten zeigt sich dieses\n" + "POKéMON. Wenn es Tag wird, kehrt \n" + "PIEPI zu seinem Zufluchtsort in den"); +static const u8 DexDescription_Piepi_2[] = _( + "Bergen zurück und schläft \n" + "eingekuschelt neben seinen\n" + "Artgenossen ein."); +#else static const u8 DexDescription_Piepi_1[] = _( "In Vollmondnächten sammeln sich einige\n" "dieser POKéMON, um zu spielen. Wird es \n" @@ -302,6 +583,7 @@ static const u8 DexDescription_Piepi_2[] = _( "ort in den Bergen zurück und\n" "schläft eingekuschelt neben\n" "seinen Artgenossen ein."); +#endif static const u8 DexDescription_Pixi_1[] = _( "PIXI bewegt sich fort, indem es leicht\n" @@ -311,6 +593,16 @@ static const u8 DexDescription_Pixi_2[] = _( "Wasser gehen. Bei Mondschein \n" "unternimmt es Spaziergänge auf Seen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Vulpix_1[] = _( + "In VULPIX’ Körper brennt eine Flamme,\n" + "die niemals erlischt. Am Tage, wenn die\n" + "Temperaturen steigen, stößt dieses"); +static const u8 DexDescription_Vulpix_2[] = _( + "POKéMON Flammen aus seinem Mund aus.\n" + "So schützt es sich davor, dass sein\n" + "Körper zu heiß wird."); +#else static const u8 DexDescription_Vulpix_1[] = _( "VULPIX kommt mit einem weißen Schweif\n" "zur Welt. Dieser teilt sich sechsfach, \n" @@ -319,7 +611,18 @@ static const u8 DexDescription_Vulpix_2[] = _( "viel Zuneigung bekommt.\n" "Seine sechs Schweife kräuseln sich\n" "schließlich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vulnona_1[] = _( + "Eine Legende besagt, dass VULNONA\n" + "zu existieren begann, als neun\n" + "Zauberer mit heiligen Kräften zu einem"); +static const u8 DexDescription_Vulnona_2[] = _( + "verschmolzen. Dieses POKéMON ist\n" + "hochintelligent und versteht die\n" + "menschliche Sprache."); +#else static const u8 DexDescription_Vulnona_1[] = _( "VULNONA sendet einen unheimlichen\n" "Lichtstrahl aus seinen hellroten Augen\n" @@ -328,7 +631,18 @@ static const u8 DexDescription_Vulnona_2[] = _( "Gedanken seines Gegners zu erlangen.\n" "Man sagt, dieses POKéMON könne 1000\n" "Jahre leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pummeluff_1[] = _( + "Wenn dieses POKéMON singt, hört es\n" + "nicht auf zu atmen. Im Kampf gegen\n" + "einen Gegner, der nicht so leicht"); +static const u8 DexDescription_Pummeluff_2[] = _( + "in Schlaf zu versetzen ist, kann\n" + "PUMMELUFF nicht atmen. Leider\n" + "gefährdet es sich dadurch selbst."); +#else static const u8 DexDescription_Pummeluff_1[] = _( "PUMMELUFFs Stimmbänder können die\n" "Tonlage seiner Stimme beliebig vari-\n" @@ -336,7 +650,17 @@ static const u8 DexDescription_Pummeluff_1[] = _( static const u8 DexDescription_Pummeluff_2[] = _( "Fähigkeit, um seine Gegner mit monoto-\n" "nem Gesang in Tiefschlaf zu versetzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knuddeluff_1[] = _( + "KNUDDELUFFs Körper ist sehr dehnbar.\n" + "Indem es tief einatmet, kann sich\n" + "dieses POKéMON selbst aufblasen."); +static const u8 DexDescription_Knuddeluff_2[] = _( + "Wenn es aufgepumpt ist, hüpft es\n" + "wie ein Luftballon umher."); +#else static const u8 DexDescription_Knuddeluff_1[] = _( "KNUDDELUFF hat handtellergroße Augen,\n" "die immer mit Tränenflüssigkeit bedeckt\n" @@ -344,7 +668,17 @@ static const u8 DexDescription_Knuddeluff_1[] = _( static const u8 DexDescription_Knuddeluff_2[] = _( "POKéMON, so wird dieser sofort ausge-\n" "spült."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zubat_1[] = _( + "ZUBAT meidet Sonnenlicht, da es dadurch\n" + "krank würde. Am Tage hält es sich in\n" + "Höhlen oder unter den Dachrinnen alter"); +static const u8 DexDescription_Zubat_2[] = _( + "Häuser auf. Dort schläft es mit dem\n" + "Kopf nach unten."); +#else static const u8 DexDescription_Zubat_1[] = _( "Tagsüber bleibt ZUBAT an einem dunklen\n" "Ort und bewegt sich kaum. Wenn es dem \n" @@ -352,7 +686,18 @@ static const u8 DexDescription_Zubat_1[] = _( static const u8 DexDescription_Zubat_2[] = _( "wird, zieht es sich Verbrennungen an\n" "seinem Körper zu."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Golbat_1[] = _( + "GOLBAT beißt seine Beute mit seinen\n" + "vier Reißzähnen und trinkt das Blut\n" + "seiner Opfer. Es wird in Nächten aktiv,"); +static const u8 DexDescription_Golbat_2[] = _( + "in denen nicht einmal der Mond scheint.\n" + "Es fliegt dann durch die Dunkelheit und\n" + "greift Menschen und POKéMON an."); +#else static const u8 DexDescription_Golbat_1[] = _( "GOLBAT hat es auf das Blut von Lebe-\n" "wesen abgesehen. Im Schutze der Nacht\n" @@ -361,7 +706,18 @@ static const u8 DexDescription_Golbat_2[] = _( "Dieses POKéMON fliegt durch die\n" "Nacht, um nach frischem Blut zu\n" "suchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Myrapla_1[] = _( + "MYRAPLA sucht nach fruchtbarem, \n" + "nahrhaftem Boden und pflanzt sich\n" + "selbst darin ein. Solange es"); +static const u8 DexDescription_Myrapla_2[] = _( + "eingepflanzt ist, nehmen seine Füße\n" + "tagsüber die Gestalt von Baumwurzeln\n" + "an."); +#else static const u8 DexDescription_Myrapla_1[] = _( "Am Tage vergräbt sich MYRAPLA im Boden,\n" "um mit seinem ganzen Körper Nahrung\n" @@ -369,7 +725,17 @@ static const u8 DexDescription_Myrapla_1[] = _( static const u8 DexDescription_Myrapla_2[] = _( "Je fruchtbarer der Boden ist, desto\n" "glänzender werden seine Blätter."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Duflor_1[] = _( + "Aus DUFLORs Mund tropft übelst\n" + "riechender Honig. Diesen Gestank\n" + "scheint es zu lieben, denn es"); +static const u8 DexDescription_Duflor_2[] = _( + "schnieft die giftigen Dämpfe ein und\n" + "sabbert danach noch mehr Honig."); +#else static const u8 DexDescription_Duflor_1[] = _( "DUFLOR produziert einen Ekel\n" "erregenden Gestank aus dem Stempel\n" @@ -378,7 +744,17 @@ static const u8 DexDescription_Duflor_2[] = _( "wird der Gestank noch unerträglicher. \n" "Wenn sich dieses POKéMON in Sicherheit\n" "befindet, stößt es keinen Gestank aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Giflor_1[] = _( + "GIFLOR hat die größten Blätter der Welt.\n" + "Sie ziehen Beute an und bestäuben sie\n" + "mit giftigen Sporen. Wenn die Beute"); +static const u8 DexDescription_Giflor_2[] = _( + "sich nicht mehr rührt, fängt dieses\n" + "POKéMON sie und frisst sie auf."); +#else static const u8 DexDescription_Giflor_1[] = _( "GIFLORs giftige Pollen rufen böse\n" "allergische Anfälle hervor. Deshalb ist\n" @@ -386,7 +762,18 @@ static const u8 DexDescription_Giflor_1[] = _( static const u8 DexDescription_Giflor_2[] = _( "Dschungel zu nähern, so anziehend sie\n" "auch sein mag."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Paras_1[] = _( + "Auf PARAS’ Rücken wachsen parasitäre\n" + "Pilze, die Tochukaso genannt werden.\n" + "Sie wachsen, indem sie diesem"); +static const u8 DexDescription_Paras_2[] = _( + "KÄFER-/PFLANZEN-PKMN Nährstoffe\n" + "entziehen. Sie sind sehr wertvoll als\n" + "lebensverlängernde Medizin."); +#else static const u8 DexDescription_Paras_1[] = _( "Auf PARAS’ Rücken wachsen parasitäre\n" "Pilze, die Tochukaso genannt werden.\n" @@ -395,7 +782,18 @@ static const u8 DexDescription_Paras_2[] = _( "KÄFER/PFLANZEN-PKMN Nährstoffe\n" "entziehen. Sie sind sehr wertvoll als\n" "lebensverlängernde Medizin."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Parasek_1[] = _( + "PARASEK sucht große Bäume heim und\n" + "entzieht Nährstoffe aus Stamm und \n" + "Wurzeln."); +static const u8 DexDescription_Parasek_2[] = _( + "Wenn ein befallener Baum stirbt, sucht\n" + "es sich zusammen mit seinen \n" + "Artgenossen einen neuen Wirt."); +#else static const u8 DexDescription_Parasek_1[] = _( "PARASEK sucht große Bäume heim und\n" "entzieht Nährstoffe aus Stamm und \n" @@ -404,6 +802,7 @@ static const u8 DexDescription_Parasek_2[] = _( "Wenn ein befallener Baum stirbt, sucht\n" "es sich zusammen mit seinen Artge-\n" "nossen einen neuen Wirt."); +#endif static const u8 DexDescription_Bluzuk_1[] = _( "BLUZUK hat einen Pelz aus dünnen\n" @@ -413,6 +812,15 @@ static const u8 DexDescription_Bluzuk_2[] = _( "Es hat große Augen, denen auch winzig\n" "kleine Beute nicht entgeht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Omot_1[] = _( + "OMOT ist ein nachtaktives POKéMON.\n" + "Kleine Insekten, die vom Licht in der\n" + "Dunkelheit angezogen, Straßenlaternen"); +static const u8 DexDescription_Omot_2[] = _( + "umschwärmen, sind seine bevorzugte\n" + "Beute."); +#else static const u8 DexDescription_Omot_1[] = _( "OMOT ist ein nachtaktives POKéMON.\n" "Kleine Insekten, die vom Licht in der\n" @@ -420,6 +828,7 @@ static const u8 DexDescription_Omot_1[] = _( static const u8 DexDescription_Omot_2[] = _( "umschwärmen, sind seine bevorzugte\n" "Beute."); +#endif static const u8 DexDescription_Digda_1[] = _( "DIGDA wird zumeist auf Farmen\n" @@ -438,6 +847,15 @@ static const u8 DexDescription_Digdri_2[] = _( "Sie arbeiten so gut zusammen, dass sie \n" "endlos graben können."); +#ifdef SAPPHIRE +static const u8 DexDescription_Mauzi_1[] = _( + "MAUZI zieht seine scharfen Krallen ein,\n" + "um umherschleichen zu können, ohne\n" + "verräterische Spuren zu hinterlassen."); +static const u8 DexDescription_Mauzi_2[] = _( + "Dieses POKéMON hat eine Vorliebe für\n" + "Münzen, die das Licht reflektieren."); +#else static const u8 DexDescription_Mauzi_1[] = _( "MAUZI zieht seine scharfen Krallen ein,\n" "um umherschleichen zu können, ohne\n" @@ -445,6 +863,7 @@ static const u8 DexDescription_Mauzi_1[] = _( static const u8 DexDescription_Mauzi_2[] = _( "Dieses POKéMON hat eine Vorliebe für\n" "Münzen, die im Licht glitzern."); +#endif static const u8 DexDescription_Snobilikat_1[] = _( "SNOBILIKAT hat sechs dicke Schnurr-\n" @@ -455,6 +874,16 @@ static const u8 DexDescription_Snobilikat_2[] = _( "wird sehr zutraulich, wenn man es an den\n" "Schnurrhaaren berührt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Enton_1[] = _( + "ENTON besitzt mystische Kräfte. Wenn\n" + "es sie einsetzt, erinnert es sich nicht\n" + "mehr daran. Es kann ein solches"); +static const u8 DexDescription_Enton_2[] = _( + "Ereignis offensichtlich nicht im Ge-\n" + "dächtnis behalten, da es sich in einen\n" + "tiefschlafähnlichen Zustand versetzt."); +#else static const u8 DexDescription_Enton_1[] = _( "ENTON verwendet eine geheimnisvolle\n" "Kraft. Dabei erzeugt es Gehirnströme,\n" @@ -463,7 +892,18 @@ static const u8 DexDescription_Enton_2[] = _( "kennt. Diese Entdeckung führte zu \n" "einer umstrittenen Diskussion unter\n" "Wissenschaftlern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Entoron_1[] = _( + "ENTORON ist der schnellste Schwimmer\n" + "von allen POKéMON. Es schwimmt mit\n" + "Leichtigkeit auch durch eine raue,"); +static const u8 DexDescription_Entoron_2[] = _( + "stürmische See. Manchmal rettet es\n" + "Menschen, die in Seenot geraten sind\n" + "und auf dem Meer treiben."); +#else static const u8 DexDescription_Entoron_1[] = _( "Die schwimmhäutigen Flossen an seinen\n" "Vorder- und Hinterbeinen und der \n" @@ -472,7 +912,17 @@ static const u8 DexDescription_Entoron_2[] = _( "ENTORON unheimlich schnell. Dieses\n" "POKéMON ist auf jeden Fall schneller als\n" "die meisten Hochleistungsschwimmer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Menki_1[] = _( + "Wenn MENKI sich schüttelt und schwer\n" + "durch die Nase atmet, dann ist es \n" + "wütend. Da es blitzartig in Raserei"); +static const u8 DexDescription_Menki_2[] = _( + "gerät, ist es unmöglich, seinem Zorn\n" + "zu entkommen."); +#else static const u8 DexDescription_Menki_1[] = _( "Wenn MENKI sich schüttelt und schwer\n" "durch die Nase atmet, dann ist es \n" @@ -480,7 +930,17 @@ static const u8 DexDescription_Menki_1[] = _( static const u8 DexDescription_Menki_2[] = _( "gerät, ist es unmöglich seinem Zorn\n" "zu entkommen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rasaff_1[] = _( + "Wenn RASAFF wütend ist, wird seine Blut-\n" + "zirkulation gesteigert und seine Mus-\n" + "keln werden noch stärker."); +static const u8 DexDescription_Rasaff_2[] = _( + "Allerdings sinkt dabei auch die\n" + "Fähigkeit logischen Denkens."); +#else static const u8 DexDescription_Rasaff_1[] = _( "Wenn RASAFF wütend ist, wird seine Blut-\n" "zirkulation gesteigert und seine Mus-\n" @@ -488,7 +948,18 @@ static const u8 DexDescription_Rasaff_1[] = _( static const u8 DexDescription_Rasaff_2[] = _( "Allerdings mindert das auch die \n" "Fähigkeit zum logischen Denken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fukano_1[] = _( + "FUKANO hat einen ausgezeichneten Ge-\n" + "ruchssinn. Wenn dieses POKéMON ein-\n" + "mal einen Geruch wahrgenommen hat,"); +static const u8 DexDescription_Fukano_2[] = _( + "vergisst es ihn nicht mehr. Es benutzt\n" + "diese Fähigkeit dazu, die Gefühlslage\n" + "von Lebewesen zu erkennen."); +#else static const u8 DexDescription_Fukano_1[] = _( "FUKANO hat einen ausgezeichneten Ge-\n" "ruchssinn. Wenn dieses POKéMON ein-\n" @@ -497,6 +968,7 @@ static const u8 DexDescription_Fukano_2[] = _( "vergisst es ihn nicht mehr. Es benutzt\n" "diese Fähigkeit dazu, die Gefühlslage\n" "von Lebewesen auszuloten."); +#endif static const u8 DexDescription_Arkani_1[] = _( "ARKANI ist sehr schnell. Es kann an\n" @@ -521,6 +993,14 @@ static const u8 DexDescription_Quaputzi_1[] = _( static const u8 DexDescription_Quaputzi_2[] = _( "eines Gegners entkommen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Quappo_1[] = _( + "QUAPPO besitzt hochentwickelte, starke\n" + "Muskeln, die niemals ermüden. Es ist so\n" + "kräftig, dass es mühelos den Pazifik"); +static const u8 DexDescription_Quappo_2[] = _( + "durchschwimmen kann."); +#else static const u8 DexDescription_Quappo_1[] = _( "QUAPPO besitzt hochentwickelte, starke\n" "Muskeln, die niemals ermüden, egal, wie\n" @@ -528,7 +1008,17 @@ static const u8 DexDescription_Quappo_1[] = _( static const u8 DexDescription_Quappo_2[] = _( "Es ist so kräftig, dass es mühelos den\n" "Pazifik durchschwimmen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Abra_1[] = _( + "ABRA braucht achtzehn Stunden Schlaf\n" + "pro Tag, sonst verliert es die Fähigkeit,\n" + "seine telekinetischen Kräfte zu"); +static const u8 DexDescription_Abra_2[] = _( + "nutzen. ABRA flüchtet mit Hilfe des\n" + "TELEPORT, schläft dabei aber weiter."); +#else static const u8 DexDescription_Abra_1[] = _( "ABRA schläft 18 Stunden am Tag.\n" "Es nimmt die Gegenwart von Feinden\n" @@ -537,7 +1027,18 @@ static const u8 DexDescription_Abra_2[] = _( "In einer solchen Situation bringt es\n" "sich umgehend mit TELEPORT in\n" "Sicherheit."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kadabra_1[] = _( + "KADABRA hält einen silbernen Löffel in\n" + "der Hand. Es verstärkt damit die\n" + "Alphawellen in seinem Gehirn. Ohne den"); +static const u8 DexDescription_Kadabra_2[] = _( + "Löffel könnte dieses POKéMON nur die\n" + "Hälfte seiner telekinetischen Kräfte\n" + "nutzen."); +#else static const u8 DexDescription_Kadabra_1[] = _( "KADABRA sendet Alphawellen aus, wenn es\n" "Kopfschmerzen hat. Nur wer eine beson-\n" @@ -545,7 +1046,18 @@ static const u8 DexDescription_Kadabra_1[] = _( static const u8 DexDescription_Kadabra_2[] = _( "dieses POKéMON unter seine Fittiche\n" "nehmen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Simsala_1[] = _( + "SIMSALAs Hirn wächst stetig weiter und\n" + "seine Gehirnzellen werden unendlich\n" + "vervielfacht. Durch sein verblüffendes"); +static const u8 DexDescription_Simsala_2[] = _( + "Gehirn erreicht dieses POKéMON einen IQ\n" + "von 5.000. Es erinnert sich an alles, was\n" + "in der Welt passiert ist."); +#else static const u8 DexDescription_Simsala_1[] = _( "SIMSALAs Gehirn hört nicht auf zu\n" "wachsen, so dass sein Kopf zu schwer\n" @@ -553,7 +1065,17 @@ static const u8 DexDescription_Simsala_1[] = _( static const u8 DexDescription_Simsala_2[] = _( "Dieses POKéMON hält seinen Kopf mit\n" "psychokinetischer Energie aufrecht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Machollo_1[] = _( + "MACHOLLO trainiert, indem es ein GEOROK\n" + "hochhebt, als wäre es eine Hantel. Es\n" + "gibt auch MACHOLLO, die durch die Welt"); +static const u8 DexDescription_Machollo_2[] = _( + "reisen, um alle Arten der Kampfkunst \n" + "zu erlernen."); +#else static const u8 DexDescription_Machollo_1[] = _( "MACHOLLOs Muskeln sind etwas Beson-\n" "deres. Sie schmerzen nie, egal, wie sehr\n" @@ -561,7 +1083,17 @@ static const u8 DexDescription_Machollo_1[] = _( static const u8 DexDescription_Machollo_2[] = _( "Dieses POKéMON hat genug Kraft, um 100\n" "Erwachsene umherzuwerfen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Maschock_1[] = _( + "MASCHOCK stählt seinen Körper jeden\n" + "Tag, zum Beispiel indem es Menschen bei\n" + "einer harten körperlichen Arbeit hilft."); +static const u8 DexDescription_Maschock_2[] = _( + "An seinen freien Tagen begibt es sich\n" + "auf Felder und Berge, um zu trainieren."); +#else static const u8 DexDescription_Maschock_1[] = _( "MASCHOCKs starke Muskeln sind so hart\n" "wie Stahl. Dieses POKéMON hat so viel\n" @@ -569,7 +1101,18 @@ static const u8 DexDescription_Maschock_1[] = _( static const u8 DexDescription_Maschock_2[] = _( "einen Sumo-Ringer in der Luft halten\n" "kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Machomei_1[] = _( + "MACHOMEI wurde berühmt, da es alle\n" + "Arten der Kampfkunst beherrscht. Wenn\n" + "es einen Gegner mit seinen vier Armen zu"); +static const u8 DexDescription_Machomei_2[] = _( + "fassen gekriegt hat, ist der Kampf noch\n" + "nicht vorbei. Es schleudert ihn dann\n" + "nämlich weit über den Horizont hinaus."); +#else static const u8 DexDescription_Machomei_1[] = _( "MACHOMEI hat genug Kraft, um alles \n" "Mögliche zu stemmen. Bei Tätigkeiten,\n" @@ -578,7 +1121,18 @@ static const u8 DexDescription_Machomei_2[] = _( "machen es ihm seine Arme jedoch nicht\n" "leicht. Dieses POKéMON neigt dazu,\n" "zuerst zu handeln und dann zu denken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knofensa_1[] = _( + "KNOFENSAs schlanker und elastischer\n" + "Körper ermöglicht es ihm, jeglichem\n" + "Angriff auszuweichen, so heftig dieser"); +static const u8 DexDescription_Knofensa_2[] = _( + "auch sein mag. Dieses POKéMON spuckt\n" + "eine ätzende Flüssigkeit aus, die sogar\n" + "Eisen zersetzen kann."); +#else static const u8 DexDescription_Knofensa_1[] = _( "KNOFENSAs schlanker und elastischer\n" "Körper ermöglicht es ihm, jedem\n" @@ -587,7 +1141,18 @@ static const u8 DexDescription_Knofensa_2[] = _( "auch sein mag. Dieses POKéMON spuckt\n" "eine ätzende Flüssigkeit aus, die sogar\n" "Eisen zersetzen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ultrigaria_1[] = _( + "ULTRIGARIA hat einen großen Haken\n" + "an seinem Hinterteil. Nachts hängt\n" + "sich dieses POKéMON zum Schlafen an"); +static const u8 DexDescription_Ultrigaria_2[] = _( + "einen Ast. Wenn es sich im Schlaf \n" + "bewegt, kann es passieren, dass es auf\n" + "dem Boden wieder aufwacht."); +#else static const u8 DexDescription_Ultrigaria_1[] = _( "ULTRIGARIA hat einen großen Haken\n" "an seinem Hinterteil. Nachts hängt\n" @@ -596,6 +1161,7 @@ static const u8 DexDescription_Ultrigaria_2[] = _( "einen Ast. Wenn es sich im Schlaf be-\n" "wegt, kann es passieren, dass es auf\n" "dem Boden wieder aufwacht."); +#endif static const u8 DexDescription_Sarzenia_1[] = _( "Aus SARZENIAs Kopf ragt eine lange\n" @@ -606,6 +1172,16 @@ static const u8 DexDescription_Sarzenia_2[] = _( "nähert, wird sie von diesem POKéMON\n" "im Ganzen verschlungen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tentacha_1[] = _( + "TENTACHA nimmt Sonnenlicht auf und\n" + "bricht es in seinem Körper mit Hilfe von\n" + "Wasser, um es in Strahlenenergie"); +static const u8 DexDescription_Tentacha_2[] = _( + "umzuwandeln. Dieses POKéMON verschießt\n" + "Strahlen aus seinen kristallartigen\n" + "Augen."); +#else static const u8 DexDescription_Tentacha_1[] = _( "TENTACHAs Körper setzt sich zum größ-\n" "ten Teil aus Wasser zusammen. Wenn es\n" @@ -614,7 +1190,18 @@ static const u8 DexDescription_Tentacha_2[] = _( "Wenn dieses POKéMON auszutrocknen be-\n" "ginnt, sollte man es schnell wieder ins\n" "Wasser zurückbringen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tentoxa_1[] = _( + "TENTOXA besitzt Tentakel, die es\n" + "jederzeit ausfahren und einziehen\n" + "kann. Es fängt damit Beute und"); +static const u8 DexDescription_Tentoxa_2[] = _( + "schwächt diese, indem es ihr ein\n" + "starkes Gift verabreicht. Es kann bis\n" + "zu 80 Opfer gleichzeitig fangen."); +#else static const u8 DexDescription_Tentoxa_1[] = _( "TENTOXA hat große, rote Kugeln auf \n" "seinem Kopf. Sie glühen auf, bevor sie \n" @@ -623,7 +1210,18 @@ static const u8 DexDescription_Tentoxa_2[] = _( "erschüttern. Ein Ausbruch dieses \n" "POKéMON erzeugt starke Wellen \n" "in seiner Umgebung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kleinstein_1[] = _( + "Wenn KLEINSTEIN tief und fest schläft,\n" + "gräbt es sich selbst zur Hälfte im Boden\n" + "ein. Selbst wenn Wanderer versehentlich"); +static const u8 DexDescription_Kleinstein_2[] = _( + "auf KLEINSTEIN treten, wacht es nicht\n" + "auf. Am Morgen rollt es auf der Suche\n" + "nach Nahrung den Berg herunter."); +#else static const u8 DexDescription_Kleinstein_1[] = _( "Je länger ein KLEINSTEIN lebt, desto\n" "mehr wird seine raue Oberfläche ab-\n" @@ -631,7 +1229,18 @@ static const u8 DexDescription_Kleinstein_1[] = _( static const u8 DexDescription_Kleinstein_2[] = _( "Das Herz dieses POKéMON bleibt aber\n" "für immer versteinert, hart und rau."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Georok_1[] = _( + "Steine sind GEOROKs Lieblingsspeise.\n" + "Dieses POKéMON klettert vom Fuße\n" + "eines Berges zu seinem Gipfel empor"); +static const u8 DexDescription_Georok_2[] = _( + "und zermalmt dabei das Gestein. Wenn es\n" + "den Gipfel erreicht hat, rollt es wieder\n" + "herunter."); +#else static const u8 DexDescription_Georok_1[] = _( "GEOROK wächst, indem es sich von Stei-\n" "nen ernährt. Am liebsten mag es Steine,\n" @@ -639,14 +1248,36 @@ static const u8 DexDescription_Georok_1[] = _( static const u8 DexDescription_Georok_2[] = _( "Dieses POKéMON frisst sich täglich\n" "durch eine riesige Menge von Steinen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geowaz_1[] = _( + "GEOWAZ ist dafür bekannt, dass es\n" + "Berghänge herunterrollt. Damit es nicht\n" + "in die Häuser der Menschen hineinrollt,"); +static const u8 DexDescription_Geowaz_2[] = _( + "wurden Gräben so an den Bergen\n" + "angelegt, dass der Weg dieses POKéMON\n" + "umgeleitet wird."); +#else static const u8 DexDescription_Geowaz_1[] = _( "GEOWAZ lebt hoch in den Bergen. Gibt es \n" "ein starkes Erdbeben, rollt dieses\n" "POKéMON so lange den Berg hinunter,"); static const u8 DexDescription_Geowaz_2[] = _( "bis es schließlich unten angekommen ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ponita_1[] = _( + "Nach seiner Geburt ist PONITA sehr\n" + "schwach. Es braucht sehr lange, bis es\n" + "auf allen Vieren steht. Dieses POKéMON"); +static const u8 DexDescription_Ponita_2[] = _( + "wird stärker, da es bei dem Versuch, mit\n" + "seinen Eltern Schritt zu halten, immer\n" + "wieder stolpert und hinfällt."); +#else static const u8 DexDescription_Ponita_1[] = _( "Nach seiner Geburt ist PONITA so\n" "schwach, dass es kaum von alleine\n" @@ -655,7 +1286,18 @@ static const u8 DexDescription_Ponita_2[] = _( "dadurch schnell stärker, dass es sich\n" "beim Versuch, mit seinen Eltern Schritt\n" "zu halten, immer wieder aufrappeln muss."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gallopa_1[] = _( + "Man kann GALLOPA dabei beobachten, \n" + "wie es fröhlich über Felder und Wiesen\n" + "galoppiert. Wenn dieses POKéMON"); +static const u8 DexDescription_Gallopa_2[] = _( + "jedoch Ernst macht, erreicht es bis zu\n" + "240 km/h. Dann beginnt seine Mähne\n" + "zu lodern."); +#else static const u8 DexDescription_Gallopa_1[] = _( "Man kann GALLOPA dabei beobachten, \n" "wie es lässig über Felder und Wiesen\n" @@ -664,6 +1306,7 @@ static const u8 DexDescription_Gallopa_2[] = _( "jedoch Ernst macht, erreicht es bis zu\n" "240 km/h. Dann beginnt seine Mähne\n" "zu lodern."); +#endif static const u8 DexDescription_Flegmon_1[] = _( "FLEGMON benutzt seinen Schweif, um \n" @@ -674,6 +1317,16 @@ static const u8 DexDescription_Flegmon_2[] = _( "gerade tun wollte, und verbringt ganze \n" "Tage damit, am Ufer herumzutrödeln."); +#ifdef SAPPHIRE +static const u8 DexDescription_Lahmus_1[] = _( + "An LAHMUS’ Schweif hat sich ein \n" + "MUSCHAS festgebissen. Daher kann es\n" + "ihn nicht mehr zum Fischen benutzen"); +static const u8 DexDescription_Lahmus_2[] = _( + "und ist dazu gezwungen, umherzu-\n" + "schwimmen und Ausschau nach Beute zu\n" + "halten."); +#else static const u8 DexDescription_Lahmus_1[] = _( "An LAHMUS’ Rute hat sich ein MUSCHAS\n" "festgebissen. Daher kann es ihn nicht\n" @@ -682,7 +1335,18 @@ static const u8 DexDescription_Lahmus_2[] = _( "und es ist dazu gezwungen, umherzu-\n" "schwimmen und nach Beute Ausschau\n" "zu halten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magnetilo_1[] = _( + "MAGNETILO segelt durch die Luft und \n" + "sendet dabei elektromagnetische Wellen\n" + "an beiden Seiten seines Körpers aus."); +static const u8 DexDescription_Magnetilo_2[] = _( + "Dieses POKéMON wird flugunfähig, wenn\n" + "die Stromquelle in seinem Inneren\n" + "erschöpft ist."); +#else static const u8 DexDescription_Magnetilo_1[] = _( "MAGNETILO ernährt sich von Elektri-\n" "zität aus Stromleitungen. Dieses\n" @@ -691,7 +1355,18 @@ static const u8 DexDescription_Magnetilo_2[] = _( "Sicherungskästen. Wenn es in deinem\n" "Haus zu einem Stromausfall kommt,\n" "solltest du die Sicherungen überprüfen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magneton_1[] = _( + "MAGNETON strahlt eine starke magne-\n" + "tische Energie ab, die für elektronische\n" + "Geräte und Präzisionsinstrumente sehr"); +static const u8 DexDescription_Magneton_2[] = _( + "schädlich ist. In einigen Städten\n" + "werden die Bewohner gebeten, dieses\n" + "POKéMON in einem POKéBALL zu halten."); +#else static const u8 DexDescription_Magneton_1[] = _( "MAGNETON erzeugt ein sehr starkes Mag-\n" "netfeld, das Maschinen zerstören kann.\n" @@ -699,7 +1374,18 @@ static const u8 DexDescription_Magneton_1[] = _( static const u8 DexDescription_Magneton_2[] = _( "Sirenen, die die Bürger vor Scharen\n" "dieses POKéMON warnen sollen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Porenta_1[] = _( + "PORENTA trifft man immer mit einem\n" + "Stock irgendeiner Pflanze an. Es gibt\n" + "gute und schlechte Stöcke."); +static const u8 DexDescription_Porenta_2[] = _( + "Von diesem POKéMON wird behauptet, es \n" + "kämpfe gegen die eigenen Artgenossen\n" + "um die besten Stöcke."); +#else static const u8 DexDescription_Porenta_1[] = _( "PORENTA trifft man immer mit einer\n" "Lauchstange an. Es gibt gute und\n" @@ -707,14 +1393,35 @@ static const u8 DexDescription_Porenta_1[] = _( static const u8 DexDescription_Porenta_2[] = _( "Dieses POKéMON kämpft mit Hilfe seiner\n" "Stange gegen seine Gegner."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Dodu_1[] = _( + "DODU hat zwei Köpfe mit absolut\n" + "identischen Gehirnen. Eine wissen-\n" + "schaftliche Studie hat allerdings"); +static const u8 DexDescription_Dodu_2[] = _( + "nachgewiesen, dass es auch Exemplare\n" + "dieses POKéMON gibt, die zwei\n" + "unterschiedliche Gehirne haben."); +#else static const u8 DexDescription_Dodu_1[] = _( "DODU hat zwei Köpfe, die nie zur \n" "selben Zeit, sondern abwechselnd\n" "schlafen. Während ein Kopf schläft,"); static const u8 DexDescription_Dodu_2[] = _( "hält der andere Ausschau nach Feinden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Dodri_1[] = _( + "DODRI hat nicht nur drei Köpfe, auch\n" + "andere Körperteile sind dreifach\n" + "vorhanden. Es besitzt drei Herzen und"); +static const u8 DexDescription_Dodri_2[] = _( + "drei Lungen, so dass es lange Strecken\n" + "ohne Pause rennen kann."); +#else static const u8 DexDescription_Dodri_1[] = _( "DODRIs drei Köpfe blicken in drei ver-\n" "schiedene Richtungen. Es ist immer auf\n" @@ -723,7 +1430,17 @@ static const u8 DexDescription_Dodri_2[] = _( "Du solltest dich diesem POKéMON nicht\n" "nähern, wenn es bereits misstrauisch \n" "ist. Es könnte nach dir hacken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jurob_1[] = _( + "JUROB jagt unter der frostigen Ober-\n" + "fläche des Eismeeres nach Beute. Zum\n" + "Luft holen schlägt es mit dem"); +static const u8 DexDescription_Jurob_2[] = _( + "vorstehenden Teil seines Kopfes ein \n" + "Loch ins Eis."); +#else static const u8 DexDescription_Jurob_1[] = _( "JUROB jagt unter der eisigen Ober-\n" "fläche des Eismeeres nach Beute. Zum\n" @@ -731,7 +1448,17 @@ static const u8 DexDescription_Jurob_1[] = _( static const u8 DexDescription_Jurob_2[] = _( "vorstehenden Teil seines Kopfes ein \n" "Loch ins Eis."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jugong_1[] = _( + "JUGONG liebt es, auf bitterkalten \n" + "Eisschollen ein Nickerchen zu machen.\n" + "Ein Seemann, der ein solches POKéMON"); +static const u8 DexDescription_Jugong_2[] = _( + "eines Tages auf einem Eisberg schlafen\n" + "sah, hielt es für eine Meerjungfrau."); +#else static const u8 DexDescription_Jugong_1[] = _( "JUGONG liebt es, auf bitterkalten Eis-\n" "schollen ein Nickerchen zu machen.\n" @@ -740,7 +1467,18 @@ static const u8 DexDescription_Jugong_2[] = _( "POKéMON schlafend auf einem\n" "Eisberg sah, hielt es irrtümlicherweise\n" "für eine Meerjungfrau."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sleima_1[] = _( + "SLEIMA ist aus dem Schlamm eines\n" + "verseuchten Flussbetts entstanden.\n" + "Dieses POKéMON liebt verschmutzte"); +static const u8 DexDescription_Sleima_2[] = _( + "Dinge. Es scheidet ständig eine mit\n" + "Bakterien verseuchte Flüssigkeit aus\n" + "seinem ganzen Körper aus."); +#else static const u8 DexDescription_Sleima_1[] = _( "SLEIMAs glitschiger, gummiartiger\n" "Körper passt durch jede noch so kleine\n" @@ -748,14 +1486,35 @@ static const u8 DexDescription_Sleima_1[] = _( static const u8 DexDescription_Sleima_2[] = _( "Kanalisation hinab, um fauliges\n" "Abwasser zu trinken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sleimok_1[] = _( + "SLEIMOKs Lieblingsspeise ist alles, was\n" + "widerlich verschmutzt ist. In dreckigen\n" + "Städten, in denen sich Menschen nichts"); +static const u8 DexDescription_Sleimok_2[] = _( + "dabei denken, wenn sie Müll auf die\n" + "Straße werfen, lassen sich diese\n" + "POKéMON mit Vorliebe in Scharen nieder."); +#else static const u8 DexDescription_Sleimok_1[] = _( "SLEIMOK scheidet eine widerlich\n" "stinkende Substanz aus. Ein einziger\n" "Tropfen seiner Körpersubstanz reicht"); static const u8 DexDescription_Sleimok_2[] = _( "aus, um ein Gewässer zu verseuchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Muschas_1[] = _( + "Nachts verwendet dieses POKéMON seine\n" + "breite Zunge, um ein Loch in den \n" + "Meeresboden zu graben. Darin schläft"); +static const u8 DexDescription_Muschas_2[] = _( + "es. Dabei schließt es seine Schale,\n" + "lässt aber seine Zunge heraushängen."); +#else static const u8 DexDescription_Muschas_1[] = _( "Nachts benutzt dieses POKéMON seine\n" "breite Zunge, um ein Loch in den \n" @@ -764,7 +1523,17 @@ static const u8 DexDescription_Muschas_2[] = _( "Darin schläft es. Dabei schließt es\n" "seine Schale, aber die Zunge hängt\n" "heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Austos_1[] = _( + "AUSTOS kann im Meerwasser schwimmen,\n" + "indem es Wasser schluckt und mit Druck\n" + "wieder herausspritzt."); +static const u8 DexDescription_Austos_2[] = _( + "Auf dieselbe Weise verschießt dieses\n" + "POKéMON scharfe Stacheln."); +#else static const u8 DexDescription_Austos_1[] = _( "AUSTOS kann im Meerwasser schwimmen,\n" "indem es Wasser schluckt und wieder\n" @@ -773,6 +1542,7 @@ static const u8 DexDescription_Austos_2[] = _( "Dieses POKéMON kann sich auch ver- \n" "teidigen, indem es spitze Stacheln mit\n" "Hilfe des Wasserdrucks verschießt."); +#endif static const u8 DexDescription_Nebulak_1[] = _( "NEBULAK hat einen gasförmigen Körper.\n" @@ -783,6 +1553,16 @@ static const u8 DexDescription_Nebulak_2[] = _( "unter Dachrinnen, um sich vor dem\n" "gefährlichen Wind zu schützen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Alpollo_1[] = _( + "ALPOLLO ist ein gefährliches POKéMON.\n" + "Wenn es dir ein Zeichen gibt, während es\n" + "durch die Dunkelheit schwebt, darfst"); +static const u8 DexDescription_Alpollo_2[] = _( + "du es nicht berühren. Dieses POKéMON\n" + "wird versuchen, an dir zu lecken und\n" + "dein Leben zu stehlen."); +#else static const u8 DexDescription_Alpollo_1[] = _( "ALPOLLO ist ein gefährliches POKéMON.\n" "Wenn es dich zu sich lockt, während es\n" @@ -791,6 +1571,7 @@ static const u8 DexDescription_Alpollo_2[] = _( "du ihm keinesfalls zu nahe kommen.\n" "Dieses POKéMON wird versuchen, an dir\n" "zu lecken und dein Leben zu stehlen."); +#endif static const u8 DexDescription_Gengar_1[] = _( "Nachts kann es passieren, dass dich\n" @@ -810,6 +1591,16 @@ static const u8 DexDescription_Onix_2[] = _( "älter wird, wird sein Körper immer\n" "runder und glatter."); +#ifdef SAPPHIRE +static const u8 DexDescription_Traumato_1[] = _( + "Wenn dir im Schlaf die Nase juckt, ist\n" + "das ein sicheres Zeichen dafür, dass\n" + "eines dieser POKéMON über deinem"); +static const u8 DexDescription_Traumato_2[] = _( + "Kissen schwebt, um deinen Traum durch\n" + "deine Nasenlöcher hindurch zu\n" + "verspeisen."); +#else static const u8 DexDescription_Traumato_1[] = _( "Wenn dir im Schlaf die Nase juckt, ist\n" "das ein sicheres Zeichen dafür, dass\n" @@ -818,6 +1609,7 @@ static const u8 DexDescription_Traumato_2[] = _( "Kissen sitzt, um deinen Traum durch\n" "deine Nasenlöcher hindurch zu\n" "verspeisen."); +#endif static const u8 DexDescription_Hypno_1[] = _( "HYPNO hält ein Pendel in der Hand. Das\n" @@ -828,6 +1620,14 @@ static const u8 DexDescription_Hypno_2[] = _( "der Suche nach Beute ist, poliert es \n" "sein Pendel."); +#ifdef SAPPHIRE +static const u8 DexDescription_Krabby_1[] = _( + "KRABBY lebt an Stränden, in Löchern im \n" + "Sand. An Sandstränden, an denen es\n" + "wenig Nahrung findet, sieht man dieses"); +static const u8 DexDescription_Krabby_2[] = _( + "POKéMON mit Artgenossen streiten."); +#else static const u8 DexDescription_Krabby_1[] = _( "KRABBY lebt an Stränden, in Löchern im \n" "Sand. An Sandstränden, an denen es\n" @@ -835,6 +1635,7 @@ static const u8 DexDescription_Krabby_1[] = _( static const u8 DexDescription_Krabby_2[] = _( "POKéMON mit Artgenossen um sein\n" "Revier streiten."); +#endif static const u8 DexDescription_Kingler_1[] = _( "KINGLER hat eine riesige Schere. Es\n" @@ -844,6 +1645,16 @@ static const u8 DexDescription_Kingler_2[] = _( "Da seine Schere aber so schwer ist, wird\n" "dieses POKéMON schnell müde."); +#ifdef SAPPHIRE +static const u8 DexDescription_Voltobal_1[] = _( + "VOLTOBAL ist äußerst empfindlich, es\n" + "explodiert schon bei der leichtesten\n" + "Erschütterung. Man munkelt, es"); +static const u8 DexDescription_Voltobal_2[] = _( + "sei entstanden, als ein POKéBALL einen\n" + "starken elektrischen Schlag bekommen\n" + "hat."); +#else static const u8 DexDescription_Voltobal_1[] = _( "VOLTOBAL wurde zuerst bei einer Firma\n" "beobachtet, die POKéBÄLLE herstellt.\n" @@ -852,7 +1663,18 @@ static const u8 DexDescription_Voltobal_2[] = _( "Beobachtung und der Tatsache, dass\n" "dieses POKéMON wie ein POKéBALL\n" "aussieht, ist noch ungeklärt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lektrobal_1[] = _( + "Typisch für LEKTROBAL ist seine große\n" + "Faszination für Elektrizität. Es ist ein\n" + "problematisches POKéMON, das sich"); +static const u8 DexDescription_Lektrobal_2[] = _( + "meistens in Kraftwerken niederlässt, wo\n" + "es sich von frisch erzeugtem Strom\n" + "ernähren kann."); +#else static const u8 DexDescription_Lektrobal_1[] = _( "LEKTROBAL ernährt sich von\n" "Elektrizität aus der Atmosphäre. An\n" @@ -860,6 +1682,7 @@ static const u8 DexDescription_Lektrobal_1[] = _( static const u8 DexDescription_Lektrobal_2[] = _( "dieses POKéMON dauernd, da es zu viel\n" "Elektrizität zu sich nimmt."); +#endif static const u8 DexDescription_Owei_1[] = _( "Dieses POKéMON besteht aus sechs\n" @@ -921,13 +1744,34 @@ static const u8 DexDescription_Schlurp_2[] = _( "des Geschmacks.\n" "Saure Sachen schrecken es eher ab."); +#ifdef SAPPHIRE +static const u8 DexDescription_Smogon_1[] = _( + "SMOGONs Körper enthält giftige\n" + "Substanzen. Es vermischt die Toxine mit\n" + "Müll, um eine chemische Reaktion in Gang"); +static const u8 DexDescription_Smogon_2[] = _( + "zu bringen, die ein unheimlich starkes\n" + "Giftgas hervorbringt. Je höher die Tem-\n" + "peratur, desto mehr Gas produziert es."); +#else static const u8 DexDescription_Smogon_1[] = _( "Wenn SMOGON sich aufregt, lässt es\n" "das giftige Gas in seinem Inneren\n" "entweichen. Wenn es sich zu sehr"); static const u8 DexDescription_Smogon_2[] = _( "aufbläht, explodiert dieses POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Smogmog_1[] = _( + "SMOGMOG bläst seine beiden Körper\n" + "abwechselnd auf und lässt sie wieder\n" + "zusammenschrumpfen, um die giftigen"); +static const u8 DexDescription_Smogmog_2[] = _( + "Gase darin zu vermischen. Je mehr Gase\n" + "vermischt werden, desto stärker werden\n" + "die Toxine."); +#else static const u8 DexDescription_Smogmog_1[] = _( "SMOGMOG liebt die Gase verrottender,\n" "fauler Küchenabfälle. Dieses POKéMON\n" @@ -936,7 +1780,18 @@ static const u8 DexDescription_Smogmog_2[] = _( "schmutziges Gebäude und richtet sich\n" "dort häuslich ein. Nachts, wenn die\n" "Menschen schlafen, wühlt es im Müll."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rihorn_1[] = _( + "RIHORNs Hirn ist sehr klein. Es ist so\n" + "beschränkt, dass es während des\n" + "Laufens vergisst, warum es überhaupt"); +static const u8 DexDescription_Rihorn_2[] = _( + "losgelaufen ist. Manchmal erinnert es\n" + "sich aber daran, dass es etwas\n" + "zerstört hat."); +#else static const u8 DexDescription_Rihorn_1[] = _( "RIHORN läuft immer geradeaus und\n" "zerstampft alles, was ihm in die Quere\n" @@ -945,7 +1800,18 @@ static const u8 DexDescription_Rihorn_2[] = _( "wenn es mit dem Kopf voran gegen einen\n" "Stahlklotz rennt. Am nächsten Tag\n" "allerdings könnte es Schmerzen haben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rizeros_1[] = _( + "RIZEROS hat ein Horn, das es als Bohrer\n" + "benutzen kann. Damit zerstört es \n" + "Felsblöcke und Steine. Dieses POKéMON"); +static const u8 DexDescription_Rizeros_2[] = _( + "rammt sein Horn manchmal in Ströme von\n" + "Magma. Seine panzerähnliche Haut\n" + "schützt es dabei vor der Hitze."); +#else static const u8 DexDescription_Rizeros_1[] = _( "Mit seinem Horn kann RIZEROS selbst\n" "Diamanten zerbrechen. Ein einziger\n" @@ -954,6 +1820,7 @@ static const u8 DexDescription_Rizeros_2[] = _( "zum Einsturz bringen. Die Haut dieses\n" "POKéMON ist so hart, dass nicht einmal\n" "Kanonenkugeln Kratzer hinterlassen."); +#endif static const u8 DexDescription_Chaneira_1[] = _( "CHANEIRA legt täglich ausgesprochen\n" @@ -962,6 +1829,16 @@ static const u8 DexDescription_Chaneira_1[] = _( static const u8 DexDescription_Chaneira_2[] = _( "werden, die gar keinen Appetit haben."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tangela_1[] = _( + "Wenn man TANGELAs Ranken berührt, \n" + "fallen diese oft ab. Dabei empfindet\n" + "es keine Schmerzen und es kann"); +static const u8 DexDescription_Tangela_2[] = _( + "sich schnell in Sicherheit bringen. \n" + "Verliert es Ranken, werden diese am\n" + "nächsten Tag durch neue ersetzt."); +#else static const u8 DexDescription_Tangela_1[] = _( "Wenn man TANGELAs Ranken berührt, \n" "fallen diese sofort ab. Das tut ihm\n" @@ -970,7 +1847,18 @@ static const u8 DexDescription_Tangela_2[] = _( "sich schnell in Sicherheit bringen. \n" "Verliert es Ranken, werden diese am\n" "nächsten Tag durch neue ersetzt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kangama_1[] = _( + "Wenn du auf ein junges, spielendes\n" + "KANGAMA stößt, solltest du es nicht\n" + "stören oder versuchen es einzufangen."); +static const u8 DexDescription_Kangama_2[] = _( + "Die Mutter dieses Baby-POKéMON ist\n" + "bestimmt in Reichweite und könnte\n" + "sehr wütend auf dich werden."); +#else static const u8 DexDescription_Kangama_1[] = _( "Wenn du auf ein spielendes KANGAMA\n" "stößt, solltest du es nicht stören oder\n" @@ -979,7 +1867,18 @@ static const u8 DexDescription_Kangama_2[] = _( "Die Mutter dieses Baby-POKéMON ist\n" "bestimmt in Reichweite und könnte\n" "sehr wütend auf dich werden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seeper_1[] = _( + "Wenn SEEPER Gefahr wittert, versprüht\n" + "es reflexartig eine tiefschwarze Tinte\n" + "aus seinem Mund und ergreift die Flucht."); +static const u8 DexDescription_Seeper_2[] = _( + "Dieses POKéMON kann schwimmen, indem\n" + "es geschickt mit den Flossen auf seinem\n" + "Rücken schlägt."); +#else static const u8 DexDescription_Seeper_1[] = _( "SEEPER ernährt sich von kleinen\n" "Insekten und dem Moos auf Steinen.\n" @@ -988,7 +1887,18 @@ static const u8 DexDescription_Seeper_2[] = _( "dieses POKéMON mit seinem Schweif an\n" "Steinen oder Korallen, damit es nicht\n" "weggespült wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seemon_1[] = _( + "SEEMON erzeugt Strudel, indem es sich\n" + "schnell um die eigene Achse dreht. Diese\n" + "Strudel können sogar Fischerboote in"); +static const u8 DexDescription_Seemon_2[] = _( + "die Tiefe reißen. Damit schwächt es\n" + "Beute, bevor es sie im Ganzen\n" + "verschlingt."); +#else static const u8 DexDescription_Seemon_1[] = _( "Sobald sich SEEMON um eine Koralle\n" "gewickelt hat, schläft es. Von Zeit zu\n" @@ -997,7 +1907,18 @@ static const u8 DexDescription_Seemon_2[] = _( "Widerhaken dieses POKéMON verletzt, \n" "wenn sie versuchen, Korallen zu ernten\n" "und es dabei nicht bemerken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Goldini_1[] = _( + "GOLDINI liebt es, in Teichen und Flüssen\n" + "zu schwimmen. Wenn ein solches\n" + "POKéMON in ein Aquarium gebracht wird,"); +static const u8 DexDescription_Goldini_2[] = _( + "wird es selbst das dickste Glas mit\n" + "einem Stoß seines Horns zum Zerbersten\n" + "bringen und die Flucht ergreifen."); +#else static const u8 DexDescription_Goldini_1[] = _( "GOLDINI ist ein wunderschönes POKéMON,\n" "dessen Flossen sich elegant im Wasser\n" @@ -1005,7 +1926,18 @@ static const u8 DexDescription_Goldini_1[] = _( static const u8 DexDescription_Goldini_2[] = _( "POKéMON Acht geben. Es könnte einen\n" "sonst heftig mit seinem Horn rammen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Golking_1[] = _( + "GOLKING gibt sehr viel Acht auf seine\n" + "Brut. Es patrouilliert um sein Nest und\n" + "die Eier herum, wobei sich das männliche"); +static const u8 DexDescription_Golking_2[] = _( + "und das weibliche Exemplar abwechseln.\n" + "Das Bewachen der Eier beschäftigt\n" + "dieses POKéMON für über einen Monat."); +#else static const u8 DexDescription_Golking_1[] = _( "Im Herbst kann man männliche GOLKING\n" "dabei beobachten, wie sie Balztänze in \n" @@ -1014,7 +1946,18 @@ static const u8 DexDescription_Golking_2[] = _( "weiblichen Exemplare zu beeindrucken.\n" "Während dieser Zeit ist die Farbe\n" "dieser POKéMON am schönsten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sterndu_1[] = _( + "STERNDU kommuniziert mit den Sternen\n" + "am Nachthimmel, indem es den roten\n" + "Kern in seiner Körpermitte blinken"); +static const u8 DexDescription_Sterndu_2[] = _( + "lässt. Wenn Teile seines Körpers\n" + "beschädigt wurden, stellt es die\n" + "fehlenden Teile selber wieder her."); +#else static const u8 DexDescription_Sterndu_1[] = _( "In STERNDUs Körpermitte befindet sich\n" "ein hellrot leuchtendes Organ - \n" @@ -1023,13 +1966,24 @@ static const u8 DexDescription_Sterndu_2[] = _( "an einen Strand gehst, sehen die\n" "leuchtenden Kerne dieser POKéMON aus\n" "wie Sterne."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Starmie_1[] = _( + "STARMIE kann schwimmen, indem es\n" + "seinen sternförmigen Körper wie eine\n" + "Schiffsschraube dreht. Der Kern in"); +static const u8 DexDescription_Starmie_2[] = _( + "seiner Körpermitte leuchtet in sieben\n" + "Farben."); +#else static const u8 DexDescription_Starmie_1[] = _( "STARMIEs Mittelteil, sein Kern, leuchtet\n" "in sieben Farben. Aufgrund dieser\n" "Eigenschaft wird es auch"); static const u8 DexDescription_Starmie_2[] = _( "“Juwel des Meeres” genannt."); +#endif static const u8 DexDescription_Pantimos_1[] = _( "PANTIMOS ist ein Meister der Pantomime.\n" @@ -1076,6 +2030,16 @@ static const u8 DexDescription_Magmar_2[] = _( "die das Gras und die Bäume der Umgebung\n" "in Brand setzen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pinsir_1[] = _( + "PINSIR hat ein Paar massive Hörner. Aus\n" + "diesen ragen Dornen hervor, die sich in\n" + "den Körper seines Gegners"); +static const u8 DexDescription_Pinsir_2[] = _( + "hineinbohren, wenn sich die Zange\n" + "schließt, und ihm das Entkommen\n" + "schwer machen."); +#else static const u8 DexDescription_Pinsir_1[] = _( "PINSIR ist erstaunlich stark. Es kann\n" "einen Feind, der doppelt so viel wiegt\n" @@ -1084,7 +2048,17 @@ static const u8 DexDescription_Pinsir_2[] = _( "packen und hochheben. Bei niedrigen\n" "Temperaturen werden die Bewegungen\n" "dieses POKéMON schwerfällig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tauros_1[] = _( + "Dieses POKéMON ist nur zufrieden, wenn\n" + "es kämpfen kann. Wenn TAUROS keinen\n" + "Gegner findet, sucht es sich robuste"); +static const u8 DexDescription_Tauros_2[] = _( + "Bäume und haut sie um, um sich\n" + "abzureagieren."); +#else static const u8 DexDescription_Tauros_1[] = _( "Dieses POKéMON ist nur zufrieden, wenn\n" "es kämpfen kann. Wenn TAUROS keinen\n" @@ -1092,7 +2066,18 @@ static const u8 DexDescription_Tauros_1[] = _( static const u8 DexDescription_Tauros_2[] = _( "Bäume und lässt sich an ihnen aus,\n" "um sich abzureagieren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Karpador_1[] = _( + "KARPADOR ist im Kampf praktisch nutz-\n" + "los, da es nur platschen kann.\n" + "Daher wird es als schwach eingeschätzt."); +static const u8 DexDescription_Karpador_2[] = _( + "Es ist aber tatsächlich sehr robust und\n" + "kann in jedem Gewässer überleben, egal,\n" + "wie verseucht dieses ist."); +#else static const u8 DexDescription_Karpador_1[] = _( "KARPADOR ist ein armseliges POKéMON,\n" "das nur platschen kann. Sein\n" @@ -1100,7 +2085,18 @@ static const u8 DexDescription_Karpador_1[] = _( static const u8 DexDescription_Karpador_2[] = _( "Wissenschaftler zum Forschen\n" "angeregt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Garados_1[] = _( + "Wenn GARADOS in Rage gerät, ist sein\n" + "wildes Blut kaum zu beruhigen, bis es\n" + "alles niedergebrannt hat."); +static const u8 DexDescription_Garados_2[] = _( + "Aufzeichnungen belegen, dass die\n" + "Zerstörungswut dieses POKéMON einen\n" + "ganzen Monat anhalten kann."); +#else static const u8 DexDescription_Garados_1[] = _( "Wenn sich KARPADOR zu GARADOS\n" "entwickelt, durchlaufen seine\n" @@ -1109,6 +2105,7 @@ static const u8 DexDescription_Garados_2[] = _( "Veränderung, was wohl der Grund für die\n" "zügellose, gewalttätige Natur dieses\n" "POKéMON ist."); +#endif static const u8 DexDescription_Lapras_1[] = _( "Die Menschen sind dafür verantwortlich,\n" @@ -1126,6 +2123,15 @@ static const u8 DexDescription_Ditto_2[] = _( "Gedächtnis verlässt, unterlaufen \n" "diesem POKéMON schon mal Fehler."); +#ifdef SAPPHIRE +static const u8 DexDescription_Evoli_1[] = _( + "EVOLIs genetisches Erbmaterial ist so\n" + "instabil, dass die Umgebung plötzliche\n" + "Mutationen auslösen kann."); +static const u8 DexDescription_Evoli_2[] = _( + "Die Wirkung verschiedener STEINE\n" + "führt zur Entwicklung dieses POKéMON."); +#else static const u8 DexDescription_Evoli_1[] = _( "EVOLIs genetisches Erbmaterial ist so\n" "instabil, dass die Umgebung plötzliche\n" @@ -1134,7 +2140,18 @@ static const u8 DexDescription_Evoli_2[] = _( "Die Wirkung verschiedener \n" "STEINE führt zur Entwicklung dieses \n" "POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Aquana_1[] = _( + "AQUANA hat eine spontane Mutation\n" + "durchlaufen. Ihm sind Flossen und \n" + "Kiemen gewachsen. Dadurch kann es"); +static const u8 DexDescription_Aquana_2[] = _( + "unter Wasser leben.\n" + "Dieses POKéMON kann Wasser nach\n" + "Belieben manipulieren."); +#else static const u8 DexDescription_Aquana_1[] = _( "AQUANA hat eine spontane Mutation\n" "durchgemacht und ihm sind Flossen und \n" @@ -1143,6 +2160,7 @@ static const u8 DexDescription_Aquana_2[] = _( "unter Wasser leben.\n" "Dieses POKéMON kann Wasser nach\n" "Belieben manipulieren."); +#endif static const u8 DexDescription_Blitza_1[] = _( "BLITZAs Zellen erzeugen schwache\n" @@ -1171,6 +2189,16 @@ static const u8 DexDescription_Porygon_2[] = _( "dass es durch Kopieren nicht\n" "vervielfältigt werden kann."); +#ifdef SAPPHIRE +static const u8 DexDescription_Amonitas_1[] = _( + "AMONITAS ist ein POKéMON, das seit\n" + "langer Zeit ausgestorben war, aber\n" + "durch die Menschen aus Fossilien"); +static const u8 DexDescription_Amonitas_2[] = _( + "reproduziert wurde. Wenn es von einem\n" + "Feind angegriffen wird, zieht es sich in\n" + "sein hartes Gehäuse zurück."); +#else static const u8 DexDescription_Amonitas_1[] = _( "AMONITAS ist ein POKéMON, das seit\n" "langer Zeit ausgestorben war, aber\n" @@ -1179,7 +2207,18 @@ static const u8 DexDescription_Amonitas_2[] = _( "reproduziert wurde. Wenn es von einem\n" "Feind angegriffen wird, zieht es sich in\n" "sein hartes Gehäuse zurück."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Amoroso_1[] = _( + "AMOROSO benutzt seine Tentakel, um\n" + "Beute einzufangen. Man nimmt an,\n" + "dass es ausgestorben ist, weil seine"); +static const u8 DexDescription_Amoroso_2[] = _( + "Schale zu groß und zu schwer geworden\n" + "ist, so dass seine Bewegungen immer\n" + "langsamer und schwerfälliger wurden."); +#else static const u8 DexDescription_Amoroso_1[] = _( "AMOROSO benutzt seine Tentakel, um\n" "Beute einzufangen. Man nimmt an,\n" @@ -1188,6 +2227,7 @@ static const u8 DexDescription_Amoroso_2[] = _( "Schale zu groß und zu schwer geworden\n" "war, so dass seine Bewegungen immer\n" "langsamer und schwerfälliger wurden."); +#endif static const u8 DexDescription_Kabuto_1[] = _( "KABUTO ist ein POKéMON, das aus einem\n" @@ -1224,6 +2264,16 @@ static const u8 DexDescription_Relaxo_2[] = _( "Kinder seinen dicken Bauch als Platz\n" "zum Spielen nutzen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Arktos_1[] = _( + "ARKTOS ist ein sagenumwobenes\n" + "Vogel-POKéMON, das Eis manipulieren\n" + "kann. Das Schlagen seiner Flügel"); +static const u8 DexDescription_Arktos_2[] = _( + "bringt die Luft zum Gefrieren. Man nimmt\n" + "an, dass es zu schneien beginnt, wenn\n" + "dieses POKéMON fliegt."); +#else static const u8 DexDescription_Arktos_1[] = _( "ARKTOS ist ein sagenumwobenes\n" "Vogel-POKéMON, das Eis manipulieren\n" @@ -1232,6 +2282,7 @@ static const u8 DexDescription_Arktos_2[] = _( "bringt die Luft zum Gefrieren. Es wird\n" "behauptet, dass es zu schneien\n" "beginnt, wenn dieses POKéMON fliegt."); +#endif static const u8 DexDescription_Zapdos_1[] = _( "ZAPDOS ist ein legendäres\n" @@ -1251,12 +2302,21 @@ static const u8 DexDescription_Lavados_2[] = _( "Vulkans, um sich zu verbrennen\n" "und selbst zu heilen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Dratini_1[] = _( + "DRATINI häutet sich ständig, da die\n" + "Lebensenergie in seinem Körper\n" + "stetig und unkontrollierbar ansteigt."); +static const u8 DexDescription_Dratini_2[] = _( + ""); +#else static const u8 DexDescription_Dratini_1[] = _( "DRATINI häutet sich ständig und\n" "entledigt sich so seiner Haut, da die\n" "Lebensenergie in seinem Körper"); static const u8 DexDescription_Dratini_2[] = _( "stetig und unkontrollierbar ansteigt."); +#endif static const u8 DexDescription_Dragonir_1[] = _( "DRAGONIR speichert eine enorme Menge\n" @@ -1292,6 +2352,16 @@ static const u8 DexDescription_Mew_2[] = _( "machen, so dass es sich auch Menschen\n" "nähern kann, ohne bemerkt zu werden."); +#ifdef SAPPHIRE +static const u8 DexDescription_Endivie_1[] = _( + "Im Kampf wedelt ENDIVIE mit seinem\n" + "Blatt, um den Feind fern zu halten. Von\n" + "dem Blatt geht auch ein süßlicher Duft"); +static const u8 DexDescription_Endivie_2[] = _( + "aus, der das gegnerische POKéMON im\n" + "Kampf beruhigt und eine gemütliche,\n" + "freundliche Atmosphäre schafft."); +#else static const u8 DexDescription_Endivie_1[] = _( "Im Kampf wedelt ENDIVIE mit seinem\n" "Blatt, um den Feind fern zu halten. Von\n" @@ -1300,6 +2370,7 @@ static const u8 DexDescription_Endivie_2[] = _( "aus, der die kämpfenden POKéMON\n" "beruhigt und eine gemütliche,\n" "freundliche Atmosphäre schafft."); +#endif static const u8 DexDescription_Lorblatt_1[] = _( "LORBLATTs Nacken ist mit\n" @@ -1310,6 +2381,15 @@ static const u8 DexDescription_Lorblatt_2[] = _( "Der Duft dieses Triebes bringt\n" "Menschen auf Trab."); +#ifdef SAPPHIRE +static const u8 DexDescription_Meganie_1[] = _( + "Der Duft von MEGANIEs Blume besänftigt\n" + "die Gemüter. Im Kampf gibt dieses\n" + "POKéMON mehr von seinem beruhigenden"); +static const u8 DexDescription_Meganie_2[] = _( + "Duftstoff ab, um den Kampfgeist des\n" + "Gegners zu besänftigen."); +#else static const u8 DexDescription_Meganie_1[] = _( "Der Duft von MEGANIEs Blume besänftigt\n" "Gemüter. Im Kampf gibt dieses POKéMON\n" @@ -1317,7 +2397,18 @@ static const u8 DexDescription_Meganie_1[] = _( static const u8 DexDescription_Meganie_2[] = _( "Duftstoff ab, um den Kampfgeist des\n" "Gegners zu schwächen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Feurigel_1[] = _( + "FEURIGEL lässt Flammen aus seinem\n" + "Rücken lodern, wenn es sich schützen\n" + "muss. Die Flammen sind sehr stark,"); +static const u8 DexDescription_Feurigel_2[] = _( + "wenn dieses POKéMON wütend ist. Ist es\n" + "aber müde, flackern die Flammen nur\n" + "unregelmäßig und schwach."); +#else static const u8 DexDescription_Feurigel_1[] = _( "FEURIGEL lässt Flammen aus seinem\n" "Rücken lodern, wenn es sich schützen\n" @@ -1326,6 +2417,7 @@ static const u8 DexDescription_Feurigel_2[] = _( "wenn dieses POKéMON wütend ist. Ist es\n" "aber müde, flackern die Flammen nur\n" "unregelmäßig und schwach."); +#endif static const u8 DexDescription_Igelavar_1[] = _( "IGELAVAR hält seine Gegner mit Flammen\n" @@ -1336,6 +2428,15 @@ static const u8 DexDescription_Igelavar_2[] = _( "Angriffen auszuweichen und seinen\n" "Gegner gleichzeitig zu versengen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Tornupto_1[] = _( + "TORNUPTO versteckt sich hinter einem\n" + "flimmernden Hitzeschild, den es mit\n" + "Hilfe seiner heißen Flammen erzeugt."); +static const u8 DexDescription_Tornupto_2[] = _( + "Dieses POKéMON erzeugt Explosionen,\n" + "die alles in Schutt und Asche legen."); +#else static const u8 DexDescription_Tornupto_1[] = _( "TORNUPTO versteckt sich hinter einem\n" "flimmernden Hitzeschild, den es mit\n" @@ -1344,6 +2445,7 @@ static const u8 DexDescription_Tornupto_2[] = _( "Dieses POKéMON erzeugt Explosionen,\n" "die alles in Schutt und Asche\n" "legen."); +#endif static const u8 DexDescription_Karnimani_1[] = _( "KARNIMANI ist zwar sehr klein, aber\n" @@ -1390,6 +2492,15 @@ static const u8 DexDescription_Wiesenior_2[] = _( "Gliedmaßen ist dieses POKéMON sehr\n" "wendig und flink."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hoothoot_1[] = _( + "HOOTHOOT besitzt ein inneres Organ, das\n" + "die Erdumdrehung wahrnimmt. Dieses\n" + "besondere Organ ermöglicht es diesem"); +static const u8 DexDescription_Hoothoot_2[] = _( + "POKéMON, jeden Tag zur selben Zeit\n" + "zu schreien."); +#else static const u8 DexDescription_Hoothoot_1[] = _( "HOOTHOOT besitzt ein inneres Organ, das\n" "die Erdumdrehung wahrnimmt. Dieses\n" @@ -1397,7 +2508,18 @@ static const u8 DexDescription_Hoothoot_1[] = _( static const u8 DexDescription_Hoothoot_2[] = _( "POKéMON, jeden Tag zur selben Zeit zu\n" "schreien."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Noctuh_1[] = _( + "Dank seines hervorragenden\n" + "Sehvermögens, mit dem es auch bei\n" + "geringer Beleuchtung sehen kann, und"); +static const u8 DexDescription_Noctuh_2[] = _( + "dank seiner geschmeidigen Flügel,\n" + "mit denen es geräuschlos fliegen kann,\n" + "entgeht NOCTUH keine Beute."); +#else static const u8 DexDescription_Noctuh_1[] = _( "Dank seines hervorragenden\n" "Sehvermögens, mit dem es auch bei\n" @@ -1406,6 +2528,7 @@ static const u8 DexDescription_Noctuh_2[] = _( "dank seiner geschmeidigen Flügel,\n" "mit denen es geräuschlos fliegt,\n" "entgeht NOCTUH keine Beute."); +#endif static const u8 DexDescription_Ledyba_1[] = _( "LEDYBA sondert eine duftende\n" @@ -1432,6 +2555,15 @@ static const u8 DexDescription_Webarak_2[] = _( "Vibrationen der Netzfäden bestimmen,\n" "welche Art Beute sich darauf befindet."); +#ifdef SAPPHIRE +static const u8 DexDescription_Ariados_1[] = _( + "ARIADOS hat kleine hakenförmige Krallen\n" + "an seinen Füßen. Damit kann es an\n" + "Decken und Wänden entlangflitzen."); +static const u8 DexDescription_Ariados_2[] = _( + "Dieses POKéMON erdrückt seine Gegner\n" + "mit starkem, dünnem Seidenfaden."); +#else static const u8 DexDescription_Ariados_1[] = _( "ARIADOS hat kleine hakenförmige Krallen\n" "an seinen Füßen. Damit kann es an\n" @@ -1439,7 +2571,18 @@ static const u8 DexDescription_Ariados_1[] = _( static const u8 DexDescription_Ariados_2[] = _( "Dieses POKéMON erdrückt seine Gegner\n" "mit starkem, dünnem Seidenfaden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Iksbat_1[] = _( + "IKSBATs Flügelschlag ist so leise, dass\n" + "die Beute lautlos überrascht wird.\n" + "Dieses POKéMON ruht sich"); +static const u8 DexDescription_Iksbat_2[] = _( + "aus, indem es sich mit seinen\n" + "Hinterbeinen, die ihm als Flügel\n" + "dienen, an einen Ast hängt."); +#else static const u8 DexDescription_Iksbat_1[] = _( "Wenn IKSBAT fliegt, indem es nur ein \n" "Paar Flügel, entweder an seinen Vorder-\n" @@ -1448,7 +2591,17 @@ static const u8 DexDescription_Iksbat_2[] = _( "Anzeichen dafür, dass dieses POKéMON \n" "bereits eine lange Strecke hinter sich\n" "hat. Dann wechselt es die Flügel häufig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lampi_1[] = _( + "LAMPIs zwei Antennen sind mit Zellen\n" + "gefüllt, die Elektrizität erzeugen. \n" + "Die elektrische Ladung ist so stark,"); +static const u8 DexDescription_Lampi_2[] = _( + "dass es sogar ein leichtes Kribbeln\n" + "verspürt."); +#else static const u8 DexDescription_Lampi_1[] = _( "LAMPI gibt positive und negative\n" "elektrische Ladungen durch seine\n" @@ -1457,7 +2610,18 @@ static const u8 DexDescription_Lampi_2[] = _( "Dieses POKéMON lässt seine Lichter\n" "aufflackern und tauscht Signale mit\n" "seinen Artgenossen aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lanturn_1[] = _( + "LANTURN strahlt Licht ab. Wenn du\n" + "nachts aufs dunkle Meer hinausblickst,\n" + "kannst du vielleicht das Licht dieses"); +static const u8 DexDescription_Lanturn_2[] = _( + "PKMN aus der Tiefe, in der es schwimmt,\n" + "heraufschimmern sehen. Es lässt das\n" + "Meer wie eine sternklare Nacht wirken."); +#else static const u8 DexDescription_Lanturn_1[] = _( "LANTURN wird auch “Tiefseestern”\n" "genannt, da es leuchtende Antennen\n" @@ -1466,7 +2630,18 @@ static const u8 DexDescription_Lanturn_2[] = _( "indem es in den Antennen eine chemische\n" "Reaktion zwischen Bakterien und seinen\n" "Körperflüssigkeiten erzeugt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pichu_1[] = _( + "Wenn PICHU mit anderen spielt, kann es\n" + "einen Kurzschluss mit einem seiner \n" + "Artgenossen erzeugen, so dass die"); +static const u8 DexDescription_Pichu_2[] = _( + "Funken sprühen. Dann beginnt es zu\n" + "weinen, weil es vor den Funken\n" + "erschrickt."); +#else static const u8 DexDescription_Pichu_1[] = _( "An Gewittertagen oder Tagen, an denen\n" "die Luft sehr trocken ist, kann sich\n" @@ -1474,7 +2649,17 @@ static const u8 DexDescription_Pichu_1[] = _( static const u8 DexDescription_Pichu_2[] = _( "aufladen. Dann kann man das Knistern\n" "statischer Aufladung hören."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pii_1[] = _( + "In Nächten mit vielen Sternschnuppen\n" + "kann man PII im Kreis tanzen sehen. Es\n" + "tanzt die ganze Nacht hindurch und"); +static const u8 DexDescription_Pii_2[] = _( + "hört erst bei Sonnenaufgang auf, um\n" + "seinen Durst mit Morgentau zu stillen."); +#else static const u8 DexDescription_Pii_1[] = _( "In Nächten mit vielen Sternschnuppen,\n" "kann man PII im Kreis tanzen sehen. Es\n" @@ -1482,7 +2667,16 @@ static const u8 DexDescription_Pii_1[] = _( static const u8 DexDescription_Pii_2[] = _( "hört erst bei Sonnenaufgang auf, um\n" "seinen Durst mit Morgentau zu stillen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fluffeluff_1[] = _( + "FLUFFELUFF hat einen weichen Körper,\n" + "der sich anfühlt wie ein Marshmallow. Es\n" + "verströmt einen süßlichen Duft, der"); +static const u8 DexDescription_Fluffeluff_2[] = _( + "die Emotionen seiner Gegner beruhigt."); +#else static const u8 DexDescription_Fluffeluff_1[] = _( "FLUFFELUFFs Stimmbänder sind noch\n" "nicht voll entwickelt. Wenn es zu viel\n" @@ -1490,7 +2684,18 @@ static const u8 DexDescription_Fluffeluff_1[] = _( static const u8 DexDescription_Fluffeluff_2[] = _( "Dieses POKéMON gurgelt mit Süßwasser\n" "aus einem sauberen Fluss."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Togepi_1[] = _( + "TOGEPI benutzt die positiven Emotionen\n" + "Freude und Mitgefühl von Menschen und\n" + "POKéMON als Energie."); +static const u8 DexDescription_Togepi_2[] = _( + "Dieses POKéMON speichert Glücksgefühle\n" + "in seiner Schale und teilt sie mit\n" + "anderen."); +#else static const u8 DexDescription_Togepi_1[] = _( "TOGEPI nutzt die positiven Emotionen,\n" "wie Freude und Mitgefühl, von Menschen\n" @@ -1499,14 +2704,33 @@ static const u8 DexDescription_Togepi_2[] = _( "Dieses POKéMON speichert Glücksgefühle\n" "in seiner Schale und teilt sie mit\n" "anderen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Togetic_1[] = _( + "TOGETIC ist ein POKéMON, das Glück\n" + "bringt. Wenn es jemanden trifft, der\n" + "gutherzig ist, teilt es seine Freude mit"); +static const u8 DexDescription_Togetic_2[] = _( + "dieser Person."); +#else static const u8 DexDescription_Togetic_1[] = _( "TOGETIC ist ein POKéMON, das Glück\n" "bringt. Wenn es jemanden trifft, der\n" "reinen Herzens ist, zeigt es sich und"); static const u8 DexDescription_Togetic_2[] = _( "teilt sein Glück mit dieser Person."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Natu_1[] = _( + "NATU kann hervorragend springen.\n" + "Dieses POKéMON schlägt mit den Flügeln\n" + "und springt auf Äste, die höher liegen,"); +static const u8 DexDescription_Natu_2[] = _( + "als ein Erwachsener groß ist, um an die\n" + "neuen Triebe eines Baumes zu kommen."); +#else static const u8 DexDescription_Natu_1[] = _( "NATU kann nicht fliegen, da seine Flügel\n" "noch nicht ausgewachsen sind. Wenn du\n" @@ -1515,7 +2739,17 @@ static const u8 DexDescription_Natu_2[] = _( "starrt es dich konzentriert an. Wenn du\n" "dich aber bewegst, hüpft es weg, um sich\n" "in Sicherheit zu bringen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Xatu_1[] = _( + "XATU steht den ganzen Tag \n" + "bewegungslos herum und starrt die\n" + "Sonne an. Einige Menschen verehren es"); +static const u8 DexDescription_Xatu_2[] = _( + "als ein mystisches POKéMON. Sie glauben,\n" + "dass XATU in die Zukunft sehen könne."); +#else static const u8 DexDescription_Xatu_1[] = _( "XATU bleibt den ganzen Tag an ein und\n" "demselben Ort wie angewurzelt stehen. \n" @@ -1523,6 +2757,7 @@ static const u8 DexDescription_Xatu_1[] = _( static const u8 DexDescription_Xatu_2[] = _( "Angst vor den Dingen tut, die es für die\n" "Zukunft vorausgesehen hat."); +#endif static const u8 DexDescription_Voltilamm_1[] = _( "VOLTILAMMs flauschiges, wollenes Fell\n" @@ -1549,6 +2784,15 @@ static const u8 DexDescription_Ampharos_2[] = _( "dieses POKéMON dazu, Signale über\n" "weite Entfernungen auszutauschen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Blubella_1[] = _( + "BLUBELLA wachsen schönere Blumen,\n" + "wenn es sich aus einem übel riechenden\n" + "DUFLOR entwickelt hat - je stinkender,"); +static const u8 DexDescription_Blubella_2[] = _( + "desto besser. Nachts schließt dieses\n" + "POKéMON seine Blätter und schläft."); +#else static const u8 DexDescription_Blubella_1[] = _( "Wenn BLUBELLA starkem Sonnenlicht\n" "ausgesetzt ist, beginnen sich die Blät-\n" @@ -1556,7 +2800,17 @@ static const u8 DexDescription_Blubella_1[] = _( static const u8 DexDescription_Blubella_2[] = _( "Der Tanz dieses POKéMON ist in\n" "südlichen Ländern sehr bekannt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Marill_1[] = _( + "Wenn es am Ufer eines reißenden Flusses\n" + "fischt, wickelt MARILL seinen Schweif\n" + "um einen Baumstamm. Der Schweif dieses"); +static const u8 DexDescription_Marill_2[] = _( + "POKéMON ist flexibel und elastisch, so\n" + "dass es ihn ausdehnen kann."); +#else static const u8 DexDescription_Marill_1[] = _( "MARILLs Schweif ist mit Öl gefüllt und\n" "dient ihm als eine Art Rettungsring.\n" @@ -1565,7 +2819,18 @@ static const u8 DexDescription_Marill_2[] = _( "Wasseroberfläche zu sehen ist, taucht\n" "dieses POKéMON gerade, um sich von\n" "Wasserpflanzen zu ernähren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Azumarill_1[] = _( + "AZUMARILL kann aus Luft Ballons\n" + "machen. Diese Luft-Ballons erzeugt es,\n" + "wenn es ein ertrinkendes POKéMON"); +static const u8 DexDescription_Azumarill_2[] = _( + "erspäht. Durch die Ballons kann das\n" + "POKéMON, das in Schwierigkeiten \n" + "geraten ist, atmen."); +#else static const u8 DexDescription_Azumarill_1[] = _( "AZUMARILLs lange Ohren dienen ihm\n" "als unentbehrliche Sensoren. Wenn es\n" @@ -1574,6 +2839,7 @@ static const u8 DexDescription_Azumarill_2[] = _( "POKéMON auch in reißenden Flüssen\n" "identifizieren, welche Art von Beute\n" "sich in seiner Nähe befindet."); +#endif static const u8 DexDescription_Mogelbaum_1[] = _( "MOGELBAUM tarnt sich als Baum, um\n" @@ -1583,6 +2849,15 @@ static const u8 DexDescription_Mogelbaum_2[] = _( "das ganze Jahr über grün bleiben, fällt\n" "seine Tarnung im Winter leicht auf."); +#ifdef SAPPHIRE +static const u8 DexDescription_Quaxo_1[] = _( + "QUAXO hat lockiges Haar, das ihm den\n" + "Status eines Königs bescheinigt. Je\n" + "länger und lockiger sein Haar ist, desto"); +static const u8 DexDescription_Quaxo_2[] = _( + "mehr Respekt erntet dieses POKéMON\n" + "von seinen Artgenossen."); +#else static const u8 DexDescription_Quaxo_1[] = _( "QUAXO hat gelocktes Haar, das ihm den\n" "Status eines Königs bescheinigt. Je\n" @@ -1590,6 +2865,7 @@ static const u8 DexDescription_Quaxo_1[] = _( static const u8 DexDescription_Quaxo_2[] = _( "mehr Respekt erntet dieses POKéMON\n" "von seinen Artgenossen."); +#endif static const u8 DexDescription_Hoppspross_1[] = _( "HOPPSPROSS lässt sich vom Wind\n" @@ -1599,6 +2875,16 @@ static const u8 DexDescription_Hoppspross_2[] = _( "Blätter mit anderen HOPPSPROSS,\n" "damit es nicht davongeweht wird."); +#ifdef SAPPHIRE +static const u8 DexDescription_Hubelupf_1[] = _( + "HUBELUPFs Blume beginnt zu blühen, wenn\n" + "die Temperatur über 18 Grad steigt. Wie\n" + "weit sich die Blume öffnet, hängt von"); +static const u8 DexDescription_Hubelupf_2[] = _( + "der Temperatur ab. Daher wird dieses\n" + "POKéMON manchmal als Thermometer\n" + "eingesetzt."); +#else static const u8 DexDescription_Hubelupf_1[] = _( "HUBELUPFs Blume beginnt zu blühen, wenn\n" "die Temperatur über 18 Grad steigt. Wie\n" @@ -1607,6 +2893,7 @@ static const u8 DexDescription_Hubelupf_2[] = _( "der Höhe der Temperatur ab. Daher wird\n" "dieses POKéMON manchmal als\n" "Thermometer eingesetzt."); +#endif static const u8 DexDescription_Papungha_1[] = _( "PAPUNGHA nutzt den Südwind, um das\n" @@ -1642,6 +2929,16 @@ static const u8 DexDescription_Sonnflora_2[] = _( "Wenn aber die Sonne untergegangen ist,\n" "hört es auf sich zu bewegen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Yanma_1[] = _( + "YANMA hat einen Blickwinkel von 360\n" + "Grad, ohne die Augen bewegen zu müssen.\n" + "Es ist ein großartiger Flieger und geübt"); +static const u8 DexDescription_Yanma_2[] = _( + "darin, plötzlich anzuhalten oder\n" + "Wendemanöver hinzulegen. So kann es\n" + "sich blitzschnell auf Beute stürzen."); +#else static const u8 DexDescription_Yanma_1[] = _( "YANMA hat einen Blickwinkel von 360\n" "Grad, ohne die Augen bewegen zu müssen.\n" @@ -1650,6 +2947,7 @@ static const u8 DexDescription_Yanma_2[] = _( "darin, plötzlich anzuhalten oder\n" "Wendemanöver vorzunehmen. So kann es\n" "sich blitzschnell auf Beute stürzen."); +#endif static const u8 DexDescription_Felino_1[] = _( "FELINO lebt eigentlich im Wasser.\n" @@ -1711,6 +3009,16 @@ static const u8 DexDescription_Traunfugil_2[] = _( "Feinde aufzunehmen und sie in\n" "Nahrung umzuwandeln."); +#ifdef SAPPHIRE +static const u8 DexDescription_Icognito_1[] = _( + "ICOGNITO hat die Form antiker\n" + "Schriftzeichen. Bis heute ist unklar,\n" + "was zuerst da war - die antiken"); +static const u8 DexDescription_Icognito_2[] = _( + "Schriftzeichen oder die vielen unter-\n" + "schiedlichen ICOGNITO. Trotz umfang-\n" + "reicher Forschung bleiben Fragen offen."); +#else static const u8 DexDescription_Icognito_1[] = _( "ICOGNITO hat die Form antiker\n" "Schriftzeichen. Bis heute ist unklar,\n" @@ -1719,7 +3027,18 @@ static const u8 DexDescription_Icognito_2[] = _( "Schriftzeichen oder die vielen unter-\n" "schiedlichen ICOGNITO. Trotz umfang-\n" "reicher Forschung bleiben Fragen offen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Woingenau_1[] = _( + "WOINGENAU tut nichts anderes als\n" + "Angriffe auszuhalten. Von sich aus\n" + "würde es nie angreifen. Eine Attacke"); +static const u8 DexDescription_Woingenau_2[] = _( + "auf seinen Schweif würde es allerdings\n" + "niemals dulden. Wenn das passiert, \n" + "setzt es ABGANGSBUND ein."); +#else static const u8 DexDescription_Woingenau_1[] = _( "Wenn zwei oder mehr WOINGENAU \n" "aufeinander treffen, versuchen sie,\n" @@ -1728,7 +3047,18 @@ static const u8 DexDescription_Woingenau_2[] = _( "Sie möchten herausfinden, welches\n" "POKéMON es am längsten ohne Nahrung\n" "aushält. Darauf müssen Trainer achten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Girafarig_1[] = _( + "Der Kopf an GIRAFARIGs Hinterteil\n" + "verfügt nur über ein kleines Gehirn, mit\n" + "dem es nicht denken kann. Dieses Gehirn"); +static const u8 DexDescription_Girafarig_2[] = _( + "benötigt jedoch keinen Schlaf und ist\n" + "somit in der Lage, die Umgebung rund\n" + "um die Uhr im Auge zu behalten."); +#else static const u8 DexDescription_Girafarig_1[] = _( "Der Kopf an GIRAFARIGs Hinterteil hat\n" "ein eigenes Gehirn. Er reagiert mit\n" @@ -1737,7 +3067,17 @@ static const u8 DexDescription_Girafarig_2[] = _( "Wenn man sich diesem POKéMON von\n" "hinten nähert, könnte der hintere Kopf\n" "plötzlich vorschnellen und zubeißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tannza_1[] = _( + "TANNZA hängt an Ästen und wartet auf\n" + "Beute. Wenn man dieses POKéMON bei\n" + "einer Mahlzeit stört, indem man seinen"); +static const u8 DexDescription_Tannza_2[] = _( + "Baum schüttelt, fällt es herunter und\n" + "explodiert ohne Vorwarnung."); +#else static const u8 DexDescription_Tannza_1[] = _( "TANNZA hängt an Ästen und wartet auf\n" "Beute. Wenn man dieses POKéMON bei\n" @@ -1746,6 +3086,7 @@ static const u8 DexDescription_Tannza_2[] = _( "Baum, auf dem es sich befindet,\n" "schüttelt, fällt es herunter und\n" "explodiert ohne Vorwarnung."); +#endif static const u8 DexDescription_Forstellka_1[] = _( "FORSTELLKA versteckt sich in seiner\n" @@ -1799,6 +3140,16 @@ static const u8 DexDescription_Granbull_2[] = _( "Es beißt nur zu, wenn es erschreckt\n" "wird."); +#ifdef SAPPHIRE +static const u8 DexDescription_Baldorfish_1[] = _( + "BALDORFISH saugt Wasser ein, um sich\n" + "aufzublasen. Dieses POKéMON nutzt den\n" + "Druck des Wassers dazu, giftige"); +static const u8 DexDescription_Baldorfish_2[] = _( + "Stacheln zu verschießen. Es betrachtet\n" + "Schwimmen als eine echte Heraus-\n" + "forderung."); +#else static const u8 DexDescription_Baldorfish_1[] = _( "BALDORFISH saugt Wasser ein, um sich\n" "aufzublasen. Dieses POKéMON nutzt den\n" @@ -1807,6 +3158,7 @@ static const u8 DexDescription_Baldorfish_2[] = _( "Stacheln aus seinem Körper zu\n" "verschießen. Es betrachtet Schwimmen\n" "als eine echte Herausforderung."); +#endif static const u8 DexDescription_Scherox_1[] = _( "SCHEROX’ Körper ist hart wie Stahl.\n" @@ -1816,6 +3168,16 @@ static const u8 DexDescription_Scherox_2[] = _( "mit den Flügeln, um seine\n" "Körpertemperatur zu regulieren."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pottrott_1[] = _( + "POTTROTT versteckt sich leise unter\n" + "Steinen und verbirgt seinen Körper in\n" + "seiner harten Schale, wenn es Beeren"); +static const u8 DexDescription_Pottrott_2[] = _( + "zu sich nimmt.\n" + "Die Beeren vermischen sich mit seinen\n" + "Körperflüssigkeiten zu einem Saft."); +#else static const u8 DexDescription_Pottrott_1[] = _( "POTTROTT versteckt sich leise unter\n" "Steinen und verbirgt seinen Körper in\n" @@ -1824,7 +3186,18 @@ static const u8 DexDescription_Pottrott_2[] = _( "gesammelte Beeren zu sich nimmt. Die\n" "Beeren vermischen sich mit seinen\n" "Körperflüssigkeiten zu einem Saft."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Skaraborn_1[] = _( + "SKARABORN hat scharfe Krallen an den\n" + "Füßen. Diese bohren sich fest in den\n" + "Boden oder in die Rinde eines Baumes"); +static const u8 DexDescription_Skaraborn_2[] = _( + "und geben diesem POKéMON einen siche-\n" + "ren Halt. So kann es seine Gegner mit\n" + "seinem imposanten Horn wegschleudern."); +#else static const u8 DexDescription_Skaraborn_1[] = _( "SKARABORN geht direkt auf seinen\n" "Gegner los, rutscht auf ihn zu, um ihn\n" @@ -1833,7 +3206,17 @@ static const u8 DexDescription_Skaraborn_2[] = _( "Horn wegzuschleudern. Dieses POKéMON\n" "hat genug Kraft, um einen massigen\n" "Baum umzustoßen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sniebel_1[] = _( + "SNIEBEL klettert an Bäumen hoch, indem\n" + "es seine hakenförmigen Krallen in die\n" + "Rinde schlägt. Dieses POKéMON sucht"); +static const u8 DexDescription_Sniebel_2[] = _( + "nach unbewachten Nestern und stiehlt\n" + "die Eier. Davon ernährt es sich."); +#else static const u8 DexDescription_Sniebel_1[] = _( "SNIEBEL klettert an Bäumen hoch, indem\n" "es seine hakenförmigen Krallen in die\n" @@ -1842,7 +3225,17 @@ static const u8 DexDescription_Sniebel_2[] = _( "nach unbewachten Nestern und stiehlt\n" "die Eier, wenn die Eltern auf Nahrungs-\n" "suche sind. Davon ernährt es sich."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Teddiursa_1[] = _( + "TEDDIURSA leckt gern seine mit Honig\n" + "bedeckten Pfoten ab. Dieses POKéMON\n" + "bereitet seinen eigenen Honig zu, indem"); +static const u8 DexDescription_Teddiursa_2[] = _( + "es die von BIBOR gesammelten Früchte\n" + "und Pollen vermengt."); +#else static const u8 DexDescription_Teddiursa_1[] = _( "TEDDIURSA leckt gern seine mit Honig\n" "bedeckten Pranken ab. Dieses POKéMON\n" @@ -1850,6 +3243,7 @@ static const u8 DexDescription_Teddiursa_1[] = _( static const u8 DexDescription_Teddiursa_2[] = _( "es die von BIBOR gesammelten Früchte\n" "und Pollen miteinander vermengt."); +#endif static const u8 DexDescription_Ursaring_1[] = _( "In den von URSARING bewohnten Wäldern\n" @@ -1859,6 +3253,15 @@ static const u8 DexDescription_Ursaring_2[] = _( "POKéMON läuft täglich durch den Wald,\n" "um nach Essbarem zu suchen."); +#ifdef SAPPHIRE +static const u8 DexDescription_Schneckmag_1[] = _( + "SCHNECKMAG hat kein Blut in seinem\n" + "Körper. Stattdessen fließt glühend\n" + "heißes Magma in diesem POKéMON,"); +static const u8 DexDescription_Schneckmag_2[] = _( + "das seine Organe mit lebenswichtigen\n" + "Nährstoffen und Sauerstoff versorgt."); +#else static const u8 DexDescription_Schneckmag_1[] = _( "Durch SCHNECKMAGs Kreislaufsystem\n" "fließt Magma. Wenn dieses POKéMON\n" @@ -1867,7 +3270,18 @@ static const u8 DexDescription_Schneckmag_2[] = _( "aus und erhärtet. Sein Körper wird\n" "spröde und es brechen Stücke heraus,\n" "so dass es kleiner wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magcargo_1[] = _( + "MAGCARGOs Körpertemperatur liegt bei\n" + "etwa 10.000 Grad. Dieses POKéMON\n" + "bringt Wasser sofort zum Verdampfen."); +static const u8 DexDescription_Magcargo_2[] = _( + "Wenn dieses POKéMON im Regen steht,\n" + "werden die Tropfen augenblicklich zu\n" + "Dampf und es entsteht dichter Nebel."); +#else static const u8 DexDescription_Magcargo_1[] = _( "MAGCARGOs Schale ist eigentlich seine\n" "Haut, die erhärtet ist, als es auskühlte.\n" @@ -1876,7 +3290,18 @@ static const u8 DexDescription_Magcargo_2[] = _( "zerbrechlich. Schon bei einer leichten\n" "Berührung bricht sie auseinander. Dann\n" "muss es ein Bad in Magma nehmen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Quiekel_1[] = _( + "Auf Nahrungssuche schnüffelt QUIEKEL\n" + "am Boden entlang. Seine \n" + "Lieblingsspeise ist ein Pilz, der unter"); +static const u8 DexDescription_Quiekel_2[] = _( + "abgestorbenem Gras wächst. \n" + "Manchmal spürt dieses POKéMON heiße\n" + "Quellen auf."); +#else static const u8 DexDescription_Quiekel_1[] = _( "Auf Nahrungssuche schnüffelt QUIEKEL\n" "am Boden entlang. Seine \n" @@ -1885,7 +3310,18 @@ static const u8 DexDescription_Quiekel_2[] = _( "verwesendem Gras wächst. \n" "Manchmal spürt dieses POKéMON heiße\n" "Quellen auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Keifel_1[] = _( + "KEIFEL hat ein dichtes Fell aus langen\n" + "Haaren. Dadurch ist es gegen eisige\n" + "Kälte gewappnet."); +static const u8 DexDescription_Keifel_2[] = _( + "Dieses POKéMON benutzt seine\n" + "Stoßzähne, um an Nahrung zu gelangen,\n" + "die unter dem Eis eingeschlossen ist."); +#else static const u8 DexDescription_Keifel_1[] = _( "KEIFEL hat ein dichtes Fell aus langen\n" "Haaren. Dadurch ist es gegen eisige\n" @@ -1894,7 +3330,18 @@ static const u8 DexDescription_Keifel_2[] = _( "Dieses POKéMON benutzt seine\n" "Hauer, um an Nahrung zu gelangen, die\n" "unter dem Eis eingeschlossen ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Corasonn_1[] = _( + "Scharen von CORASONN sammeln sich im\n" + "warmen Meer und dienen kleineren\n" + "POKéMON als ideale Plätze zum"); +static const u8 DexDescription_Corasonn_2[] = _( + "Verstecken. Wenn die Wassertemperatur\n" + "sinkt, wandert dieses POKéMON in die\n" + "südlichen Meere ab."); +#else static const u8 DexDescription_Corasonn_1[] = _( "Wenn CORASONNs Arme Sonnenlicht\n" "abbekommen, glitzern sie wunderschön\n" @@ -1902,6 +3349,7 @@ static const u8 DexDescription_Corasonn_1[] = _( static const u8 DexDescription_Corasonn_2[] = _( "abbricht, wächst über Nacht ein neuer\n" "nach."); +#endif static const u8 DexDescription_Remoraid_1[] = _( "REMORAID saugt Wasser ein und spritzt\n" @@ -1921,6 +3369,16 @@ static const u8 DexDescription_Octillery_2[] = _( "Wenn ein Feind zu stark ist, speit es\n" "Tinte aus und flüchtet."); +#ifdef SAPPHIRE +static const u8 DexDescription_Botogel_1[] = _( + "BOTOGEL sammelt seine Nahrung in\n" + "seinem Schweif. Es gab einmal einen\n" + "berühmten Entdecker, der es dank eines"); +static const u8 DexDescription_Botogel_2[] = _( + "BOTOGEL geschafft hat, einen der\n" + "höchsten Berge der Welt zu besteigen.\n" + "Es hat seine Nahrung mit ihm geteilt."); +#else static const u8 DexDescription_Botogel_1[] = _( "BOTOGEL sammelt seine Nahrung in\n" "seinem Schweif. Es gab einmal einen\n" @@ -1929,7 +3387,18 @@ static const u8 DexDescription_Botogel_2[] = _( "BOTOGELs geschafft hat, einen der\n" "höchsten Berge der Welt zu besteigen.\n" "Es hatte seine Nahrung mit ihm geteilt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Mantax_1[] = _( + "An schönen Tagen sieht man Scharen\n" + "von MANTAX elegant über die Wellen des\n" + "Ozeans springen."); +static const u8 DexDescription_Mantax_2[] = _( + "Durch REMORAID, die an ihm haften\n" + "und ihn begleiten, fühlt sich dieses\n" + "POKéMON nicht belästigt."); +#else static const u8 DexDescription_Mantax_1[] = _( "An schönen Tagen sieht man Schwärme\n" "von MANTAX elegant über die Wellen des\n" @@ -1938,7 +3407,17 @@ static const u8 DexDescription_Mantax_2[] = _( "Durch REMORAID, die an ihm haften\n" "und ihn begleiten, fühlt sich dieses\n" "POKéMON nicht belästigt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Panzaeron_1[] = _( + "PANZAERONs Stahlflügel bekommen in den\n" + "vielen Kämpfen, die es austrägt, Risse\n" + "und Beulen. Einmal im Jahr wachsen"); +static const u8 DexDescription_Panzaeron_2[] = _( + "seine Flügel komplett nach und werden\n" + "wiederhergestellt."); +#else static const u8 DexDescription_Panzaeron_1[] = _( "PANZAERON ist komplett in einen harten,\n" "schützenden Panzer eingehüllt. Dieses\n" @@ -1946,6 +3425,7 @@ static const u8 DexDescription_Panzaeron_1[] = _( static const u8 DexDescription_Panzaeron_2[] = _( "Es greift seine Feinde mit seinen\n" "messerscharfen Flügeln an."); +#endif static const u8 DexDescription_Hunduster_1[] = _( "HUNDUSTER jagen in Gruppen. Sie\n" @@ -1965,13 +3445,31 @@ static const u8 DexDescription_Hundemon_2[] = _( "durch das Ausfechten von Kämpfen\n" "untereinander."); +#ifdef SAPPHIRE +static const u8 DexDescription_Seedraking_1[] = _( + "SEEDRAKING schläft auf dem Meeres-\n" + "boden, wo ansonsten niemand lebt. Wenn\n" + "ein Sturm aufkommt, wacht es auf und"); +static const u8 DexDescription_Seedraking_2[] = _( + "macht sich auf die Suche nach Beute."); +#else static const u8 DexDescription_Seedraking_1[] = _( "SEEDRAKING lebt in den Tiefen des\n" "Ozeans, die ansonsten verwaist sind.\n" "Lange hat man geglaubt, dass das"); static const u8 DexDescription_Seedraking_2[] = _( "Gähnen dieses POKéMON Strudel auslöst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Phanpy_1[] = _( + "PHANPY kann sich mit seiner langen Nase\n" + "selbst duschen. Wenn andere dabei sind,\n" + "begießen sie sich gegenseitig mit"); +static const u8 DexDescription_Phanpy_2[] = _( + "Wasser. Danach trocknet es seinen \n" + "durchnässten Körper am Ufer."); +#else static const u8 DexDescription_Phanpy_1[] = _( "Um sich ein Nest zu bauen, gräbt\n" "PHANPY am Flussufer ein Loch ins\n" @@ -1980,7 +3478,17 @@ static const u8 DexDescription_Phanpy_2[] = _( "seines Nests mit Hilfe seines Rüssels,\n" "damit seine Artgenossen wissen, dass\n" "dieses Gebiet vergeben ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Donphan_1[] = _( + "DONPHAN kann mit seinem harten Körper\n" + "sogar ein Haus zerstören. Mit seiner\n" + "imposanten Kraft hilft dieses POKéMON"); +static const u8 DexDescription_Donphan_2[] = _( + "dabei, Erdrutsche aus dem Weg zu\n" + "räumen, die Bergpfade versperren."); +#else static const u8 DexDescription_Donphan_1[] = _( "DONPHANs Lieblingsattacke ist es, als\n" "Ball zusammengerollt mit voller Wucht\n" @@ -1988,6 +3496,7 @@ static const u8 DexDescription_Donphan_1[] = _( static const u8 DexDescription_Donphan_2[] = _( "Wenn es erst einmal rollt, ist dieses\n" "POKéMON nur schwer aufzuhalten."); +#endif static const u8 DexDescription_Porygon2_1[] = _( "PORYGON2 wurde in einem\n" @@ -1998,6 +3507,14 @@ static const u8 DexDescription_Porygon2_2[] = _( "selbstständig neue Gesten und Gefühle\n" "erlernen kann."); +#ifdef SAPPHIRE +static const u8 DexDescription_Damhirplex_1[] = _( + "DAMHIRPLEX hat ein prächtiges Geweih,\n" + "für das hohe Preise gezahlt werden.\n" + "Daher wurde dieses POKéMON gejagt"); +static const u8 DexDescription_Damhirplex_2[] = _( + "und wäre beinahe ausgestorben."); +#else static const u8 DexDescription_Damhirplex_1[] = _( "DAMHIRPLEX hat ein prächtiges Geweih,\n" "für das hohe Preise gezahlt werden, da\n" @@ -2005,7 +3522,18 @@ static const u8 DexDescription_Damhirplex_1[] = _( static const u8 DexDescription_Damhirplex_2[] = _( "Daher wurde dieses POKéMON gejagt und\n" "wäre beinahe ausgestorben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Farbeagle_1[] = _( + "FARBEAGLE markiert sein Revier mit\n" + "einer Flüssigkeit, die aus seiner\n" + "Schweifspitze austritt."); +static const u8 DexDescription_Farbeagle_2[] = _( + "Es wurden über 5.000 unterschiedliche\n" + "Markierungen entdeckt, die dieses\n" + "POKéMON hinterlassen hat."); +#else static const u8 DexDescription_Farbeagle_1[] = _( "FARBEAGLE markiert sein Revier mit\n" "einer Flüssigkeit, die aus seiner\n" @@ -2014,7 +3542,18 @@ static const u8 DexDescription_Farbeagle_2[] = _( "Es wurden über 5000 unterschiedliche\n" "Markierungen entdeckt, die dieses\n" "POKéMON hinterlassen hat."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rabauz_1[] = _( + "RABAUZ muss jeden Tag trainieren,\n" + "sonst ist es nicht ausgelastet und\n" + "reagiert gestresst. Wenn man dieses"); +static const u8 DexDescription_Rabauz_2[] = _( + "POKéMON trainiert, muss man\n" + "zahlreiche Trainingsmethoden\n" + "einsetzen und ausbauen."); +#else static const u8 DexDescription_Rabauz_1[] = _( "RABAUZ muss jeden Tag trainieren,\n" "sonst ist es nicht ausgelastet und\n" @@ -2023,7 +3562,18 @@ static const u8 DexDescription_Rabauz_2[] = _( "POKéMON trainiert, muss man\n" "zahlreiche Trainingsmethoden\n" "einsetzen und sie ständig ausbauen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kapoera_1[] = _( + "KAPOERA dreht sich auf dem Kopf\n" + "stehend um die eigene Achse und teilt\n" + "Tritte aus. Seine Technik ist eine"); +static const u8 DexDescription_Kapoera_2[] = _( + "bemerkenswerte Mischung aus Angriff \n" + "und Verteidigung. Es bewegt sich\n" + "drehend schneller voran als laufend."); +#else static const u8 DexDescription_Kapoera_1[] = _( "KAPOERA dreht sich auf dem Kopf\n" "stehend um die eigene Achse und teilt\n" @@ -2032,7 +3582,18 @@ static const u8 DexDescription_Kapoera_2[] = _( "bemerkenswerte Mischung aus Angriff \n" "und Verteidigung. Es bewegt sich \n" "drehend schneller voran als laufend."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kussilla_1[] = _( + "KUSSILLA läuft hektisch umher, fällt\n" + "aber auch ziemlich oft hin. Es lässt\n" + "keine Möglichkeit aus, sein Spiegelbild"); +static const u8 DexDescription_Kussilla_2[] = _( + "zu betrachten, um sicherzustellen,\n" + "dass sein Gesicht nicht schmutzig\n" + "geworden ist."); +#else static const u8 DexDescription_Kussilla_1[] = _( "KUSSILLA läuft hektisch umher, fällt\n" "aber auch ziemlich oft hin. Es lässt\n" @@ -2041,6 +3602,7 @@ static const u8 DexDescription_Kussilla_2[] = _( "zu betrachten, um sicherzustellen,\n" "dass sein Gesicht nicht schmutzig\n" "geworden ist."); +#endif static const u8 DexDescription_Elekid_1[] = _( "ELEKID speichert Elektrizität in seinem\n" @@ -2067,6 +3629,16 @@ static const u8 DexDescription_Miltank_2[] = _( "Menschen, die keine Milch trinken,\n" "essen sie stattdessen als Joghurt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Heiteira_1[] = _( + "HEITEIRA nimmt mit seinem flauschigen\n" + "Fell Traurigkeit wahr. Es hastet zu\n" + "einer traurigen Person, egal, wie weit"); +static const u8 DexDescription_Heiteira_2[] = _( + "diese entfernt ist und teilt ein \n" + "GLÜCKS-EI mit ihr, um sie zum\n" + "Lächeln zu bringen."); +#else static const u8 DexDescription_Heiteira_1[] = _( "HEITEIRA nimmt mit seinem flauschigen\n" "Fell Traurigkeit wahr. Es hastet zu\n" @@ -2075,6 +3647,7 @@ static const u8 DexDescription_Heiteira_2[] = _( "diese entfernt ist und teilt ein \n" "GLÜCKS-EI mit ihr, um sie zum Lächeln\n" "zu bringen."); +#endif static const u8 DexDescription_Raikou_1[] = _( "RAIKOU ist so schnell wie der Blitz. Das\n" @@ -2093,12 +3666,21 @@ static const u8 DexDescription_Entei_2[] = _( "alles auslöschen, was mit ihnen in\n" "Kontakt kommt."); +#ifdef SAPPHIRE +static const u8 DexDescription_Suicune_1[] = _( + "SUICUNE wohnt die Reinheit einer\n" + "Quelle inne. Es läuft graziös herum und \n" + "hat die Macht, schmutziges Wasser zu"); +static const u8 DexDescription_Suicune_2[] = _( + "reinigen."); +#else static const u8 DexDescription_Suicune_1[] = _( "SUICUNE wohnt die Reinheit einer\n" "Quelle inne. Es bewegt sich graziös und \n" "hat die Macht, schmutziges Wasser zu"); static const u8 DexDescription_Suicune_2[] = _( "reinigen."); +#endif static const u8 DexDescription_Larvitar_1[] = _( "LARVITAR wurde tief unter der Erde\n" @@ -2108,6 +3690,16 @@ static const u8 DexDescription_Larvitar_2[] = _( "Erdreich fressen. Erst dann bekommt es\n" "seine Eltern zu Gesicht."); +#ifdef SAPPHIRE +static const u8 DexDescription_Pupitar_1[] = _( + "PUPITAR erzeugt in seinem Körper ein\n" + "Gas, das es komprimiert und kraftvoll\n" + "ausstößt, um sich wie ein"); +static const u8 DexDescription_Pupitar_2[] = _( + "Düsenflugzeug anzutreiben. Sein Körper\n" + "ist robust und hält auch Angriffen mit\n" + "massivem Stahl stand."); +#else static const u8 DexDescription_Pupitar_1[] = _( "PUPITAR erzeugt in seinem Körper ein\n" "Gas, das es komprimiert und kraftvoll\n" @@ -2116,6 +3708,7 @@ static const u8 DexDescription_Pupitar_2[] = _( "Düsenflugzeug anzutreiben. Sein\n" "Körper ist sehr robust und er hält\n" "auch massivem Stahl stand."); +#endif static const u8 DexDescription_Despotar_1[] = _( "DESPOTAR ist erstaunlich stark. Es\n" @@ -2125,6 +3718,16 @@ static const u8 DexDescription_Despotar_2[] = _( "wandert in den Bergen umher und sucht\n" "nach Gegnern für einen Kampf."); +#ifdef SAPPHIRE +static const u8 DexDescription_Lugia_1[] = _( + "LUGIAs Flügel haben eine\n" + "zerstörerische Kraft. Bereits ein\n" + "leichtes Flattern kann Häuser"); +static const u8 DexDescription_Lugia_2[] = _( + "hinfortwehen. Daher hat sich dieses\n" + "POKéMON dafür entschieden, tief unten\n" + "im Meer zu leben, wo es niemand sieht."); +#else static const u8 DexDescription_Lugia_1[] = _( "LUGIAs Flügel haben eine\n" "zerstörerische Kraft. Bereits ein\n" @@ -2133,6 +3736,7 @@ static const u8 DexDescription_Lugia_2[] = _( "hinfortwehen. Daher hat sich dieses\n" "POKéMON dafür entschieden, tief unter\n" "dem Meer zu leben, wo es niemand sieht."); +#endif static const u8 DexDescription_HoOh_1[] = _( "HO-OHs Federn leuchten in sieben\n" @@ -2143,6 +3747,15 @@ static const u8 DexDescription_HoOh_2[] = _( "bringen. Dieses POKéMON lebt am Fuße\n" "eines Regenbogens."); +#ifdef SAPPHIRE +static const u8 DexDescription_Celebi_1[] = _( + "Dieses POKéMON kommt aus der Zukunft\n" + "und ist durch die Zeit gereist. Solange\n" + "CELEBI auftaucht, ist der"); +static const u8 DexDescription_Celebi_2[] = _( + "Menschheit angeblich eine rosige\n" + "Zukunft beschieden."); +#else static const u8 DexDescription_Celebi_1[] = _( "Dieses POKéMON kommt aus der Zukunft\n" "und ist durch die Zeit gereist. Solange\n" @@ -2150,7 +3763,17 @@ static const u8 DexDescription_Celebi_1[] = _( static const u8 DexDescription_Celebi_2[] = _( "ist der Menschheit angeblich eine\n" "rosige Zukunft beschieden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geckarbor_1[] = _( + "GECKARBOR ist ruhig und beherrscht, es\n" + "gerät niemals in Panik. Wenn es ein\n" + "stärkerer Feind zornig anstarrt,"); +static const u8 DexDescription_Geckarbor_2[] = _( + "erwidert es den bösen Blick, weicht aber\n" + "keinen Millimeter zurück."); +#else static const u8 DexDescription_Geckarbor_1[] = _( "Mit den kleinen Haken unter seinen\n" "Füßen kann GECKARBOR an Wänden\n" @@ -2158,7 +3781,17 @@ static const u8 DexDescription_Geckarbor_1[] = _( static const u8 DexDescription_Geckarbor_2[] = _( "Feinde an, indem es mit seinem\n" "mächtigen Schweif zuschlägt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Reptain_1[] = _( + "Dieses POKéMON fliegt geschickt von\n" + "Ast zu Ast. Keinem POKéMON wird es\n" + "jemals gelingen, ein REPTAIN zu"); +static const u8 DexDescription_Reptain_2[] = _( + "erwischen. Da kann es noch so schnell\n" + "sein."); +#else static const u8 DexDescription_Reptain_1[] = _( "REPTAIN kann sich mit den Blättern, die\n" "aus seinem Körper herauswachsen, im\n" @@ -2167,7 +3800,18 @@ static const u8 DexDescription_Reptain_2[] = _( "Dieses POKéMON ist ein wahrer Meister\n" "darin, auf die Bäume des Dschungels zu\n" "klettern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gewaldro_1[] = _( + "Auf GEWALDROs Rücken wachsen Samen.\n" + "Darin sind Nährstoffe, die Bäume\n" + "beleben können. Dieses POKéMON"); +static const u8 DexDescription_Gewaldro_2[] = _( + "achtet mit viel Fürsorge darauf, dass\n" + "die Bäume seines Waldes prächtig\n" + "gedeihen."); +#else static const u8 DexDescription_Gewaldro_1[] = _( "Die Blätter, die auf GEWALDROs Körper\n" "wachsen, sind sehr scharfkantig. Dieses\n" @@ -2175,7 +3819,17 @@ static const u8 DexDescription_Gewaldro_1[] = _( static const u8 DexDescription_Gewaldro_2[] = _( "Ast zu Ast und springt seine Feinde\n" "von oben oder hinten an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flemmli_1[] = _( + "In FLEMMLIs Körper brennt eine\n" + "Flamme. Wenn man es umarmt, beginnt\n" + "es zu glühen."); +static const u8 DexDescription_Flemmli_2[] = _( + "Dieses POKéMON trägt ein flauschiges\n" + "Fell aus Daunen."); +#else static const u8 DexDescription_Flemmli_1[] = _( "FLEMMLI hängt an seinem Trainer wie\n" "eine Klette. Es schlurft immer hinter ihm\n" @@ -2183,7 +3837,17 @@ static const u8 DexDescription_Flemmli_1[] = _( static const u8 DexDescription_Flemmli_2[] = _( "heißes Feuer, das seinen Feinden\n" "ordentlich einheizt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jungglut_1[] = _( + "JUNGGLUT stößt im Kampf glühend\n" + "heiße Flammen aus seinem Schnabel aus\n" + "und setzt extrem vernichtende Tritte"); +static const u8 DexDescription_Jungglut_2[] = _( + "ein. Das Geschrei dieses POKéMON ist\n" + "sehr laut und verwirrend."); +#else static const u8 DexDescription_Jungglut_1[] = _( "JUNGGLUT trainiert seine Beine und\n" "Oberschenkel, indem es über Felder und\n" @@ -2192,7 +3856,18 @@ static const u8 DexDescription_Jungglut_2[] = _( "sind sowohl schnell als auch kräftig,\n" "so dass es 10 Tritte pro Sekunde\n" "ausführen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lohgock_1[] = _( + "LOHGOCK besitzt unglaublich starke\n" + "Beine, mit denen es ein 30 Stockwerke\n" + "hohes Gebäude mit einem Sprung"); +static const u8 DexDescription_Lohgock_2[] = _( + "überwinden kann. Die flammenden Schläge\n" + "dieses POKéMON lassen verkohlte Gegner\n" + "zurück."); +#else static const u8 DexDescription_Lohgock_1[] = _( "LOHGOCK stößt heftige Flammen aus\n" "seinen Handgelenken aus und greift\n" @@ -2200,7 +3875,18 @@ static const u8 DexDescription_Lohgock_1[] = _( static const u8 DexDescription_Lohgock_2[] = _( "Feind ist, desto stärker lodern die\n" "Handgelenke dieses POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Hydropi_1[] = _( + "Im Wasser atmet HYDROPI durch die\n" + "Kiemen an seinen Wangen. Wenn es im\n" + "Kampf in eine brenzlige Situation gerät,"); +static const u8 DexDescription_Hydropi_2[] = _( + "setzt es seine verblüffende Kraft ein,\n" + "mit der es Felsbrocken zerquetschen\n" + "kann, die größer sind als es selbst."); +#else static const u8 DexDescription_Hydropi_1[] = _( "Die Flosse an HYDROPIs Kopf dient als\n" "hochempfindliches Radar. Damit kann es\n" @@ -2209,7 +3895,17 @@ static const u8 DexDescription_Hydropi_2[] = _( "wahrnehmen. So weiß es jederzeit, was\n" "in seiner Umgebung passiert, ohne\n" "dabei seine Augen zu benutzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Moorabbel_1[] = _( + "MOORABBEL kommt im Schlamm besser\n" + "voran als im Wasser. Das Hinterteil\n" + "dieses POKéMON ist gut entwickelt,"); +static const u8 DexDescription_Moorabbel_2[] = _( + "so dass es auf seinen Hinterbeinen\n" + "laufen kann."); +#else static const u8 DexDescription_Moorabbel_1[] = _( "MOORABBELs Körper ist mit einem\n" "klebrigen Film überzogen, durch den es\n" @@ -2217,7 +3913,18 @@ static const u8 DexDescription_Moorabbel_1[] = _( static const u8 DexDescription_Moorabbel_2[] = _( "spielt bei Ebbe in den Schlammpfützen\n" "am Strand."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sumpex_1[] = _( + "SUMPEX kann Stürme voraussagen,\n" + "indem es feine Veränderungen der\n" + "Geräusche von Wellen und Wind mit"); +static const u8 DexDescription_Sumpex_2[] = _( + "seinen Finnen wahrnimmt. Wenn eine\n" + "Sturmfront aufzieht, häuft es\n" + "Felsbrocken an, um sich zu schützen."); +#else static const u8 DexDescription_Sumpex_1[] = _( "SUMPEX ist sehr stark. Es kann mit\n" "Leichtigkeit einen Felsblock bewegen,\n" @@ -2226,7 +3933,18 @@ static const u8 DexDescription_Sumpex_2[] = _( "Weiterhin ist es mit einem exzellenten\n" "Sehvermögen ausgestattet, wodurch es\n" "auch in trüben Gewässern sehen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Fiffyen_1[] = _( + "FIFFYEN ist ein Allesfresser.\n" + "Auffällig an diesem POKéMON ist das\n" + "Verhältnis seiner Körpergröße zur"); +static const u8 DexDescription_Fiffyen_2[] = _( + "Länge seiner Zähne. Es versucht Feinde\n" + "einzuschüchtern, indem es die Haare an\n" + "seinem Schweif abstehen lässt."); +#else static const u8 DexDescription_Fiffyen_1[] = _( "Sobald FIFFYEN eine Bewegung wahr-\n" "nimmt, schnappt es zu. Es jagt seine\n" @@ -2235,7 +3953,16 @@ static const u8 DexDescription_Fiffyen_2[] = _( "erschöpft ist. Wenn sich die Beute\n" "allerdings wehrt, kann es passieren, \n" "dass FIFFYEN klein beigibt und flieht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Magnayen_1[] = _( + "MAGNAYEN zieht in Gruppen durch die\n" + "Wildnis. Durch seine Erfahrungen in der\n" + "Wildnis hört es nur auf TRAINER, die"); +static const u8 DexDescription_Magnayen_2[] = _( + "außergewöhnliche Fähigkeiten haben."); +#else static const u8 DexDescription_Magnayen_1[] = _( "MAGNAYEN sendet deutliche Signale\n" "aus, wenn es sich auf einen Angriff\n" @@ -2243,14 +3970,36 @@ static const u8 DexDescription_Magnayen_1[] = _( static const u8 DexDescription_Magnayen_2[] = _( "sich flach. Dieses POKéMON kann mit\n" "seinen spitzen Zähnen brutal zubeißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zigzachs_1[] = _( + "Das Haar auf ZIGZACHS’ Rücken ist\n" + "struppig. Es reibt seine Rückenborsten\n" + "an Bäumen, um sein Revier zu markieren."); +static const u8 DexDescription_Zigzachs_2[] = _( + "Dieses POKéMON stellt sich im Kampf\n" + "schon einmal tot, um seine Feinde\n" + "reinzulegen."); +#else static const u8 DexDescription_Zigzachs_1[] = _( "ZIGZACHS ist ein rastloser Wanderer.\n" "Dieses POKéMON ist nämlich sehr\n" "neugierig und es inspiziert alles,"); static const u8 DexDescription_Zigzachs_2[] = _( "was ihm zufällig begegnet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Geradaks_1[] = _( + "Auf der Jagd rennt GERADAKS so schnell\n" + "es kann schnurstracks hinter seiner\n" + "Beute her. Es erreicht zwar über"); +static const u8 DexDescription_Geradaks_2[] = _( + "100 km/h, muss aber erst aus vollem\n" + "Lauf zum Stehen kommen, bevor es die\n" + "Richtung wechseln kann."); +#else static const u8 DexDescription_Geradaks_1[] = _( "GERADAKS rennt immer mit vollem Tempo\n" "und nie im Zickzack, sondern nur gerade.\n" @@ -2259,7 +4008,18 @@ static const u8 DexDescription_Geradaks_2[] = _( "läuft es rechtwinklig daran vorbei. Für\n" "dieses POKéMON stellen leichte Kurven\n" "eine große Herausforderung dar."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Waumpel_1[] = _( + "WAUMPEL wird von SCHWALBOSS als Beute\n" + "angesehen. Dieses POKéMON wehrt sich\n" + "gegen angreifende Räuber, indem es die"); +static const u8 DexDescription_Waumpel_2[] = _( + "Stacheln an seinem Hinterteil auf sie\n" + "richtet. Es schwächt seine Gegner mit\n" + "dem Gift, das aus den Stacheln austritt."); +#else static const u8 DexDescription_Waumpel_1[] = _( "WAUMPEL kann mit den Stacheln an\n" "seinem Hinterteil die Rinde von Bäumen\n" @@ -2268,7 +4028,18 @@ static const u8 DexDescription_Waumpel_2[] = _( "austretenden Saft. An den Füßen dieses\n" "POKéMON befinden sich Saugnäpfe, mit\n" "denen es auch an Glas nicht abrutscht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schaloko_1[] = _( + "Bisher nahm man an, dass SCHALOKO vor\n" + "seiner Entwicklung hungert und\n" + "überhaupt nichts zu sich nimmt. Nun"); +static const u8 DexDescription_Schaloko_2[] = _( + "aber wird behauptet, dass es seinen \n" + "Durst mit Regenwasser löscht, das sich\n" + "auf seinem seidigen Fell sammelt."); +#else static const u8 DexDescription_Schaloko_1[] = _( "SCHALOKO bindet sich mit einem\n" "Seidenfaden an einen Ast. Es baumelt\n" @@ -2276,7 +4047,17 @@ static const u8 DexDescription_Schaloko_1[] = _( static const u8 DexDescription_Schaloko_2[] = _( "Durch ein kleines Loch in seinem\n" "Seidenkokon lugt es heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Papinella_1[] = _( + "PAPINELLA hat einen langen Rüssel, der\n" + "hervorragend zum Sammeln von Blüten-\n" + "pollen geeignet ist. Dieses POKéMON"); +static const u8 DexDescription_Papinella_2[] = _( + "flattert im Frühlingswind herum\n" + "und sammelt Blütenstaub."); +#else static const u8 DexDescription_Papinella_1[] = _( "PAPINELLAs Lieblingsspeise ist\n" "Blütenstaub. Wenn du dieses POKéMON\n" @@ -2285,7 +4066,18 @@ static const u8 DexDescription_Papinella_2[] = _( "einen Blumentopf vor ein geöffnetes\n" "Fenster stellen. PAPINELLA wird sich\n" "diese Leckerei nicht entgehen lassen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Panekon_1[] = _( + "Wenn es angegriffen wird, bewegt sich\n" + "PANEKON in keiner Weise, egal, wie\n" + "schwer es dabei verletzt wird. Wenn es"); +static const u8 DexDescription_Panekon_2[] = _( + "sich bewegen würde, wäre sein Körper zu\n" + "schwach für seine Entwicklung. Die\n" + "Schmerzen allerdings vergisst es nie."); +#else static const u8 DexDescription_Panekon_1[] = _( "PANEKON baut seinen schützenden\n" "Kokon, indem es seinen Körper mit\n" @@ -2294,7 +4086,18 @@ static const u8 DexDescription_Panekon_2[] = _( "Mund austritt. Wenn sein Körper mit\n" "Seide bedeckt ist, wird diese hart. Im\n" "Kokon wartet es auf seine Entwicklung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pudox_1[] = _( + "Wenn PUDOX mit den Flügeln schlägt,\n" + "verteilt es einen feinen Puder. Es\n" + "handelt sich um ein starkes Gift, das"); +static const u8 DexDescription_Pudox_2[] = _( + "sogar einen Profiboxer umhauen würde.\n" + "Bei der Futtersuche benutzt dieses \n" + "POKéMON seine Antennen als Radar."); +#else static const u8 DexDescription_Pudox_1[] = _( "PUDOX wird instinktiv vom Licht\n" "angezogen. In hell erleuchteten \n" @@ -2303,7 +4106,18 @@ static const u8 DexDescription_Pudox_2[] = _( "POKéMON dabei beobachten, die\n" "großen Schaden anrichten, indem sie die\n" "Blätter von Bäumen abfressen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Loturzel_1[] = _( + "LOTURZEL soll einige Zeit an Land\n" + "verbracht haben, aber ins Wasser\n" + "zurückgekehrt sein, weil das Blatt"); +static const u8 DexDescription_Loturzel_2[] = _( + "auf seinem Kopf zu groß und zu schwer\n" + "geworden ist. Nun lässt es sich auf dem\n" + "Wasser treiben."); +#else static const u8 DexDescription_Loturzel_1[] = _( "LOTURZEL lebt auf der Wasseroberfläche\n" "von Teichen oder Seen. Es wird\n" @@ -2312,7 +4126,17 @@ static const u8 DexDescription_Loturzel_2[] = _( "abstirbt. Nur selten geht dieses\n" "POKéMON an Land, um nach sauberem\n" "Wasser Ausschau zu halten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lombrero_1[] = _( + "LOMBREROs Körper ist mit einem\n" + "glitschigen Film bedeckt. Es fühlt sich\n" + "widerlich an, wenn einen dieses POKéMON"); +static const u8 DexDescription_Lombrero_2[] = _( + "mit seinen Händen berührt. LOMBRERO\n" + "wird häufig für ein Kind gehalten."); +#else static const u8 DexDescription_Lombrero_1[] = _( "LOMBRERO liebt die Nacht und wird mit\n" "Einbruch der Dunkelheit aktiv. Es spielt\n" @@ -2321,7 +4145,17 @@ static const u8 DexDescription_Lombrero_2[] = _( "Wenn es Angler sieht, zieht es unter\n" "Wasser an ihren Angelschnüren und\n" "erfreut sich an ihrer Entrüstung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kappalores_1[] = _( + "Wenn KAPPALORES einen fröhlichen\n" + "Rhythmus hört, werden die Zellen in\n" + "seinem Körper aktiviert. Auch im Kampf"); +static const u8 DexDescription_Kappalores_2[] = _( + "zeigt dieses POKéMON seine\n" + "verblüffende Stärke."); +#else static const u8 DexDescription_Kappalores_1[] = _( "KAPPALORES fängt sofort zu tanzen an,\n" "wenn es stimmungsvolle, feierliche Musik\n" @@ -2329,7 +4163,18 @@ static const u8 DexDescription_Kappalores_1[] = _( static const u8 DexDescription_Kappalores_2[] = _( "angeblich, wenn es Kinder auf \n" "Wanderausflügen singen hört."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Samurzel_1[] = _( + "SAMURZEL sieht aus wie eine Eichel, wenn\n" + "es an einem Ast hängt. Es erschreckt\n" + "andere POKéMON, indem es sich dann"); +static const u8 DexDescription_Samurzel_2[] = _( + "plötzlich bewegt. Dieses POKéMON\n" + "poliert seinen Körper einmal am Tag mit\n" + "Blättern."); +#else static const u8 DexDescription_Samurzel_1[] = _( "SAMURZEL hängt sich mit dem Kopf an\n" "einen Ast. Dabei entzieht es dem Baum\n" @@ -2337,7 +4182,17 @@ static const u8 DexDescription_Samurzel_1[] = _( static const u8 DexDescription_Samurzel_2[] = _( "desto glänzender wird der Körper dieses\n" "POKéMON."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Blanas_1[] = _( + "Dieses POKéMON reißt das Blatt auf\n" + "seinem Kopf heraus und benutzt es\n" + "als Flöte. Diese Geräusche jagen den"); +static const u8 DexDescription_Blanas_2[] = _( + "Menschen, die sich im Wald verirrt haben,\n" + "Angst ein."); +#else static const u8 DexDescription_Blanas_1[] = _( "BLANAS lebt in dichten Wäldern.\n" "Manchmal wagt es sich aus dem Wald\n" @@ -2345,7 +4200,18 @@ static const u8 DexDescription_Blanas_1[] = _( static const u8 DexDescription_Blanas_2[] = _( "Dieses POKéMON mag es überhaupt nicht,\n" "wenn man seine lange Nase zwickt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tengulist_1[] = _( + "TENGULISTs große Fächer erzeugen\n" + "Böen, die eine Geschwindigkeit von\n" + "30 m/sek erreichen können und alles"); +static const u8 DexDescription_Tengulist_2[] = _( + "und jeden hinwegfegen können. Dieses\n" + "POKéMON lebt still und zurückgezogen\n" + "in den Tiefen der Wälder."); +#else static const u8 DexDescription_Tengulist_1[] = _( "TENGULIST ist ein geheimnisvolles\n" "POKéMON, das angeblich auf hohen\n" @@ -2354,7 +4220,17 @@ static const u8 DexDescription_Tengulist_2[] = _( "alt sind. Mit den Blätterventilatoren an\n" "seinen Händen kann es heftige Stürme\n" "erzeugen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schwalbini_1[] = _( + "SCHWALBINI ist noch klein, es hat\n" + "gerade erst sein Nest verlassen. Daher\n" + "fühlt es sich manchmal einsam und weint"); +static const u8 DexDescription_Schwalbini_2[] = _( + "nachts. Dieses POKéMON ernährt sich\n" + "von WAUMPEL."); +#else static const u8 DexDescription_Schwalbini_1[] = _( "Mutig behauptet SCHWALBINI sein\n" "Territorium gegen Eindringlinge, so\n" @@ -2363,7 +4239,16 @@ static const u8 DexDescription_Schwalbini_2[] = _( "Dieses unerschrockene POKéMON bleibt\n" "trotz einer Niederlage angriffslustig,\n" "heult aber laut, wenn es Hunger hat."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schwalboss_1[] = _( + "SCHWALBOSS ist sehr gewissenhaft bei\n" + "der Pflege seiner glänzenden Flügel.\n" + "Wenn zwei SCHWALBOSS zusammen sind,"); +static const u8 DexDescription_Schwalboss_2[] = _( + "putzen sie sich ihre Flügel gegenseitig."); +#else static const u8 DexDescription_Schwalboss_1[] = _( "Dieses POKéMON taucht in einem steilen\n" "Winkel ab, sobald es Beute wahrgenommen\n" @@ -2371,7 +4256,17 @@ static const u8 DexDescription_Schwalboss_1[] = _( static const u8 DexDescription_Schwalboss_2[] = _( "seinen Krallen und lässt sie\n" "nicht mehr entkommen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wingull_1[] = _( + "WINGULL breitet seine langen, schmalen\n" + "Flügel aus und segelt im Seewind. Der\n" + "lange Schnabel dieses POKéMON"); +static const u8 DexDescription_Wingull_2[] = _( + "ist ihm beim Jagen nach Beute sehr\n" + "hilfreich."); +#else static const u8 DexDescription_Wingull_1[] = _( "Man sieht WINGULL oft mit seiner\n" "Beute oder seinen Besitztümern im\n" @@ -2380,14 +4275,34 @@ static const u8 DexDescription_Wingull_2[] = _( "nach geeigneten Verstecken. Dieses\n" "POKéMON fliegt durch die Lüfte, als\n" "würde es gleiten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pelipper_1[] = _( + "PELIPPER sucht nach Nahrung, während\n" + "es über die Wellen fliegt. Dieses \n" + "POKéMON taucht seinen großen Schnabel"); +static const u8 DexDescription_Pelipper_2[] = _( + "ins Meer, um seine Beute abzuschöpfen.\n" + "Dann schluckt es alles auf einmal\n" + "herunter."); +#else static const u8 DexDescription_Pelipper_1[] = _( "PELIPPER transportiert kleine POKéMON\n" "und Eier in seinem riesigen Schnabel\n" "durch die Lüfte. Dieses POKéMON baut"); static const u8 DexDescription_Pelipper_2[] = _( "sein Nest auf steilen Klippen am Meer."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Trasla_1[] = _( + "TRASLA hat die Fähigkeit, die Emotionen\n" + "von Menschen wahrzunehmen. Wenn sein\n" + "TRAINER gute Laune hat, ist dieses"); +static const u8 DexDescription_Trasla_2[] = _( + "POKéMON ebenfalls fröhlich."); +#else static const u8 DexDescription_Trasla_1[] = _( "TRASLA nimmt mit den Hörnern an seinem\n" "Kopf die Gefühle von Menschen wahr.\n" @@ -2396,7 +4311,18 @@ static const u8 DexDescription_Trasla_2[] = _( "nur selten zu Gesicht. Wenn es bemerkt,\n" "dass eine Person gut gelaunt ist, traut\n" "es sich näher an sie heran."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kirlia_1[] = _( + "KIRLIA benutzt die Hörner an seinem\n" + "Kopf dazu, seine psychokinetische\n" + "Energie zu verstärken. Wenn dieses"); +static const u8 DexDescription_Kirlia_2[] = _( + "POKéMON seine spezielle Kraft einsetzt,\n" + "wird die Luft verformt und ein Trugbild\n" + "einer Landschaft erzeugt."); +#else static const u8 DexDescription_Kirlia_1[] = _( "Man sagt, dass ein KIRLIA, das häufig\n" "positive Emotionen seines TRAINERs\n" @@ -2405,7 +4331,18 @@ static const u8 DexDescription_Kirlia_2[] = _( "Dieses POKéMON kontrolliert\n" "psychokinetische Energie mit seinem\n" "hochentwickelten Gehirn."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Guardevoir_1[] = _( + "GUARDEVOIR kann mit seiner psycho-\n" + "kinetischen Energie die Dimensionen\n" + "verzerren und ein kleines Schwarzes"); +static const u8 DexDescription_Guardevoir_2[] = _( + "Loch erzeugen. Es schützt seinen\n" + "TRAINER selbst unter Einsatz seines\n" + "eigenen Lebens."); +#else static const u8 DexDescription_Guardevoir_1[] = _( "GUARDEVOIR kann in die Zukunft\n" "schauen. Wenn es eine Gefahr für seinen\n" @@ -2413,7 +4350,17 @@ static const u8 DexDescription_Guardevoir_1[] = _( static const u8 DexDescription_Guardevoir_2[] = _( "psychokinetische Energie mit voller\n" "Kraft."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Gehweiher_1[] = _( + "Wenn GEHWEIHER Gefahr wittert,\n" + "scheidet es einen dickflüssigen Sirup\n" + "aus seinem Kopf aus. Es gibt einige"); +static const u8 DexDescription_Gehweiher_2[] = _( + "POKéMON, die ganz wild auf diesen\n" + "Sirup sind."); +#else static const u8 DexDescription_Gehweiher_1[] = _( "GEHWEIHER scheidet aus seinen Zehen\n" "ein Öl aus, das es ihm ermöglicht, über\n" @@ -2421,7 +4368,18 @@ static const u8 DexDescription_Gehweiher_1[] = _( static const u8 DexDescription_Gehweiher_2[] = _( "ernährt sich von Mikroorganismen aus\n" "Teichen und Seen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Maskeregen_1[] = _( + "MASKEREGENs Antennen haben ein\n" + "augenähnliches Muster, das ihm ein\n" + "Furcht erregendes Äußeres verleiht."); +static const u8 DexDescription_Maskeregen_2[] = _( + "Wenn seine “Augen” \n" + "traurig aussehen, ist ein heftiger \n" + "Regenguss im Anzug."); +#else static const u8 DexDescription_Maskeregen_1[] = _( "MASKEREGEN schüchtert seine Feinde\n" "mit den augenähnlichen Mustern auf\n" @@ -2430,7 +4388,17 @@ static const u8 DexDescription_Maskeregen_2[] = _( "kann mit seinen vier Flügeln wie ein\n" "Hubschrauber in jede Richtung fliegen,\n" "sogar seitwärts und rückwärts."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knilz_1[] = _( + "Wenn KNILZ Gefahr wittert, \n" + "schüttelt es seinen Körper und verteilt\n" + "Sporen von seinem Kopf."); +static const u8 DexDescription_Knilz_2[] = _( + "Diese Sporen sind so giftig, dass Bäume\n" + "und Gräser davon eingehen."); +#else static const u8 DexDescription_Knilz_1[] = _( "KNILZ lebt im feuchten Erdboden\n" "finsterer Wälder. Es wird oft reglos\n" @@ -2438,7 +4406,17 @@ static const u8 DexDescription_Knilz_1[] = _( static const u8 DexDescription_Knilz_2[] = _( "gefunden. Dieses POKéMON ernährt sich\n" "von Kompost aus verrotteten Blättern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kapilz_1[] = _( + "Die Samen am Schweif von KAPILZ\n" + "bestehen aus gehärteten Giftsporen.\n" + "Man sollte sie lieber nicht essen."); +static const u8 DexDescription_Kapilz_2[] = _( + "Ein einziger Bissen davon kann eine\n" + "heftige Magenverstimmung hervorrufen."); +#else static const u8 DexDescription_Kapilz_1[] = _( "Mit leichtfüßiger Beinarbeit nähert \n" "sich KAPILZ seinen Feinden und\n" @@ -2447,7 +4425,17 @@ static const u8 DexDescription_Kapilz_2[] = _( "Armen um sich. Die Kampftechnik dieses\n" "POKéMON treibt Profiboxern die\n" "Schamesröte ins Gesicht."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Bummelz_1[] = _( + "BUMMELZ’ Herz schlägt nur ein Mal pro\n" + "Minute. Dieses POKéMON ist damit\n" + "zufrieden, bewegungslos"); +static const u8 DexDescription_Bummelz_2[] = _( + "herumzulungern. Nur ganz selten sieht\n" + "man dieses POKéMON sich bewegen."); +#else static const u8 DexDescription_Bummelz_1[] = _( "BUMMELZ geht zwanzig Stunden pro Tag\n" "müßig. Da es sich sehr wenig bewegt,\n" @@ -2455,7 +4443,18 @@ static const u8 DexDescription_Bummelz_1[] = _( static const u8 DexDescription_Bummelz_2[] = _( "Seine Tagesration besteht lediglich aus\n" "drei Blättern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Muntier_1[] = _( + "MUNTIER findet einfach keine Ruhe.\n" + "Wenn es versucht zu schlafen, beginnt\n" + "das Blut in seinen Adern zu pulsieren."); +static const u8 DexDescription_Muntier_2[] = _( + "Dann muss es wie wild durch den \n" + "Dschungel rennen, um überhaupt Ruhe zu\n" + "finden."); +#else static const u8 DexDescription_Muntier_1[] = _( "MUNTIER brennt darauf, sich\n" "auszutoben. Es kann nicht einmal für\n" @@ -2463,7 +4462,17 @@ static const u8 DexDescription_Muntier_1[] = _( static const u8 DexDescription_Muntier_2[] = _( "Stress, wenn es sich nicht andauernd\n" "bewegen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Letarking_1[] = _( + "Wo dieses LETARKING lebt, hinterlässt\n" + "es Kreise von 1 m Radius auf den\n" + "Wiesen. Es frisst nämlich all das Gras,"); +static const u8 DexDescription_Letarking_2[] = _( + "das in seiner Reichweite wächst. Dabei\n" + "liegt es bäuchlings auf dem Boden."); +#else static const u8 DexDescription_Letarking_1[] = _( "LETARKING verbringt den Tag damit,\n" "herumzuliegen und nichts zu tun. Es \n" @@ -2472,7 +4481,18 @@ static const u8 DexDescription_Letarking_2[] = _( "Reichweite wächst. Hat es alles\n" "aufgefressen, so sucht es sich\n" "widerwillig ein anderes Plätzchen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nincada_1[] = _( + "NINCADA lebt unter der Erde. Es benutzt\n" + "seine scharfen Krallen, um die Wurzeln\n" + "von Bäumen freizulegen und an"); +static const u8 DexDescription_Nincada_2[] = _( + "Flüssigkeit und Nährstoffe zu kommen. \n" + "Dieses POKéMON kann grelles Sonnen-\n" + "licht nicht aushalten und meidet es."); +#else static const u8 DexDescription_Nincada_1[] = _( "NINCADA lebt viele Jahre in absoluter\n" "Dunkelheit unter der Erde. Dieses\n" @@ -2480,7 +4500,18 @@ static const u8 DexDescription_Nincada_1[] = _( static const u8 DexDescription_Nincada_2[] = _( "Baumwurzeln auf. Es rührt sich nicht,\n" "da es auf seine Entwicklung wartet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ninjask_1[] = _( + "Wenn NINJASK nicht richtig trainiert\n" + "wird, hört es nicht mehr auf seinen\n" + "TRAINER und beginnt unaufhörlich und"); +static const u8 DexDescription_Ninjask_2[] = _( + "laut zu brüllen. Es stellt die Fähig-\n" + "keiten eines TRAINERs auf eine harte\n" + "Probe."); +#else static const u8 DexDescription_Ninjask_1[] = _( "NINJASK bewegt sich so schnell, dass\n" "man es nicht sehen kann. Seine Schreie\n" @@ -2488,7 +4519,18 @@ static const u8 DexDescription_Ninjask_1[] = _( static const u8 DexDescription_Ninjask_2[] = _( "Deshalb hielt man dieses POKéMON lange\n" "für unsichtbar."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Ninjatom_1[] = _( + "NINJATOM ist ein ganz besonderes\n" + "POKéMON. Es taucht plötzlich in\n" + "einem POKéBALL auf, nachdem sich"); +static const u8 DexDescription_Ninjatom_2[] = _( + "ein NINCADA entwickelt hat. Dieses\n" + "POKéMON ist absolut bewegungsunfähig\n" + "und atmet nicht einmal."); +#else static const u8 DexDescription_Ninjatom_1[] = _( "NINJATOMs harter Körper bewegt sich\n" "überhaupt nicht. Er scheint bloß eine\n" @@ -2497,7 +4539,17 @@ static const u8 DexDescription_Ninjatom_2[] = _( "soll angeblich die Seele eines jeden\n" "stehlen, der hinterrücks einen Blick in\n" "seinen hohlen Körper riskiert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flurmel_1[] = _( + "FLURMEL ist sehr scheu. Wenn es laut\n" + "brüllt, erschrickt es und brüllt dadurch\n" + "noch lauter. Wenn es schließlich damit"); +static const u8 DexDescription_Flurmel_2[] = _( + "aufhört, ist es völlig ausgepumpt und \n" + "legt sich schlafen."); +#else static const u8 DexDescription_Flurmel_1[] = _( "Normalerweise ist FLURMELs Stimme sehr\n" "leise, selbst mit größter Anstrengung\n" @@ -2505,7 +4557,17 @@ static const u8 DexDescription_Flurmel_1[] = _( static const u8 DexDescription_Flurmel_2[] = _( "POKéMON jedoch eine Gefahr wittert,\n" "stößt es ohrenbetäubende Schreie aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krakeelo_1[] = _( + "KRAKEELO schreit und stampft mit\n" + "seinen Füßen auf den Boden. Danach\n" + "kann es für eine Weile nichts hören."); +static const u8 DexDescription_Krakeelo_2[] = _( + "Dies scheint die Schwachstelle dieses\n" + "POKéMON zu sein."); +#else static const u8 DexDescription_Krakeelo_1[] = _( "KRAKEELOs Brüllen kann ein Holzhaus zum\n" "Einsturz bringen. Es setzt seine Stimme\n" @@ -2513,7 +4575,18 @@ static const u8 DexDescription_Krakeelo_1[] = _( static const u8 DexDescription_Krakeelo_2[] = _( "Die runden Ohren dieses POKéMON dienen\n" "als Lautsprecher."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krawumms_1[] = _( + "KRAWUMMS vermittelt seinen Artge-\n" + "nossen seine Gefühle, indem es eine Art\n" + "Pfeifen durch die Röhren an seinem"); +static const u8 DexDescription_Krawumms_2[] = _( + "Körper von sich gibt. Dieses\n" + "POKéMON erhebt nur im Kampf\n" + "seine Stimme."); +#else static const u8 DexDescription_Krawumms_1[] = _( "KRAWUMMS kann durch sein Brüllen\n" "Erdbeben auslösen. Wenn dieses\n" @@ -2521,7 +4594,17 @@ static const u8 DexDescription_Krawumms_1[] = _( static const u8 DexDescription_Krawumms_2[] = _( "kräftig einatmet, ist es kurz davor,\n" "ein mächtiges Brüllen von sich zu geben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Makuhita_1[] = _( + "MAKUHITAs Geist ist unbezwingbar. Es\n" + "gibt die Hoffnung niemals auf. Es frisst\n" + "eine Menge, bekommt viel Schlaf und"); +static const u8 DexDescription_Makuhita_2[] = _( + "trainiert unermüdlich. Dadurch füllt es\n" + "seinen Körper mit Energie auf."); +#else static const u8 DexDescription_Makuhita_1[] = _( "MAKUHITA ist sehr zäh. Selbst wenn es im\n" "Kampf mehrfach niedergeschlagen\n" @@ -2530,14 +4613,35 @@ static const u8 DexDescription_Makuhita_2[] = _( "greift seinen Gegner an. Bei jedem Mal\n" "speichert es mehr Energie in seinem\n" "Körper für seine Entwicklung."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Hariyama_1[] = _( + "HARIYAMAs Körper mag vielleicht fett\n" + "aussehen, er besteht aber aus festen\n" + "Muskeln. Wenn dieses POKéMON all"); +static const u8 DexDescription_Hariyama_2[] = _( + "seine Muskeln anspannt, wird sein\n" + "Körper steinhart."); +#else static const u8 DexDescription_Hariyama_1[] = _( "HARIYAMA führt seinen berüchtigten\n" "Streckarm-Schlag überall aus. Ein Schlag\n" "von diesem POKéMON reicht aus,"); static const u8 DexDescription_Hariyama_2[] = _( "um einen Strommast zu zerlegen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Azurill_1[] = _( + "AZURILLs Schweif ist lang und federnd.\n" + "Er ist vollgepackt mit Nährstoffen, die\n" + "dieses POKéMON zum Wachsen braucht."); +static const u8 DexDescription_Azurill_2[] = _( + "Man kann es häufig dabei beobachten,\n" + "wie es auf seinem gummiartigen Schweif\n" + "umherhüpft und spielt."); +#else static const u8 DexDescription_Azurill_1[] = _( "AZURILL schleudert seinen Schweif wie\n" "ein Lasso weit aus und fliegt dann \n" @@ -2546,7 +4650,18 @@ static const u8 DexDescription_Azurill_2[] = _( "hat es auf diese Weise geschafft, die\n" "Rekordweite von 10 Metern\n" "zurückzulegen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Nasgnet_1[] = _( + "NASGNET wurde zunächst als völlig\n" + "unbeweglich beschrieben, da seine\n" + "magnetische Nase immer nach Norden"); +static const u8 DexDescription_Nasgnet_2[] = _( + "zeigt. Genauere Beobachtungen haben\n" + "jedoch ergeben, dass es sich pro Jahr\n" + "tatsächlich etwa um 1 cm bewegt."); +#else static const u8 DexDescription_Nasgnet_1[] = _( "NASGNET besitzt eine magnetische\n" "Nase, die immer nach Norden zeigt. Wenn\n" @@ -2555,7 +4670,17 @@ static const u8 DexDescription_Nasgnet_2[] = _( "sich einander nicht zuwenden, da ihre\n" "magnetischen Nasen sich gegenseitig\n" "abstoßen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Eneco_1[] = _( + "ENECO jagt spielerisch seinen eigenen\n" + "Schweif. In der Wildnis lebt dieses\n" + "POKéMON in den Löchern von Bäumen."); +static const u8 DexDescription_Eneco_2[] = _( + "Es ist als Haustier sehr beliebt, da es\n" + "bezaubernd aussieht."); +#else static const u8 DexDescription_Eneco_1[] = _( "ENECO ist davon fasziniert,\n" "Gegenstände zu bewegen und sie zu\n" @@ -2563,7 +4688,17 @@ static const u8 DexDescription_Eneco_1[] = _( static const u8 DexDescription_Eneco_2[] = _( "seinen eigenen Schweif, so dass ihm\n" "schwindlig wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Enekoro_1[] = _( + "ENEKORO schläft dort, wo es ihm gefällt\n" + "und hat kein dauerhaftes Nest. Nähern\n" + "sich ihm andere POKéMON, wenn"); +static const u8 DexDescription_Enekoro_2[] = _( + "es schläft, kämpft es nicht mit ihnen,\n" + "sondern zieht weiter."); +#else static const u8 DexDescription_Enekoro_1[] = _( "ENEKORO liebt seine Eigenständigkeit.\n" "So kann es das tun, was es möchte, und\n" @@ -2572,7 +4707,18 @@ static const u8 DexDescription_Enekoro_2[] = _( "Da dieses POKéMON schläft und isst,\n" "wenn es Lust dazu hat, ist sein\n" "Tagesablauf eher zufälliger Natur."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zobiris_1[] = _( + "ZOBIRIS durchwühlt mit seinen scharfen\n" + "Krallen den Erdboden auf der Suche nach\n" + "Steinen, von denen es sich ernährt."); +static const u8 DexDescription_Zobiris_2[] = _( + "Die Substanzen in den Steinen nehmen\n" + "schließlich eine feste Form an und\n" + "gelangen auf seine Körperoberfläche."); +#else static const u8 DexDescription_Zobiris_1[] = _( "ZOBIRIS führt ein ruhiges, \n" "zurückgezogenes Leben tief im Innern\n" @@ -2581,7 +4727,18 @@ static const u8 DexDescription_Zobiris_2[] = _( "gefürchtet, da man sagt, es stehle die\n" "Seelen der Menschen, wenn seine Augen\n" "im Dunkeln Furcht erregend funkeln."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Flunkifer_1[] = _( + "Fall bloß nicht auf das hübsche Gesicht\n" + "dieses POKéMON herein - es ist sehr ge-\n" + "fährlich. FLUNKIFER lenkt seine Feinde"); +static const u8 DexDescription_Flunkifer_2[] = _( + "ab und schlägt dann mit seinem massiven\n" + "Kiefer zu. Seine kräftigen Stahlkiefer\n" + "sind eigentlich umgewandelte Hörner."); +#else static const u8 DexDescription_Flunkifer_1[] = _( "FLUNKIFERs sagenhafte Kiefer sind\n" "eigentlich umgewandelte Stahlhörner.\n" @@ -2590,7 +4747,18 @@ static const u8 DexDescription_Flunkifer_2[] = _( "dient dazu, seinen Gegner in Sicherheit\n" "zu wiegen, so dass er unaufmerksam\n" "wird. Dann schnappt es zu!"); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stollunior_1[] = _( + "STOLLUNIORs Körper besteht aus Stahl.\n" + "Mit 1 Schlag kann dieses POKéMON einen\n" + "Schwerlasttransporter demolieren."); +static const u8 DexDescription_Stollunior_2[] = _( + "Der Lastwagen stellt danach eine\n" + "handliche Mahlzeit für dieses POKéMON\n" + "dar."); +#else static const u8 DexDescription_Stollunior_1[] = _( "Dieses POKéMON hat einen Körper aus\n" "Stahl. STOLLUNIOR ernährt sich von\n" @@ -2598,7 +4766,17 @@ static const u8 DexDescription_Stollunior_1[] = _( static const u8 DexDescription_Stollunior_2[] = _( "richtet es großen Schaden an, weil es\n" "Brücken und Bahngleise auffrisst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stollrak_1[] = _( + "STOLLRAK ernährt sich von Eisen, das in\n" + "Steinen und Wasser enthalten ist. Es \n" + "baut sein Nest in Bergen, in denen"); +static const u8 DexDescription_Stollrak_2[] = _( + "Eisenerz abgebaut wird. Es gerät dabei\n" + "häufig mit Bergarbeitern in Konflikt."); +#else static const u8 DexDescription_Stollrak_1[] = _( "STOLLRAK temperiert seinen Körper,\n" "indem es ausgesprochen nahrhaftes \n" @@ -2607,7 +4785,18 @@ static const u8 DexDescription_Stollrak_2[] = _( "aufgebläht ist. Dieses POKéMON baut\n" "sein Nest in der Nähe von Quellen, aus\n" "denen köstliches Wasser sprudelt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Stolloss_1[] = _( + "STOLLOSS geht erstaunlicherweise sehr\n" + "behutsam mit der Umwelt um. Wenn sein\n" + "Berg von einem Erdrutsch oder einem"); +static const u8 DexDescription_Stolloss_2[] = _( + "Feuer verwüstet wurde, schleppt es\n" + "Erde in das Gebiet, pflanzt Bäume an und\n" + "richtet sein Territorium wieder her."); +#else static const u8 DexDescription_Stolloss_1[] = _( "STOLLOSS nennt einen ganzen Berg sein\n" "Territorium. Gnadenlos schlägt es jeden\n" @@ -2615,7 +4804,17 @@ static const u8 DexDescription_Stolloss_1[] = _( static const u8 DexDescription_Stolloss_2[] = _( "Dieses POKéMON behält sein Territorium\n" "jederzeit im Auge."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Meditie_1[] = _( + "MEDITIE erhöht seine Energie durch\n" + "Meditation. Es lebt von nur einer Beere\n" + "am Tag. Diese absolut reduzierte"); +static const u8 DexDescription_Meditie_2[] = _( + "Ernährung ist Bestandteil seines \n" + "Trainings."); +#else static const u8 DexDescription_Meditie_1[] = _( "MEDITIE unterzieht sich einem\n" "strikten mentalen Training tief in den\n" @@ -2624,7 +4823,18 @@ static const u8 DexDescription_Meditie_2[] = _( "jedoch immer seine Konzentration.\n" "Deshalb wird sein Training niemals\n" "ein Ende haben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Meditalis_1[] = _( + "Mittels Meditation hat MEDITALIS\n" + "seinen sechsten Sinn entwickelt. So\n" + "kann es seine psychokinetischen"); +static const u8 DexDescription_Meditalis_2[] = _( + "Kräfte nutzen. Dieses POKéMON\n" + "meditiert einen ganzen Monat ohne\n" + "etwas zu essen."); +#else static const u8 DexDescription_Meditalis_1[] = _( "Mittels Meditation erhöht MEDITALIS\n" "seine Körperenergie und schärft seinen\n" @@ -2632,7 +4842,18 @@ static const u8 DexDescription_Meditalis_1[] = _( static const u8 DexDescription_Meditalis_2[] = _( "verbirgt sich, indem es eins mit den\n" "Feldern und Bergen wird."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Frizelbliz_1[] = _( + "FRIZELBLIZ rennt so schnell, dass\n" + "das menschliche Auge es nicht\n" + "wahrnehmen kann. Die Reibung,"); +static const u8 DexDescription_Frizelbliz_2[] = _( + "die dabei entsteht, wandelt es in\n" + "Elektrizität um, die es in seinem Fell\n" + "speichert."); +#else static const u8 DexDescription_Frizelbliz_1[] = _( "FRIZELBLIZ speichert Elektrizität in\n" "seiner langen Körperbehaarung. Dieses\n" @@ -2641,7 +4862,16 @@ static const u8 DexDescription_Frizelbliz_2[] = _( "Beinmuskulatur durch Stromstöße.\n" "Dadurch ist es in der Lage, explosiv\n" "zu beschleunigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Voltenso_1[] = _( + "VOLTENSO sammelt Elektrizität aus\n" + "der Atmosphäre in seiner Mähne und\n" + "entlädt diese. Dieses POKéMON erzeugt"); +static const u8 DexDescription_Voltenso_2[] = _( + "Gewitterwolken über seinem Kopf."); +#else static const u8 DexDescription_Voltenso_1[] = _( "VOLTENSO entlädt ständig Elektrizität\n" "aus seiner Mähne. Es fliegen dabei\n" @@ -2649,7 +4879,16 @@ static const u8 DexDescription_Voltenso_1[] = _( static const u8 DexDescription_Voltenso_2[] = _( "führen. In einem Kampf erzeugt dieses\n" "POKéMON Gewitterwolken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Plusle_1[] = _( + "Wenn PLUSLE seinen Partner anfeuert,\n" + "sprüht es Funken aus seinem Körper.\n" + "Wenn sein Partner verliert, brüllt dieses"); +static const u8 DexDescription_Plusle_2[] = _( + "POKéMON laut."); +#else static const u8 DexDescription_Plusle_1[] = _( "PLUSLE dient seinen Artgenossen als\n" "Cheerleader. Wenn ein Teamkamerad\n" @@ -2657,7 +4896,17 @@ static const u8 DexDescription_Plusle_1[] = _( static const u8 DexDescription_Plusle_2[] = _( "das prasselnde Geräusch von Funken, um\n" "so seine Freude zu zeigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Minun_1[] = _( + "MINUN liebt es, seinen Partner im Kampf\n" + "anzufeuern. Dabei sprüht es Funken aus\n" + "seinem Körper. Wenn sein Partner in"); +static const u8 DexDescription_Minun_2[] = _( + "Schwierigkeiten gerät, sprüht es immer\n" + "mehr Funken."); +#else static const u8 DexDescription_Minun_1[] = _( "MINUN kümmert sich mehr um das\n" "Anfeuern seiner Partner als um seine\n" @@ -2666,7 +4915,18 @@ static const u8 DexDescription_Minun_2[] = _( "Elektrizität in seinem Körper dazu,\n" "einen Funkenregen zu erzeugen und\n" "seine Teamkameraden anzufeuern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Volbeat_1[] = _( + "VOLBEATs Schweif leuchtet wie eine\n" + "Glühbirne. Zusammen mit anderen \n" + "VOLBEAT malt es mit seinem Schweif"); +static const u8 DexDescription_Volbeat_2[] = _( + "geometrische Figuren an den Nacht-\n" + "himmel. Dieses POKéMON liebt den von\n" + "ILLUMISE verströmten Duft."); +#else static const u8 DexDescription_Volbeat_1[] = _( "Wenn es Nacht wird, beginnt VOLBEATs\n" "Schweif zu leuchten. Es kommuniziert\n" @@ -2675,7 +4935,17 @@ static const u8 DexDescription_Volbeat_2[] = _( "und das Blinken dieses Lichts reguliert.\n" "Dieses POKéMON wird vom süßen Duft\n" "der ILLUMISE angezogen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Illumise_1[] = _( + "ILLUMISE leitet einen Schwarm VOLBEAT\n" + "an, wenn sie Zeichen an den Nachthimmel\n" + "malen. Je komplexer diese werden, desto"); +static const u8 DexDescription_Illumise_2[] = _( + "mehr Respekt bekommt es von seinen\n" + "Artgenossen."); +#else static const u8 DexDescription_Illumise_1[] = _( "ILLUMISE zieht ganze VOLBEAT-Scharen\n" "mit seinem süßlichen Duft an. Dann\n" @@ -2683,7 +4953,16 @@ static const u8 DexDescription_Illumise_1[] = _( static const u8 DexDescription_Illumise_2[] = _( "Schwarm an, indem es geometrische\n" "Figuren an den Nachthimmel malt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Roselia_1[] = _( + "Nur sehr selten bekommt man ROSELIA\n" + "mit seinen ungewöhnlich farbigen Blumen\n" + "zu Gesicht. Die Dornen am Kopf dieses"); +static const u8 DexDescription_Roselia_2[] = _( + "POKéMON enthalten ein grausames Gift."); +#else static const u8 DexDescription_Roselia_1[] = _( "ROSELIA verschießt scharfe Stacheln\n" "auf jeden Feind, der versucht, die\n" @@ -2691,7 +4970,18 @@ static const u8 DexDescription_Roselia_1[] = _( static const u8 DexDescription_Roselia_2[] = _( "Der Duft dieses POKéMON beruhigt\n" "Lebewesen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schluppuck_1[] = _( + "SCHLUPPUCKs Körper besteht zum\n" + "größten Teil aus seinem Magen. Sein Herz\n" + "und sein Gehirn sind im Vergleich dazu"); +static const u8 DexDescription_Schluppuck_2[] = _( + "sehr klein. Der Magen dieses POKéMON\n" + "enthält Enzyme, die alles zersetzen\n" + "können."); +#else static const u8 DexDescription_Schluppuck_1[] = _( "Eigentlich besteht SCHLUPPUCKs Körper\n" "nur aus einem Magen. Daher kann es\n" @@ -2700,7 +4990,17 @@ static const u8 DexDescription_Schluppuck_2[] = _( "Größe hat. Sein Magen enthält eine\n" "spezielle Flüssigkeit, die wirklich alles\n" "verdauen kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schlukwech_1[] = _( + "SCHLUKWECH hat keine Zähne. Alles was\n" + "es isst, schluckt es im Ganzen herunter.\n" + "Sein Maul ist so riesig, dass mit"); +static const u8 DexDescription_Schlukwech_2[] = _( + "Leichtigkeit ein Autoreifen hinein-\n" + "passen würde."); +#else static const u8 DexDescription_Schlukwech_1[] = _( "Wenn SCHLUKWECH Beute sichtet,\n" "verspritzt es eine höchst giftige\n" @@ -2709,7 +5009,17 @@ static const u8 DexDescription_Schlukwech_2[] = _( "besprüht damit sein Ziel. Wenn die Beute\n" "geschwächt ist, schluckt es sie mit\n" "seinem riesigen Maul im Ganzen herunter."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kanivanha_1[] = _( + "Wenn jemand KANIVANHAs Revier betritt,\n" + "schwärmt es aus und schnappt mit\n" + "seinen spitzen Zähnen nach dem"); +static const u8 DexDescription_Kanivanha_2[] = _( + "Eindringling. Wenn es allein ist, ist\n" + "dieses POKéMON sehr scheu."); +#else static const u8 DexDescription_Kanivanha_1[] = _( "KANIVANHAs starke Kiefer und seine\n" "spitzen Zähne verfügen über die \n" @@ -2717,7 +5027,17 @@ static const u8 DexDescription_Kanivanha_1[] = _( static const u8 DexDescription_Kanivanha_2[] = _( "verschlingen zu können. Dieses POKéMON\n" "hat schon viele Boote versenkt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tohaido_1[] = _( + "TOHAIDO kann bis zu 120 km/h schnell\n" + "schwimmen, indem es Meerwasser aus\n" + "seinem Hinterteil herausschießt."); +static const u8 DexDescription_Tohaido_2[] = _( + "Dieses POKéMON kann jedoch nicht sehr\n" + "weite Strecken zurücklegen."); +#else static const u8 DexDescription_Tohaido_1[] = _( "TOHAIDO trägt den Spitznamen\n" "“Tyrann des Meeres” und ist\n" @@ -2726,7 +5046,17 @@ static const u8 DexDescription_Tohaido_2[] = _( "wachsen sofort nach, wenn sie\n" "ausgebrochen sind. Es kann sogar einen\n" "Öltanker zerreißen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wailmer_1[] = _( + "WAILMER kann Wasser in seinem Körper\n" + "speichern, um sich in einen Ball zu\n" + "verwandeln und herumzuhüpfen."); +static const u8 DexDescription_Wailmer_2[] = _( + "Wenn es die Wassermenge steigert, kann\n" + "dieses POKéMON noch höher hüpfen."); +#else static const u8 DexDescription_Wailmer_1[] = _( "WAILMERs Nasenlöcher liegen über\n" "seinen Augen. Dieses verspielte\n" @@ -2735,7 +5065,18 @@ static const u8 DexDescription_Wailmer_2[] = _( "indem es das Meerwasser, das es in\n" "seinem Körper speichert, mit aller Kraft\n" "herausprustet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wailord_1[] = _( + "WAILORD jagt seine Beute, indem es aus\n" + "dem Meer herausspringt und ein gewal-\n" + "tiges Platschen erzeugt. Es ist"); +static const u8 DexDescription_Wailord_2[] = _( + "atemberaubend, eine Gruppe dieses\n" + "POKéMON aus dem Wasser springen zu\n" + "sehen."); +#else static const u8 DexDescription_Wailord_1[] = _( "WAILORD ist bisher das größte aller\n" "identifizierten POKéMON. Es schwimmt\n" @@ -2743,7 +5084,17 @@ static const u8 DexDescription_Wailord_1[] = _( static const u8 DexDescription_Wailord_2[] = _( "mit seinem enormen Maul riesige Mengen\n" "an Nahrung auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Camaub_1[] = _( + "CAMAUB speichert fast 1200 Grad heißes\n" + "Magma in seinem Körper. Wenn es nass\n" + "wird, kühlt das Magma ab und wird hart."); +static const u8 DexDescription_Camaub_2[] = _( + "Dadurch wird der Körper dieses POKéMON\n" + "schwer und seine Bewegungen träge."); +#else static const u8 DexDescription_Camaub_1[] = _( "CAMAUB ist nicht besonders helle. Es\n" "nimmt nicht einmal wahr, wenn es\n" @@ -2752,7 +5103,17 @@ static const u8 DexDescription_Camaub_2[] = _( "allerdings kann es nicht einmal eine\n" "Sekunde lang aushalten. In seinem\n" "Körper brodelt glühend heißes Magma."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Camerupt_1[] = _( + "Die Höcker auf CAMERUPTs Rücken sind\n" + "durch eine Transformation seiner\n" + "Knochen entstanden. Hin und wieder"); +static const u8 DexDescription_Camerupt_2[] = _( + "stoßen sie Magma aus. Dieses POKéMON\n" + "bricht häufig aus, wenn es wütend ist."); +#else static const u8 DexDescription_Camerupt_1[] = _( "CAMERUPT trägt einen Vulkan in seinem\n" "Körper. 10.000 Grad heißes Magma fließt\n" @@ -2760,7 +5121,17 @@ static const u8 DexDescription_Camerupt_1[] = _( static const u8 DexDescription_Camerupt_2[] = _( "seinem Rücken aus und verspucken \n" "glühend heißes Magma."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Qurtel_1[] = _( + "QURTEL erzeugt Energie, indem es Kohle\n" + "verbrennt. Wenn das Feuer nachlässt,\n" + "wird es schwächer."); +static const u8 DexDescription_Qurtel_2[] = _( + "In der Vorbereitung auf einen Kampf\n" + "verbrennt dieses POKéMON mehr Kohle."); +#else static const u8 DexDescription_Qurtel_1[] = _( "QURTEL schaufelt sich auf der Suche\n" "nach Kohle durch die Berge. Wenn es\n" @@ -2769,7 +5140,17 @@ static const u8 DexDescription_Qurtel_2[] = _( "seines Panzers mit Kohle und verbrennt\n" "diese. Wenn es angegriffen wird, stößt\n" "es dicken schwarzen Rauch aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Spoink_1[] = _( + "SPOINK trägt eine Perle auf seinem\n" + "Kopf, die seine psychokinetische\n" + "Energie verstärkt. Deshalb ist es"); +static const u8 DexDescription_Spoink_2[] = _( + "dauernd auf der Suche nach einer\n" + "größeren Perle."); +#else static const u8 DexDescription_Spoink_1[] = _( "SPOINK hüpft auf seinem Schweif durch\n" "die Gegend. Die Erschütterung des\n" @@ -2778,7 +5159,18 @@ static const u8 DexDescription_Spoink_2[] = _( "Deshalb kann dieses POKéMON das Hüpfen\n" "nicht sein lassen, ansonsten würde sein\n" "Herz aufhören zu schlagen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Groink_1[] = _( + "GROINK benutzt die schwarzen Perlen\n" + "an seinem Körper, um seine fantas-\n" + "tischen Kräfte nutzen zu können. Dabei"); +static const u8 DexDescription_Groink_2[] = _( + "tanzt es sonderbar. Die schwarzen\n" + "Perlen dieses POKéMON sind wahre\n" + "Kunstwerke und ebenso wertvoll."); +#else static const u8 DexDescription_Groink_1[] = _( "GROINK benutzt die schwarzen Perlen\n" "an seinem Körper dazu, die\n" @@ -2787,14 +5179,35 @@ static const u8 DexDescription_Groink_2[] = _( "Wenn es diese spezielle Fähigkeit nutzt,\n" "wird sein schnaubender Atem\n" "schwerfällig."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Pandir_1[] = _( + "Jedes PANDIR trägt ein einzigartiges \n" + "Fleckenmuster auf seiner Haut. Dieses\n" + "POKéMON bewegt sich höchst seltsam."); +static const u8 DexDescription_Pandir_2[] = _( + "Es schwankt und stolpert, als wäre ihm\n" + "schwindlig. Seine schlingernden Bewe-\n" + "gungen verwirren seine Gegner."); +#else static const u8 DexDescription_Pandir_1[] = _( "Jedes PANDIR auf der Welt soll ein\n" "einzigartiges Fleckenmuster haben. Der\n" "schwankende Gang dieses POKéMON"); static const u8 DexDescription_Pandir_2[] = _( "erweckt den Eindruck, es würde tanzen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Knacklion_1[] = _( + "KNACKLION ist ein geduldiger Jäger. Es\n" + "gräbt in einer Wüste eine tiefe Grube\n" + "und wartet auf Beute, die hineinfällt."); +static const u8 DexDescription_Knacklion_2[] = _( + "Dieses POKéMON kommt eine ganze Woche\n" + "ohne Wasser aus."); +#else static const u8 DexDescription_Knacklion_1[] = _( "KNACKLIONs Bau ist eine Art in den Sand\n" "gegrabener Kessel. Dieses POKéMON\n" @@ -2803,7 +5216,17 @@ static const u8 DexDescription_Knacklion_2[] = _( "seinen Bau zu werfen. Seine gigan-\n" "tischen Kiefer verfügen über genügend\n" "Kraft, um einen Felsen zu zerquetschen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vibrava_1[] = _( + "VIBRAVAs Flügel sind noch nicht ganz\n" + "ausgewachsen. Für lange Strecken sind\n" + "seine Flügel weniger geeignet."); +static const u8 DexDescription_Vibrava_2[] = _( + "Aber es kann mit ihnen Ultraschallwellen\n" + "erzeugen, wenn es sie vibrieren lässt."); +#else static const u8 DexDescription_Vibrava_1[] = _( "Um seine Beute zu schwächen, erzeugt\n" "VIBRAVA Ultraschallwellen, indem es\n" @@ -2812,7 +5235,18 @@ static const u8 DexDescription_Vibrava_2[] = _( "Die Ultraschallwellen dieses POKéMON \n" "sind so stark, dass sie bei Menschen\n" "Kopfschmerzen verursachen können."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Libelldra_1[] = _( + "LIBELLDRA wirbelt einen Sandsturm auf,\n" + "wenn es mit den Flügeln schlägt. Seine\n" + "Flügel erzeugen dabei Töne, die wie"); +static const u8 DexDescription_Libelldra_2[] = _( + "Gesang klingen. Da dieser “Gesang” das\n" + "Einzige ist, was man in einem Sandsturm\n" + "hört, wird es auch Wüstengeist genannt."); +#else static const u8 DexDescription_Libelldra_1[] = _( "LIBELLDRA wird auch “Geist der\n" "Wüste” genannt. Da seine flatternden\n" @@ -2820,7 +5254,17 @@ static const u8 DexDescription_Libelldra_1[] = _( static const u8 DexDescription_Libelldra_2[] = _( "dieses POKéMON beim Fliegen immer\n" "von einem Sandsturm umgeben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tuska_1[] = _( + "Je trockener und trostloser seine\n" + "Umgebung ist, desto schöner und\n" + "duftender wird TUSKAs Blume."); +static const u8 DexDescription_Tuska_2[] = _( + "Dieses POKéMON schwingt im Kampf wild\n" + "mit seinen dornigen Armen."); +#else static const u8 DexDescription_Tuska_1[] = _( "TUSKA lebt an trockenen Orten, z. B. in\n" "Wüsten. Es versprüht einen starken\n" @@ -2829,7 +5273,18 @@ static const u8 DexDescription_Tuska_2[] = _( "anzuziehen. Wenn sich Beute nähert,\n" "verschießt es scharfe Stacheln, um\n" "seinen Gegner zu überwältigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Noktuska_1[] = _( + "Wenn ein Reisender mitten in der Nacht\n" + "durch eine Wüste wandert, folgt \n" + "NOKTUSKA ihm und spielt ihm Streiche."); +static const u8 DexDescription_Noktuska_2[] = _( + "Dann wartet dieses POKéMON darauf,\n" + "dass der Reisende müde wird und sich\n" + "nicht mehr bewegen kann."); +#else static const u8 DexDescription_Noktuska_1[] = _( "Am Tage bleibt NOKTUSKA reglos, damit es\n" "in der brennenden Wüstenhitze keine\n" @@ -2837,7 +5292,18 @@ static const u8 DexDescription_Noktuska_1[] = _( static const u8 DexDescription_Noktuska_2[] = _( "Dieses POKéMON wird bei Nacht aktiv,\n" "wenn die Temperatur sinkt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wablu_1[] = _( + "WABLU liebt es, Dinge zu putzen. Wenn\n" + "es etwas Schmutziges bemerkt, fängt\n" + "es an, dieses mit seinen weichen"); +static const u8 DexDescription_Wablu_2[] = _( + "Flügeln zu putzen. Wenn seine Flügel\n" + "dreckig werden, sucht sich dieses\n" + "POKéMON einen Fluss und duscht sich ab."); +#else static const u8 DexDescription_Wablu_1[] = _( "WABLU hat leichte, flauschige Flügel,\n" "die wie Schäfchenwolken aussehen.\n" @@ -2846,7 +5312,17 @@ static const u8 DexDescription_Wablu_2[] = _( "Menschen. Es landet auf ihren Köpfen \n" "und bleibt dort sitzen wie ein \n" "wattierter Hut."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Altaria_1[] = _( + "ALTARIA hat eine tolle Sopran-Stimme.\n" + "Seine Flügel sehen aus wie Schäfchen-\n" + "wolken. Dieses POKéMON stürzt sich"); +static const u8 DexDescription_Altaria_2[] = _( + "in einen Aufwind und steigt in den\n" + "Himmel empor."); +#else static const u8 DexDescription_Altaria_1[] = _( "ALTARIA tanzt und dreht sich in der\n" "Luft durch viele Schäfchenwolken.\n" @@ -2855,7 +5331,18 @@ static const u8 DexDescription_Altaria_2[] = _( "Stimme Melodien singt, versetzt es\n" "seine Zuhörer in verträumtes\n" "Erstaunen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sengo_1[] = _( + "SENGO bewegt sich normalerweise auf\n" + "allen Vieren. Wenn es aber wütend wird, \n" + "stellt es sich auf seine Hinterbeine und"); +static const u8 DexDescription_Sengo_2[] = _( + "fährt seine Klauen aus. Dieses POKéMON\n" + "ist seit Generationen ein erbitterter\n" + "Rivale von VIPITIS."); +#else static const u8 DexDescription_Sengo_1[] = _( "Die Erinnerungen an den Kampf mit\n" "seinem Erzrivalen VIPITIS haben sich in\n" @@ -2864,7 +5351,18 @@ static const u8 DexDescription_Sengo_2[] = _( "eingebrannt. Dieses POKéMON weicht\n" "feindlichen Angriffen unheimlich\n" "raffiniert und geschickt aus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Vipitis_1[] = _( + "VIPITIS kann mit seinem Schweif\n" + "Feinden einen Hieb versetzen und sie\n" + "mit einem abgesonderten Gift"); +static const u8 DexDescription_Vipitis_2[] = _( + "bespritzen. Dieses POKéMON wird in der\n" + "langwährenden Blutsfehde mit SENGO\n" + "nicht nachgeben."); +#else static const u8 DexDescription_Vipitis_1[] = _( "VIPITIS lebt seit Generationen in\n" "Fehde mit SENGO. Die Narben auf\n" @@ -2873,7 +5371,18 @@ static const u8 DexDescription_Vipitis_2[] = _( "Kämpfe. Dieses POKéMON greift seine\n" "Gegner mit seinem scharfkantigen\n" "Schweif an."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lunastein_1[] = _( + "LUNASTEIN wird bei Vollmond aktiv.\n" + "Es läuft nicht, sondern schwebt\n" + "durch die Luft."); +static const u8 DexDescription_Lunastein_2[] = _( + "Die bedrohlichen roten Augen dieses\n" + "POKéMON lassen alle, die es sehen,\n" + "vor Angst erstarren."); +#else static const u8 DexDescription_Lunastein_1[] = _( "LUNASTEIN wurde in der Nähe eines\n" "Meteoritenkraters entdeckt. Daher\n" @@ -2882,7 +5391,18 @@ static const u8 DexDescription_Lunastein_2[] = _( "dieses POKéMON aus dem Weltall stammt.\n" "Diese Theorie konnte allerdings bisher\n" "noch nicht belegt werden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Sonnfel_1[] = _( + "Aus Sonnenlicht zieht SONNFEL seine\n" + "Energie. Es kann angeblich die Emotio-\n" + "nen anderer sehen."); +static const u8 DexDescription_Sonnfel_2[] = _( + "Dieses POKéMON gibt eine starke Hitze\n" + "ab, wenn es sich um die eigene Achse\n" + "dreht."); +#else static const u8 DexDescription_Sonnfel_1[] = _( "SONNFEL ist eine neue POKéMON-Spezies,\n" "die angeblich aus dem Weltall\n" @@ -2891,7 +5411,18 @@ static const u8 DexDescription_Sonnfel_2[] = _( "Luft und bewegt sich leise. Im Kampf\n" "setzt dieses POKéMON sehr helles Licht\n" "ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schmerbe_1[] = _( + "SCHMERBEs Körper ist mit einem\n" + "schleimigen Film bedeckt. Wenn ein\n" + "Gegner es packen will, entgeht es"); +static const u8 DexDescription_Schmerbe_2[] = _( + "seinem Griff. Dieses POKéMON wird\n" + "geschwächt, wenn sein schleimiger\n" + "Überzug austrocknet."); +#else static const u8 DexDescription_Schmerbe_1[] = _( "SCHMERBEs empfindliche Barthaare\n" "dienen ihm als hervorragendes\n" @@ -2900,7 +5431,17 @@ static const u8 DexDescription_Schmerbe_2[] = _( "sich im Schlamm, so dass nur noch seine\n" "Barthaare herausgucken, und wartet\n" "auf Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Welsar_1[] = _( + "Wenn WELSAR auf einen wilden Beute-\n" + "zug geht, erzeugt es ein Beben mit \n" + "einem Radius von 5 Kilometern."); +static const u8 DexDescription_Welsar_2[] = _( + "Dieses POKéMON kann wirkliche Erdbeben\n" + "voraussehen."); +#else static const u8 DexDescription_Welsar_1[] = _( "WELSAR legt viel Wert auf sein\n" "Territorium. Ein einzelnes POKéMON\n" @@ -2909,7 +5450,18 @@ static const u8 DexDescription_Welsar_2[] = _( "Wenn sich ein Feind nähert, schlägt es\n" "um sich und verursacht ein gewaltiges\n" "Erdbeben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krebscorps_1[] = _( + "KREBSCORPS fängt seine Beute mit\n" + "seinen scharfen Krallen. Es hat keine\n" + "besonderen Ansprüche an seine"); +static const u8 DexDescription_Krebscorps_2[] = _( + "Nahrung, es frisst einfach alles.\n" + "Dieses POKéMON lebt gern in\n" + "schmutzigem Wasser."); +#else static const u8 DexDescription_Krebscorps_1[] = _( "KREBSCORPS ist kein heimisches\n" "POKéMON, sondern wurde als Haustier\n" @@ -2918,7 +5470,18 @@ static const u8 DexDescription_Krebscorps_2[] = _( "Dieses POKéMON ist mittlerweile sehr\n" "robust und hat seine Population\n" "vergrößert."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Krebutack_1[] = _( + "KREBUTACK legt seine Schale regelmäßig\n" + "ab. Direkt danach ist seine Schale weich\n" + "und empfindlich. Bis sie gehärtet"); +static const u8 DexDescription_Krebutack_2[] = _( + "ist, sucht es sich ein Versteck in einem\n" + "Flussbett, damit es nicht von Gegnern\n" + "angegriffen wird."); +#else static const u8 DexDescription_Krebutack_1[] = _( "KREBUTACK ist von Natur aus sehr\n" "gewalttätig, so dass es dauernd andere\n" @@ -2927,7 +5490,17 @@ static const u8 DexDescription_Krebutack_2[] = _( "muss. Andere Lebensformen lehnen es ab,\n" "mit diesem POKéMON in ein und demselben\n" "Teich zu leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Puppance_1[] = _( + "Sobald es Artgenossen bemerkt, tut\n" + "sich PUPPANCE mit ihnen zusammen und\n" + "sie brüllen gemeinsam. Dieses POKéMON"); +static const u8 DexDescription_Puppance_2[] = _( + "schläft, während es geschickt auf \n" + "seinem Fuß balanciert."); +#else static const u8 DexDescription_Puppance_1[] = _( "PUPPANCE bewegt sich, indem es sich auf\n" "seinem Fuß im Kreis dreht. In sehr alten\n" @@ -2935,7 +5508,17 @@ static const u8 DexDescription_Puppance_1[] = _( static const u8 DexDescription_Puppance_2[] = _( "entdeckt, die dieses POKéMON in\n" "Begleitung von Menschen zeigen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Lepumentas_1[] = _( + "LEPUMENTAS ist ein Rätsel um eine Ton-\n" + "statue, die vor 20.000 Jahren von einer\n" + "antiken Zivilisation geschaffen wurde."); +static const u8 DexDescription_Lepumentas_2[] = _( + "Dieses POKéMON verschießt Strahlen aus\n" + "beiden Händen."); +#else static const u8 DexDescription_Lepumentas_1[] = _( "LEPUMENTAS sind aus Schlamm gefertigte\n" "Puppen, die von primitiven Menschen\n" @@ -2944,7 +5527,17 @@ static const u8 DexDescription_Lepumentas_2[] = _( "Strahlen zum Leben erweckt wurden.\n" "Diese POKéMON bewegen sich\n" "schwebend fort."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Liliep_1[] = _( + "LILIEP ist ein antikes POKéMON, das aus\n" + "einem Fossil erzeugt wurde. Es bleibt\n" + "ständig an einem Felsen verankert."); +static const u8 DexDescription_Liliep_2[] = _( + "Mit seinen beiden Augen hält es ständig\n" + "Ausschau nach Beute."); +#else static const u8 DexDescription_Liliep_1[] = _( "Von LILIEP nahm man an, es sei seit\n" "etwa hundert Millionen Jahren\n" @@ -2953,7 +5546,17 @@ static const u8 DexDescription_Liliep_2[] = _( "Blütenblätter geformten Tentakeln\n" "heftet es sich an einen Felsen auf dem\n" "Meeresboden und fängt Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Wielie_1[] = _( + "WIELIEs Körper dient ihm als Anker und\n" + "schützt ihn davor, in die stürmische\n" + "See gespült zu werden. Dieses POKéMON"); +static const u8 DexDescription_Wielie_2[] = _( + "sondert eine starke Verdauungsflüssig-\n" + "keit aus seinen Tentakeln ab."); +#else static const u8 DexDescription_Wielie_1[] = _( "WIELIE durchforstet den Meeresboden\n" "nach Beute. Dieses POKéMON fährt\n" @@ -2961,7 +5564,17 @@ static const u8 DexDescription_Wielie_1[] = _( static const u8 DexDescription_Wielie_2[] = _( "und fängt mit seinen acht Tentakeln\n" "Beute."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Anorith_1[] = _( + "ANORITH soll ein POKéMON-Vorgänger\n" + "sein, es hat acht Flügel an seinem\n" + "Körper. Dieses POKéMON schwamm im"); +static const u8 DexDescription_Anorith_2[] = _( + "Urmeer, indem es seine acht Flügel\n" + "schwang."); +#else static const u8 DexDescription_Anorith_1[] = _( "ANORITH wurde aus einem\n" "prähistorischen Fossil erzeugt. Dieses\n" @@ -2970,7 +5583,17 @@ static const u8 DexDescription_Anorith_2[] = _( "Gewässern. Es klemmt seine Beute\n" "fest zwischen seine beiden riesigen\n" "Klauen ein."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Armaldo_1[] = _( + "ARMALDO ist eine POKéMON-Spezies, die\n" + "vor vielen Jahren ausgestorben ist.\n" + "Dieses POKéMON soll sich auf seinen"); +static const u8 DexDescription_Armaldo_2[] = _( + "Hinterbeinen fortbewegt haben, da dies\n" + "für das Leben an Land bequemer war."); +#else static const u8 DexDescription_Armaldo_1[] = _( "Von ARMALDOs hartem Panzer prallen\n" "alle Angriffe ab. Dieses POKéMON\n" @@ -2979,7 +5602,17 @@ static const u8 DexDescription_Armaldo_2[] = _( "ausfahren oder einziehen kann. Es hat\n" "so viel Kraft, dass es damit eine\n" "Stahlplatte pulverisieren kann."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Barschwa_1[] = _( + "Obwohl BARSCHWAs Körper zerfetzt ist,\n" + "besitzt es eine harte und zähe Lebens-\n" + "kraft, so dass es überall leben kann."); +static const u8 DexDescription_Barschwa_2[] = _( + "Aber dieses POKéMON ist langsam und\n" + "dusselig. Daher ist es leicht zu fangen."); +#else static const u8 DexDescription_Barschwa_1[] = _( "BARSCHWAs Flossen waren schon immer\n" "zerfetzt. Wegen seines merkwürdigen\n" @@ -2987,7 +5620,17 @@ static const u8 DexDescription_Barschwa_1[] = _( static const u8 DexDescription_Barschwa_2[] = _( "weitgehend ignoriert. Es kann sowohl im\n" "Meer als auch in Flüssen leben."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Milotic_1[] = _( + "MILOTIC lebt auf dem Grund großer Seen.\n" + "Wenn dieses POKéMON rosa leuchtet,\n" + "gibt es eine Energiewelle ab, die einem"); +static const u8 DexDescription_Milotic_2[] = _( + "rastlosen Geist wohltuende Ruhe\n" + "verschaffen kann."); +#else static const u8 DexDescription_Milotic_1[] = _( "MILOTIC soll das Schönste aller\n" "POKéMON sein. Es hat die Macht,\n" @@ -2995,7 +5638,17 @@ static const u8 DexDescription_Milotic_1[] = _( static const u8 DexDescription_Milotic_2[] = _( "besänftigen und somit erbitterten\n" "Streit zu vermeiden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Formeo_1[] = _( + "FORMEO bedient sich der Kraft der\n" + "Natur, um die Gestalt der Sonne, von\n" + "Regen- oder Schneewolken anzunehmen."); +static const u8 DexDescription_Formeo_2[] = _( + "Die Gefühlslage dieses POKéMON\n" + "verändert sich mit dem Wetter."); +#else static const u8 DexDescription_Formeo_1[] = _( "FORMEOs Erscheinung ändert sich\n" "mit dem Wetter. Dieses POKéMON hat\n" @@ -3003,7 +5656,18 @@ static const u8 DexDescription_Formeo_1[] = _( static const u8 DexDescription_Formeo_2[] = _( "Kraft der Natur zu nutzen, um seinen\n" "winzigen Körper zu schützen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kecleon_1[] = _( + "KECLEON verändert seine Körper-\n" + "färbung, um sich seiner Umgebung\n" + "anzupassen. Dadurch kann es sich"); +static const u8 DexDescription_Kecleon_2[] = _( + "prima an seine ahnungslose Beute an-\n" + "schleichen. Es schlägt mit seiner dehn-\n" + "baren, langen Zunge aus und fängt sie."); +#else static const u8 DexDescription_Kecleon_1[] = _( "KECLEON kann die Farbe seines Körpers\n" "bei Bedarf verändern, um sich seiner\n" @@ -3011,7 +5675,18 @@ static const u8 DexDescription_Kecleon_1[] = _( static const u8 DexDescription_Kecleon_2[] = _( "eine Ausnahme: Das Zickzackmuster auf\n" "seinem Bauch kann es nicht verändern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Shuppet_1[] = _( + "SHUPPET wächst, indem es sich von\n" + "düsteren Gefühlen wie Rachsucht und\n" + "Neid ernährt."); +static const u8 DexDescription_Shuppet_2[] = _( + "Es streift durch Städte und sucht nach\n" + "Empfindungen, die als Ursache für den\n" + "Verderb der Menschen gelten."); +#else static const u8 DexDescription_Shuppet_1[] = _( "SHUPPET wird durch Gefühle wie Neid und\n" "Rachsucht angezogen. Wenn jemand\n" @@ -3020,7 +5695,18 @@ static const u8 DexDescription_Shuppet_2[] = _( "erscheint dieses POKéMON in Scharen\n" "und reiht sich unter der Dachrinne der\n" "Person auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Banette_1[] = _( + "Die Energie eines Fluchs durchdrang\n" + "die Füllung einer weggeworfenen und\n" + "vergessenen Plüschpuppe und erweckte"); +static const u8 DexDescription_Banette_2[] = _( + "BANETTE zum Leben. Die Energie dieses\n" + "POKéMON würde entweichen, wenn es\n" + "seinen Mund öffnen sollte."); +#else static const u8 DexDescription_Banette_1[] = _( "BANETTE belegt andere mit Flüchen,\n" "indem es Nadeln in seinen eigenen\n" @@ -3028,7 +5714,18 @@ static const u8 DexDescription_Banette_1[] = _( static const u8 DexDescription_Banette_2[] = _( "ursprünglich eine Mitleid erregende\n" "Plüschpuppe, die weggeworfen wurde."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zwirrlicht_1[] = _( + "ZWIRRLICHT wandert verloren durch die\n" + "tiefe Dunkelheit der Nacht. Kinder\n" + "werden oft ermahnt, dass dieses"); +static const u8 DexDescription_Zwirrlicht_2[] = _( + "POKéMON böse Kinder wegzaubert, die\n" + "von ihren Müttern ausgeschimpft \n" + "worden sind."); +#else static const u8 DexDescription_Zwirrlicht_1[] = _( "ZWIRRLICHT kann durch jede Wand gehen,\n" "egal, wie dick diese ist. Wenn dieses\n" @@ -3036,7 +5733,18 @@ static const u8 DexDescription_Zwirrlicht_1[] = _( static const u8 DexDescription_Zwirrlicht_2[] = _( "verfolgt es seinen Feind unnachgiebig\n" "bis zum Sonnenaufgang."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Zwirrklop_1[] = _( + "ZWIRRKLOP absorbiert alles, egal, wie\n" + "groß es auch sein mag. Dieses POKéMON\n" + "hypnotisiert seinen Gegner, indem es"); +static const u8 DexDescription_Zwirrklop_2[] = _( + "auf makabre Weise winkt und sein\n" + "einziges Auge zeigt. Der hypnotisierte\n" + "Gegner führt dann seine Befehle aus."); +#else static const u8 DexDescription_Zwirrklop_1[] = _( "ZWIRRKLOPs Körper ist komplett hohl. Es\n" "wird auch mit einem Schwarzen Loch\n" @@ -3044,7 +5752,18 @@ static const u8 DexDescription_Zwirrklop_1[] = _( static const u8 DexDescription_Zwirrklop_2[] = _( "in seinem Körper auf, es kommt jedoch\n" "nichts wieder heraus."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tropius_1[] = _( + "Kinder aus den südlichen Tropen essen\n" + "die Früchte, die am Nacken von TROPIUS\n" + "hängen, als Zwischenmahlzeit."); +static const u8 DexDescription_Tropius_2[] = _( + "Dieses POKéMON kann fliegen, indem es\n" + "mit den Blättern auf seinem Rücken\n" + "schlägt, als ob es Flügel wären."); +#else static const u8 DexDescription_Tropius_1[] = _( "Die Früchte am Nacken von TROPIUS\n" "sind bei Kindern sehr beliebt. Dieses\n" @@ -3053,7 +5772,18 @@ static const u8 DexDescription_Tropius_2[] = _( "ständig. Offensichtlich sind ihm wegen\n" "dieser Vorliebe selber Früchte\n" "gewachsen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Palimpalim_1[] = _( + "Bei starkem Wind hängt sich\n" + "PALIMPALIM an einen Ast oder an die\n" + "Dachrinne eines Gebäudes, wobei es eine"); +static const u8 DexDescription_Palimpalim_2[] = _( + "Saugkappe auf seinem Kopf benutzt.\n" + "Das POKéMON pflückt mit seinem langen\n" + "Schweif Beeren und verspeist sie."); +#else static const u8 DexDescription_Palimpalim_1[] = _( "PALIMPALIMs Schreie hallen durch\n" "seinen hohlen Körper. Wenn dieses\n" @@ -3062,7 +5792,17 @@ static const u8 DexDescription_Palimpalim_2[] = _( "seine Schreie Ultraschallwellen, die\n" "seine Feinde buchstäblich wegfegen\n" "können."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Absol_1[] = _( + "ABSOL kann bevorstehende Natur-\n" + "katastrophen voraussagen. Es lebt auf\n" + "einem kargen, zerklüfteten Berg."); +static const u8 DexDescription_Absol_2[] = _( + "Dieses POKéMON wagt sich nur sehr\n" + "selten ins Tal herunter."); +#else static const u8 DexDescription_Absol_1[] = _( "Jedes Mal, wenn ABSOL sich den Menschen\n" "zeigt, endet dies in einer Katastrophe\n" @@ -3070,7 +5810,17 @@ static const u8 DexDescription_Absol_1[] = _( static const u8 DexDescription_Absol_2[] = _( "Deswegen ist es auch als das\n" "Katastrophen-POKéMON bekannt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Isso_1[] = _( + "ISSO sammeln sich in Mondnächten,\n" + "um sich gegenseitig zu quetschen.\n" + "Dadurch gewinnt dieses POKéMON an"); +static const u8 DexDescription_Isso_2[] = _( + "Ausdauer und kann wirkungsvolle \n" + "Gegenangriffe trainieren."); +#else static const u8 DexDescription_Isso_1[] = _( "ISSO hat immer ein breites, fröhliches\n" "Lächeln auf seinem Gesicht. Um \n" @@ -3079,7 +5829,18 @@ static const u8 DexDescription_Isso_2[] = _( "man seinen Schweif betrachten. Wenn es\n" "wütend ist, schlägt es damit auf den\n" "Boden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Schneppke_1[] = _( + "SCHNEPPKE kann überleben, indem es nur\n" + "Schnee und Eis zu sich nimmt. Alte\n" + "Überlieferungen besagen, dass ein Haus,"); +static const u8 DexDescription_Schneppke_2[] = _( + "welches von diesem POKéMON besucht\n" + "wird, vielen kommenden Generationen\n" + "Glück und Erfolg beschert."); +#else static const u8 DexDescription_Schneppke_1[] = _( "SCHNEPPKE lebt in Gebieten mit heftigem\n" "Schneefall. In Jahreszeiten, in denen es\n" @@ -3088,7 +5849,18 @@ static const u8 DexDescription_Schneppke_2[] = _( "Sommer, nimmt das POKéMON Reißaus, um\n" "in einer Höhle ein ruhiges Leben unter\n" "Stalaktiten und Stalagmiten zu führen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Firnontor_1[] = _( + "FIRNONTOR hat die Fähigkeit, Eis zu\n" + "kontrollieren. Es kann beispielsweise\n" + "einen Gegner augenblicklich einfrieren."); +static const u8 DexDescription_Firnontor_2[] = _( + "Nachdem es einen Gegner im Eis\n" + "bewegungsunfähig gemacht hat,\n" + "verspeist es ihn genüsslich."); +#else static const u8 DexDescription_Firnontor_1[] = _( "FIRNONTOR hat einen Körper aus Stein,\n" "den es mit einem Panzer aus Eis noch\n" @@ -3097,7 +5869,18 @@ static const u8 DexDescription_Firnontor_2[] = _( "die Luftfeuchtigkeit der Atmosphäre\n" "einfrieren und in jegliche Form\n" "verwandeln."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seemops_1[] = _( + "SEEMOPS bewegt sich fort, indem es\n" + "seinen ballartigen Körper herumrollt.\n" + "Wenn Eisschollen auftauchen, kann man"); +static const u8 DexDescription_Seemops_2[] = _( + "dieses POKéMON dabei beobachten, wie\n" + "es über das Eis rollt und das Meer\n" + "überquert."); +#else static const u8 DexDescription_Seemops_1[] = _( "SEEMOPS kann schneller rollen als laufen.\n" "Wenn Gruppen dieses POKéMON \n" @@ -3106,7 +5889,18 @@ static const u8 DexDescription_Seemops_2[] = _( "gleichzeitig, um ihre Freude zu zeigen.\n" "Deswegen sind ihre Mahlzeiten sehr\n" "laut."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Seejong_1[] = _( + "SEEJONG balanciert häufig Dinge auf\n" + "seiner Nasenspitze und rollt sie hin und\n" + "her. Während es das tut, überprüft es"); +static const u8 DexDescription_Seejong_2[] = _( + "den Duft und die Beschaffenheit des\n" + "Gegenstandes und stellt fest, ob es das\n" + "Objekt mag oder nicht."); +#else static const u8 DexDescription_Seejong_1[] = _( "SEEJONG hat die Angewohnheit, alles,\n" "was es zum ersten Mal sieht, auf seiner \n" @@ -3115,7 +5909,18 @@ static const u8 DexDescription_Seejong_2[] = _( "POKéMON hält sich bei Laune, indem es\n" "manchmal ein SEEMOPS auf seiner Nase\n" "balanciert und hin- und herrollt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Walraisa_1[] = _( + "WALRAISA schwimmt in eiskaltem Meer-\n" + "wasser und zertrümmert Eisberge mit\n" + "seinen beeindruckenden Stoßzähnen."); +static const u8 DexDescription_Walraisa_2[] = _( + "Eine dicke Schicht aus Walfischspeck\n" + "lässt gegnerische Attacken von ihm ab-\n" + "prallen."); +#else static const u8 DexDescription_Walraisa_1[] = _( "WALRAISA hat zwei massive Stoßzähne,\n" "die mit einem Hieb Eisblöcke\n" @@ -3124,7 +5929,18 @@ static const u8 DexDescription_Walraisa_2[] = _( "10 Tonnen wiegen. Es besitzt eine dicke\n" "Speckschicht, die es vor eisigen\n" "Temperaturen schützt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Perlu_1[] = _( + "PERLU wächst, während es von seiner\n" + "steinharten Schale geschützt wird. \n" + "Wenn sein Körper zu groß für seine"); +static const u8 DexDescription_Perlu_2[] = _( + "Schale wird, ist dies ein sicheres\n" + "Anzeichen dafür, dass dieses POKéMON\n" + "kurz vor seiner Entwicklung steht."); +#else static const u8 DexDescription_Perlu_1[] = _( "PERLUs kräftige Schale dient nicht\n" "nur dem Schutz, es nutzt sie auch zum\n" @@ -3132,7 +5948,18 @@ static const u8 DexDescription_Perlu_1[] = _( static const u8 DexDescription_Perlu_2[] = _( "Schale eines PERLU weist viele\n" "Kerben und Kratzer auf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Aalabyss_1[] = _( + "AALABYSS’ Schweif ist wie ein Fisch\n" + "geformt. Es benutzt ihn, um Beute\n" + "anzuziehen und schluckt diese dann"); +static const u8 DexDescription_Aalabyss_2[] = _( + "im Ganzen herunter. Beim Schwimmen\n" + "bewegt es seinen schlanken Körper\n" + "wie eine Schlange."); +#else static const u8 DexDescription_Aalabyss_1[] = _( "AALABYSS entging lange der\n" "Aufmerksamkeit des Menschen, da es in\n" @@ -3141,7 +5968,18 @@ static const u8 DexDescription_Aalabyss_2[] = _( "Die Augen dieses POKéMON können\n" "selbst in den dunklen und trüben Tiefen\n" "des Meeres einwandfrei sehen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Saganabyss_1[] = _( + "Obwohl SAGANABYSS beim Schwimmen ein\n" + "Bild von Eleganz und Schönheit bietet,\n" + "kann es auch sehr grausam sein. Wenn es"); +static const u8 DexDescription_Saganabyss_2[] = _( + "Beute sichtet, sticht es sein dünnes\n" + "Maul in den Körper eines Gegners und\n" + "entzieht ihm die Flüssigkeit."); +#else static const u8 DexDescription_Saganabyss_1[] = _( "SAGANABYSS lebt in extremen Tiefen des\n" "Südmeeres. Sein Körper ist so angelegt,\n" @@ -3150,7 +5988,18 @@ static const u8 DexDescription_Saganabyss_2[] = _( "unglaublichen Tiefe standhalten kann.\n" "Daher übersteht dieses POKéMON\n" "gewöhnliche Attacken unbeschadet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Relicanth_1[] = _( + "RELICANTH ist eine seltene Spezies, die\n" + "auf einer Tiefsee-Expedition entdeckt\n" + "wurde. Dieses POKéMON hält dem"); +static const u8 DexDescription_Relicanth_2[] = _( + "enormen Wasserdruck des Ozeans stand.\n" + "Sein Körper ist mit steinharten\n" + "Schuppen bedeckt."); +#else static const u8 DexDescription_Relicanth_1[] = _( "RELICANTH ist eine POKéMON-Spezies,\n" "die vor hundert Millionen Jahren\n" @@ -3159,7 +6008,17 @@ static const u8 DexDescription_Relicanth_2[] = _( "verändern. Dieses antike POKéMON\n" "hat ein zahnloses Maul und ernährt sich\n" "von Mikroorganismen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Liebiskus_1[] = _( + "LIEBISKUS’ herzförmiger Körper ist ein\n" + "Symbol der Liebe und der Romantik.\n" + "Man sagt, jedem Paar, dem es begegnet,"); +static const u8 DexDescription_Liebiskus_2[] = _( + "stünde eine unendliche Liebesbeziehung\n" + "bevor."); +#else static const u8 DexDescription_Liebiskus_1[] = _( "LIEBISKUS lebt in den seichten\n" "Gewässern der Tropen. Dieses herz-\n" @@ -3168,7 +6027,18 @@ static const u8 DexDescription_Liebiskus_2[] = _( "der Tatsache, dass es hinter Liebes-\n" "paaren herschwamm, die es in den Wellen\n" "des Ozeans beobachtet hatte."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kindwurm_1[] = _( + "KINDWURM hegt einen unerfüllten Traum.\n" + "Es möchte einmal hoch über den Wolken\n" + "fliegen. Um seinen Frust über seine"); +static const u8 DexDescription_Kindwurm_2[] = _( + "Flugunfähigkeit zu vertreiben, rammt\n" + "es seinen harten Kopf gegen riesige\n" + "Felsen und macht Kiesel aus ihnen."); +#else static const u8 DexDescription_Kindwurm_1[] = _( "KINDWURM hat den Traum, fliegen zu\n" "können. In zahlreichen vergeblichen\n" @@ -3176,7 +6046,18 @@ static const u8 DexDescription_Kindwurm_1[] = _( static const u8 DexDescription_Kindwurm_2[] = _( "herunter. Daher ist sein Kopf sehr\n" "robust und so hart wie Stahl geworden."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Draschel_1[] = _( + "Auf DRASCHELs Körper befinden sich\n" + "knochenähnliche Auswüchse. Sein Panzer\n" + "ist sehr hart und wehrt jeden Angriff"); +static const u8 DexDescription_Draschel_2[] = _( + "eines Gegners ab. Während es auf seine\n" + "Entwicklung wartet, versteckt es sich\n" + "in einer Höhle."); +#else static const u8 DexDescription_Draschel_1[] = _( "In DRASCHELs panzerartiger Schale\n" "vollziehen seine Zellen eine\n" @@ -3185,7 +6066,18 @@ static const u8 DexDescription_Draschel_2[] = _( "Körper zu bilden. Die Schale dieses\n" "POKéMON ist ausgesprochen schwer, so\n" "dass seine Bewegungen träge wirken."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Brutalanda_1[] = _( + "Indem es sich in BRUTALANDA verwandelt,\n" + "setzt dieses POKéMON seinen lang\n" + "gehegten Traum von Flügeln um."); +static const u8 DexDescription_Brutalanda_2[] = _( + "Um seine Freude zu zeigen, fliegt es\n" + "durch die Luft und dreht sich. Dabei\n" + "verspuckt es Flammen aus seinem Mund."); +#else static const u8 DexDescription_Brutalanda_1[] = _( "BRUTALANDA träumte sehr lange davon,\n" "dass ihm Flügel wachsen mögen. Dieser\n" @@ -3194,7 +6086,18 @@ static const u8 DexDescription_Brutalanda_2[] = _( "plötzliche Mutation in den Zellen dieses\n" "POKéMON hervorgerufen, so dass ihm\n" "plötzlich prächtige Flügel wuchsen."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Tanhel_1[] = _( + "TANHEL hält sich am Schweben, indem es\n" + "eine magnetische Kraft erzeugt, die die\n" + "natürliche Anziehungskraft der Erde"); +static const u8 DexDescription_Tanhel_2[] = _( + "abstößt. Wenn es schläft, verankert\n" + "sich dieses POKéMON mit den Haken an\n" + "seinem Hinterteil an einem Felsen."); +#else static const u8 DexDescription_Tanhel_1[] = _( "Anstelle von Blut fließt eine starke\n" "magnetische Energie durch TANHELs\n" @@ -3202,7 +6105,18 @@ static const u8 DexDescription_Tanhel_1[] = _( static const u8 DexDescription_Tanhel_2[] = _( "mit anderen, indem es kontrollierte\n" "magnetische Impulse aussendet."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Metang_1[] = _( + "Wenn zwei TANHEL miteinander\n" + "verschmelzen, entsteht daraus METANG.\n" + "Die Gehirne der TANHEL werden mit"); +static const u8 DexDescription_Metang_2[] = _( + "einem magnetischen Nervensystem ver-\n" + "bunden. Es schlägt seine Arme nach hin-\n" + "ten, um sich schnell bewegen zu können."); +#else static const u8 DexDescription_Metang_1[] = _( "Wenn zwei TANHEL miteinander\n" "verschmelzen, entsteht daraus METANG.\n" @@ -3211,7 +6125,17 @@ static const u8 DexDescription_Metang_2[] = _( "einem magnetischen Nervensystem\n" "verbunden. Dadurch erzeugt es starke\n" "psychokinetische Energie."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Metagross_1[] = _( + "METAGROSS ist aus der Verschmelzung\n" + "zweier METANG hervorgegangen. Auf der\n" + "Jagd drückt es seine Beute mit seinem"); +static const u8 DexDescription_Metagross_2[] = _( + "massigen Körper zu Boden. Dann frisst\n" + "es sein hilfloses Opfer auf."); +#else static const u8 DexDescription_Metagross_1[] = _( "METAGROSS hat insgesamt vier Gehirne.\n" "Diese können schwierige Berechnungen\n" @@ -3220,7 +6144,17 @@ static const u8 DexDescription_Metagross_2[] = _( "Dieses POKéMON kann durch die Lüfte\n" "schweben, indem es seine vier Beine\n" "einklappt."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Regirock_1[] = _( + "REGIROCKs Körper besteht komplett aus\n" + "Steinen. Erst kürzlich stellte man\n" + "erstaunt fest, dass die Steine alle an"); +static const u8 DexDescription_Regirock_2[] = _( + "unterschiedlichen Orten ausgegraben\n" + "wurden."); +#else static const u8 DexDescription_Regirock_1[] = _( "REGIROCK wurde vor langer Zeit von\n" "Menschen weggeschlossen. Wenn der\n" @@ -3229,7 +6163,18 @@ static const u8 DexDescription_Regirock_2[] = _( "Schaden nimmt, sucht es nach\n" "passenden Steinen, um sich selber zu\n" "reparieren."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Regice_1[] = _( + "REGICE umhüllt sich selbst mit kalter\n" + "Luft von 200 Grad minus. Alles\n" + "und jeder, der sich diesem POKéMON"); +static const u8 DexDescription_Regice_2[] = _( + "nähert, friert sofort ein. Sein eisiger\n" + "Körper ist so kalt, dass nicht einmal\n" + "Magma es schmelzen könnte."); +#else static const u8 DexDescription_Regice_1[] = _( "REGICEs tiefgefrorener Körper\n" "entstand während der Eiszeit. Es kann\n" @@ -3237,7 +6182,17 @@ static const u8 DexDescription_Regice_1[] = _( static const u8 DexDescription_Regice_2[] = _( "werden. Dieses POKéMON kontrolliert\n" "eisige Luft von minus 200 Grad."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Registeel_1[] = _( + "REGISTEEL wurde in der Antike von\n" + "den Menschen eingesperrt. Das Metall,\n" + "aus dem sein Körper besteht, ist eine"); +static const u8 DexDescription_Registeel_2[] = _( + "seltsame Substanz, die nicht von dieser\n" + "Welt sein soll."); +#else static const u8 DexDescription_Registeel_1[] = _( "REGISTEEL hat einen Körper, der härter\n" "ist als jede Art von Metall. Sein Körper\n" @@ -3245,7 +6200,18 @@ static const u8 DexDescription_Registeel_1[] = _( static const u8 DexDescription_Registeel_2[] = _( "Niemand hat eine Ahnung, was dieses\n" "POKéMON wohl frisst."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Latias_1[] = _( + "LATIAS ist sehr intelligent und kann die\n" + "menschliche Sprache verstehen. Es ist\n" + "mit gläsernen Daunen bedeckt."); +static const u8 DexDescription_Latias_2[] = _( + "Dieses POKéMON umhüllt seinen Körper\n" + "mit den Daunen und kann Licht brechen,\n" + "um seine Gestalt zu verändern."); +#else static const u8 DexDescription_Latias_1[] = _( "LATIAS ist in höchstem Maße empfindlich\n" "gegenüber den Emotionen der Menschen.\n" @@ -3254,7 +6220,18 @@ static const u8 DexDescription_Latias_2[] = _( "wahrnimmt, werden seine Federn\n" "zerzaust und es stößt schrille Schreie\n" "aus, um seinen Gegner einzuschüchtern."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Latios_1[] = _( + "LATIOS schüttet nur seinem TRAINER\n" + "gegenüber sein Herz aus. Dieses\n" + "POKéMON fliegt schneller als ein"); +static const u8 DexDescription_Latios_2[] = _( + "Flugzeug, indem es seine Vorderbeine\n" + "einklappt, um den Luftwiderstand zu\n" + "verringern."); +#else static const u8 DexDescription_Latios_1[] = _( "LATIOS kann seinem Feind ein Bild\n" "von etwas, das dieser einmal gesehen\n" @@ -3262,7 +6239,18 @@ static const u8 DexDescription_Latios_1[] = _( static const u8 DexDescription_Latios_2[] = _( "POKéMON ist intelligent und es versteht\n" "die menschliche Sprache."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Kyogre_1[] = _( + "In der Mythologie taucht KYOGRE als\n" + "dasjenige POKéMON auf, das das Meer\n" + "vergrößert hat, indem es sintflutartige"); +static const u8 DexDescription_Kyogre_2[] = _( + "Regenfälle und Sturmfluten erzeugt hat.\n" + "Nach einem katastrophalen Kampf mit\n" + "GROUDON legte es sich schlafen."); +#else static const u8 DexDescription_Kyogre_1[] = _( "KYOGRE kann riesige Regenwolken\n" "erzeugen, die den gesamten Himmel\n" @@ -3271,7 +6259,18 @@ static const u8 DexDescription_Kyogre_2[] = _( "Niederschläge hervorrufen. Dieses\n" "POKéMON hat vielen Menschen das Leben\n" "gerettet, die unter einer Dürre litten."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Groudon_1[] = _( + "GROUDON hat die Macht, mit Licht und\n" + "Hitze Regenwolken zu vertreiben und \n" + "Wasser verdunsten zu lassen."); +static const u8 DexDescription_Groudon_2[] = _( + "Es brachte den Menschen Erlösung, die\n" + "unter schrecklichen Überschwemmungen\n" + "gelitten hatten."); +#else static const u8 DexDescription_Groudon_1[] = _( "GROUDON wurde lange Zeit in der\n" "Mythologie als ein POKéMON\n" @@ -3280,7 +6279,16 @@ static const u8 DexDescription_Groudon_2[] = _( "Kontinente vergrößern kann. Dieses\n" "POKéMON fiel nach einem erbitterten\n" "Kampf mit KYOGRE in den Schlaf."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Rayquaza_1[] = _( + "RAYQUAZA soll für hunderte Millionen\n" + "Jahre in der Ozonschicht der Erde über\n" + "den Wolken gelebt haben. Daher wusste"); +static const u8 DexDescription_Rayquaza_2[] = _( + "man so lange nicht von seiner Existenz."); +#else static const u8 DexDescription_Rayquaza_1[] = _( "RAYQUAZA lebte für hunderte Millionen\n" "Jahre in der Ozonschicht und stieg nie\n" @@ -3288,7 +6296,17 @@ static const u8 DexDescription_Rayquaza_1[] = _( static const u8 DexDescription_Rayquaza_2[] = _( "lebt von Wasser und Partikeln aus der\n" "Atmosphäre."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Jirachi_1[] = _( + "JIRACHI wird aus seinem tausend-\n" + "jährigen Schlaf erwachen, wenn du ihm\n" + "mit klarer Stimme etwas vorsingst."); +static const u8 DexDescription_Jirachi_2[] = _( + "Es soll angeblich alle Wünsche der\n" + "Menschen erfüllen."); +#else static const u8 DexDescription_Jirachi_1[] = _( "Einer Legende nach erfüllt JIRACHI\n" "jeden Wunsch, der auf einen Notizzettel\n" @@ -3297,7 +6315,18 @@ static const u8 DexDescription_Jirachi_2[] = _( "dieses POKéMON Gefahr wittert, kämpft\n" "es bereits, bevor es überhaupt\n" "aufgewacht ist."); +#endif +#ifdef SAPPHIRE +static const u8 DexDescription_Deoxys_1[] = _( + "DEOXYS ging aus einem Virus aus dem\n" + "Weltraum hervor. Es ist sehr intelligent\n" + "und nutzt psychokinetische Energie."); +static const u8 DexDescription_Deoxys_2[] = _( + "Dieses POKéMON verschießt\n" + "Laserstrahlen aus einem kristallartigen\n" + "Organ auf seinem Brustkorb."); +#else static const u8 DexDescription_Deoxys_1[] = _( "Die DNS eines Weltraumvirus hat eine\n" "spontane Mutation erfahren, da sie\n" @@ -3306,6 +6335,7 @@ static const u8 DexDescription_Deoxys_2[] = _( "Daraus entstand DEOXYS. \n" "Das kristallartige Organ auf der Brust\n" "dieses POKéMON ist sein Gehirn."); +#endif static const struct PokedexEntry gPokedexEntries[] = { { diff --git a/src/decoration.c b/src/decoration.c index e829cb072..e829cb072 100755..100644 --- a/src/decoration.c +++ b/src/decoration.c diff --git a/src/easy_chat.c b/src/easy_chat.c index cc2cd7030..cca8c1355 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -19,19 +19,23 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; -#ifdef NONMATCHING -u8 *sub_80EB3FC(u8 *dst, u16 word) { - int group, wordIndex; + +u8 *sub_80EB3FC(u8 *dst, u16 word) +{ + u16 group; + u16 wordIndex; u8 *src; u16 i; - if (sub_80EB37C(word)) - { return StringCopy(dst, gOtherText_ThreeQuestions); - } - if (word != 0xFFFF) + if (word == 0xFFFF) + { + dst[0] = EOS; + return dst; + } + else { group = word >> 9; wordIndex = word & 0x1FF; @@ -41,34 +45,27 @@ u8 *sub_80EB3FC(u8 *dst, u16 word) { case EC_GROUP_POKEMON_2: // 21 dst = StringCopy(dst, gSpeciesNames[wordIndex]); break; - case EC_GROUP_MOVE_1: // 18 case EC_GROUP_MOVE_2: // 19 dst = StringCopy(dst, gMoveNames[wordIndex]); break; - default: src = gEasyChatGroupWords[group]; - - i = wordIndex - 1; - while (i != 0xFFFF) + for (i = wordIndex - 1; i != 0xFFFF; i--) { while (*src++ != EOS) - { - } - i--; + ; } dst = StringCopy(dst, src); break; } + dst[0] = EOS; + return dst; } - - dst[0] = EOS; - return dst; } -#endif -u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ u16 i; u16 n; @@ -95,7 +92,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { words++; dst = sub_80EB3FC(dst, word); - dst[0] = 0xFE; + dst[0] = CHAR_NEWLINE; dst++; } @@ -105,7 +102,8 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { return dst; } -u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { +u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ u16 i; u16 n; @@ -133,7 +131,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { dst = sub_80EB3FC(dst, word); // Only difference with ConvertEasyChatWordsToString - dst[0] = (i == 0) ? 0xFE : 0xFA; + dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; dst++; } @@ -144,17 +142,16 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { } -u16 unref_sub_80EB5E0(u16 arg0) { +u16 unref_sub_80EB5E0(u16 arg0) +{ u8 *chars; u16 i; - u16 strlen; + u16 length; int group, word; if (arg0 == 0xFFFF) - { return 0; - } group = arg0 >> 9; word = arg0 & 0x1FF; @@ -164,41 +161,37 @@ u16 unref_sub_80EB5E0(u16 arg0) { case EC_GROUP_POKEMON_2: // 21 chars = (u8 *) gSpeciesNames[word]; break; - case EC_GROUP_MOVE_1: // 18 case EC_GROUP_MOVE_2: // 19 chars = gMoveNames[word]; break; - default: chars = gEasyChatGroupWords[group]; - - i = word - 1; - while (i != 0xFFFF) + for (i = word - 1; i != 0xFFFF; i--) { while (*chars++ != EOS) - { - } - i--; + ; } break; } - strlen = 0; + length = 0; while (*chars != EOS) { chars++; - strlen += 1; + length++; } - return strlen; + return length; } -static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) { +static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) +{ return FALSE; } -void unref_sub_80EB684(u8 arg0, u16 arg1) { +void unref_sub_80EB684(u8 arg0, u16 arg1) +{ u16 *ptr; u16 c; @@ -217,7 +210,6 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { c = 1; ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); break; - default: return; } @@ -231,7 +223,8 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { } } -void sub_80EB6FC(u16 *arg0, u16 arg1) { +void sub_80EB6FC(u16 *arg0, u16 arg1) +{ u16 i; for (i = arg1 - 1; i != 0xFFFF; i--) @@ -242,35 +235,30 @@ void sub_80EB6FC(u16 *arg0, u16 arg1) { } -u16 sub_80EB72C(u16 group) { - u16 local1; - - local1 = Random() % gEasyChatGroupSizes[group]; +u16 sub_80EB72C(u16 group) +{ + u16 local1 = Random() % gEasyChatGroupSizes[group]; - if (group == EC_GROUP_POKEMON || - group == EC_GROUP_POKEMON_2 || - group == EC_GROUP_MOVE_1 || - group == EC_GROUP_MOVE_2) + if (group == EC_GROUP_POKEMON + || group == EC_GROUP_POKEMON_2 + || group == EC_GROUP_MOVE_1 + || group == EC_GROUP_MOVE_2) { local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; } - return ((group & 0x7F) << 9) | (local1 & 0x1FF); } -u16 sub_80EB784(u16 group) { +u16 sub_80EB784(u16 group) +{ if (!sub_80EAD7C(group)) - { return -1; - } if (group != EC_GROUP_POKEMON) { if (group == EC_GROUP_TRENDY_SAYING) - { return sub_80EB960(); - } } else { @@ -280,11 +268,11 @@ u16 sub_80EB784(u16 group) { return sub_80EB72C(group); } -void sub_80EB7C4(void) { +void sub_80EB7C4(void) +{ u16 *words; u16 arg1, arg2; - switch (gSpecialVar_0x8004) { case 0: @@ -292,7 +280,6 @@ void sub_80EB7C4(void) { arg1 = 2; arg2 = 2; break; - case 1: words = gSaveBlock1.unk2B28; if (sub_80EB680(gSaveBlock1.unk2B28, 3, 2, 20)) @@ -306,19 +293,16 @@ void sub_80EB7C4(void) { arg2 = 2; } break; - case 2: words = gSaveBlock1.unk2B34; arg1 = 3; arg2 = 2; break; - case 3: words = gSaveBlock1.unk2B40; arg1 = 3; arg2 = 2; break; - default: return; } @@ -327,74 +311,65 @@ void sub_80EB7C4(void) { ShowFieldAutoScrollMessage(gStringVar4); } -void sub_80EB83C(void) { +void sub_80EB83C(void) +{ u16 group, local2; if (Random() & 1) - { group = EC_GROUP_HOBBIES; - } else - { group = EC_GROUP_LIFESTYLE; - } local2 = sub_80EB784(group); sub_80EB3FC(gStringVar2, local2); } -u8 sub_80EB868(u8 arg0) { +u8 sub_80EB868(u8 arg0) +{ int offset; int index; index = arg0 / 8; - offset = arg0 & 7; + offset = arg0 % 8; return (gSaveBlock1.unk2D8C[index] >> offset) & 1; } -void sub_80EB890(u8 arg0) { +void sub_80EB890(u8 arg0) +{ int offset; int index; - if (arg0 > 32) + if (arg0 < 33) { - return; + index = arg0 / 8; + offset = arg0 % 8; + gSaveBlock1.unk2D8C[index] |= 1 << offset; } - - index = arg0 / 8; - offset = arg0 & 7; - gSaveBlock1.unk2D8C[index] |= 1 << offset; } -u8 sub_80EB8C0(void) { - u8 i, retval; +u8 sub_80EB8C0(void) +{ + u8 i, count; - i = 0; - retval = 0; - for (; i < 33; i++) + for (i = 0, count = 0; i < 33; i++) { if (sub_80EB868(i)) - { - retval += 1; - } + count++; } - - return retval; + return count; } -u16 sub_80EB8EC(void) { +u16 sub_80EB8EC(void) +{ u16 i; u16 local1, local2; local1 = sub_80EB8C0(); if (local1 == 33) - { return -1; - } local2 = Random() % (33 - local1); - - for (i = 0; i <= 0x20; i++) + for (i = 0; i < 33; i++) { if (sub_80EB868(i) == 0) { @@ -403,35 +378,28 @@ u16 sub_80EB8EC(void) { sub_80EB890(i); return (i & 0x1FF) | 0x2800; } - local2--; } } - return -1; } -static u16 sub_80EB960(void) { +static u16 sub_80EB960(void) +{ u16 i; u16 local1; local1 = sub_80EB8C0(); if (local1 == 0) - { return -1; - } local1 = Random() % local1; - - for (i = 0; i <= 0x20; i++) + for (i = 0; i < 33; i++) { if (sub_80EB868(i)) { if (local1 == 0) - { return (i & 0x1FF) | 0x2800; - } - local1--; } } @@ -439,11 +407,13 @@ static u16 sub_80EB960(void) { return -1; } -u8 sub_80EB9C8(void) { +u8 sub_80EB9C8(void) +{ return IsNationalPokedexEnabled(); } -static u16 sub_80EB9D8(void) { +static u16 sub_80EB9D8(void) +{ u16 *speciesList; u16 local1; u16 i; @@ -451,32 +421,22 @@ static u16 sub_80EB9D8(void) { local1 = sub_80EAE88(0); if (local1 == 0) - { return -1; - } local1 = Random() % local1; speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; - for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = GetNationalPokedexFlag(dexNum, 0); if (local2) { if (local1 == 0) - { return *speciesList & 0x1FF; - } - local1--; } - speciesList++; } - return -1; } - diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 2d8140be5..a4f52f4b9 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -206,7 +206,7 @@ int sub_8068024(struct FieldInput *input) sub_8071310(); return TRUE; } - if (input->pressedSelectButton && sub_80A6D1C() == 1) + if (input->pressedSelectButton && sub_80A6D1C() == TRUE) return TRUE; return FALSE; } diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index 17584c96a..46784cff3 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -34,7 +34,7 @@ bool8 FreezeMapObject(struct MapObject *mapObject) } } -void FreezeMapObjects() +void FreezeMapObjects(void) { u8 i; for (i = 0; i < 16; i++) diff --git a/src/field_specials.c b/src/field_specials.c index 2b505bbfe..2b505bbfe 100755..100644 --- a/src/field_specials.c +++ b/src/field_specials.c diff --git a/src/field_tasks.c b/src/field_tasks.c index caf2ce6b9..caf2ce6b9 100755..100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c diff --git a/src/item.c b/src/item.c index 2eb013490..36871285a 100644 --- a/src/item.c +++ b/src/item.c @@ -1,21 +1,25 @@ #include "global.h" +#include "hold_effects.h" #include "item.h" #include "items.h" +#include "item_use.h" #include "berry.h" #include "string_util.h" #include "strings.h" extern u8 gUnknown_02038560; -extern struct Item gItems[]; -struct BagPocket +// These constants are used in gItems +enum { - struct ItemSlot *itemSlots; - u8 capacity; + POCKET_NONE, + POCKET_ITEMS, + POCKET_POKE_BALLS, + POCKET_TM_HM, + POCKET_BERRIES, + POCKET_KEY_ITEMS, }; -extern struct BagPocket gBagPockets[5]; - enum { ITEMS_POCKET, @@ -25,6 +29,14 @@ enum KEYITEMS_POCKET }; +#if ENGLISH +#include "data/item_descriptions_en.h" +#include "data/items_en.h" +#elif GERMAN +#include "data/item_descriptions_de.h" +#include "data/items_de.h" +#endif + static void CompactPCItems(void); void CopyItemName(u16 itemId, u8 *string) @@ -137,6 +149,9 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count) return TRUE; } +// This function matches if gBagPockets is declared non-const, +// but it should be fixed anyway. +#ifdef NONMATCHING bool8 AddBagItem(u16 itemId, u16 count) { u8 i; @@ -201,6 +216,158 @@ bool8 AddBagItem(u16 itemId, u16 count) memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot)); return TRUE; } +#else +__attribute__((naked)) +bool8 AddBagItem(u16 itemId, u16 count) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x100\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + lsls r1, 16\n\ + lsrs r4, r1, 16\n\ + bl ItemId_GetPocket\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080A9510\n\ + mov r0, r8\n\ + bl ItemId_GetPocket\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, _080A94F8 @ =gBagPockets\n\ + lsls r0, r6, 3\n\ + adds r5, r0, r1\n\ + ldr r1, [r5]\n\ + ldrb r2, [r5, 0x4]\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + bl memcpy\n\ + ldr r7, _080A94FC @ =0x000003e7\n\ + cmp r6, 0x3\n\ + beq _080A9468\n\ + movs r7, 0x63\n\ +_080A9468:\n\ + movs r1, 0\n\ + ldrb r0, [r5, 0x4]\n\ + cmp r1, r0\n\ + bcs _080A94B2\n\ + subs r0, r6, 0x2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r12, r0\n\ +_080A9478:\n\ + lsls r0, r1, 2\n\ + mov r2, sp\n\ + adds r3, r2, r0\n\ + ldrh r0, [r3]\n\ + cmp r0, r8\n\ + bne _080A94A6\n\ + ldrh r2, [r3, 0x2]\n\ + adds r0, r2, r4\n\ + cmp r0, r7\n\ + ble _080A9500\n\ + mov r0, r12\n\ + cmp r0, 0x1\n\ + bls _080A9510\n\ + subs r0, r7, r2\n\ + subs r0, r4, r0\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + strh r7, [r3, 0x2]\n\ + ldr r2, _080A94F8 @ =gBagPockets\n\ + mov r9, r2\n\ + lsls r3, r6, 3\n\ + cmp r4, 0\n\ + beq _080A9516\n\ +_080A94A6:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r0, [r5, 0x4]\n\ + cmp r1, r0\n\ + bcc _080A9478\n\ +_080A94B2:\n\ + ldr r2, _080A94F8 @ =gBagPockets\n\ + mov r9, r2\n\ + lsls r3, r6, 3\n\ + cmp r4, 0\n\ + beq _080A9516\n\ + movs r1, 0\n\ + adds r0, r3, r2\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r1, r0\n\ + bcs _080A94F2\n\ + mov r6, r9\n\ + adds r5, r3, r6\n\ +_080A94CA:\n\ + lsls r0, r1, 2\n\ + mov r6, sp\n\ + adds r2, r6, r0\n\ + ldrh r0, [r2]\n\ + cmp r0, 0\n\ + bne _080A94E6\n\ + mov r0, r8\n\ + strh r0, [r2]\n\ + cmp r4, r7\n\ + bls _080A9514\n\ + subs r0, r4, r7\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + strh r7, [r2, 0x2]\n\ +_080A94E6:\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r2, [r5, 0x4]\n\ + cmp r1, r2\n\ + bcc _080A94CA\n\ +_080A94F2:\n\ + cmp r4, 0\n\ + beq _080A9516\n\ + b _080A9510\n\ + .align 2, 0\n\ +_080A94F8: .4byte gBagPockets\n\ +_080A94FC: .4byte 0x000003e7\n\ +_080A9500:\n\ + strh r0, [r3, 0x2]\n\ + ldr r0, _080A950C @ =gBagPockets\n\ + lsls r1, r6, 3\n\ + adds r1, r0\n\ + b _080A951A\n\ + .align 2, 0\n\ +_080A950C: .4byte gBagPockets\n\ +_080A9510:\n\ + movs r0, 0\n\ + b _080A9528\n\ +_080A9514:\n\ + strh r4, [r2, 0x2]\n\ +_080A9516:\n\ + mov r6, r9\n\ + adds r1, r3, r6\n\ +_080A951A:\n\ + ldr r0, [r1]\n\ + ldrb r2, [r1, 0x4]\n\ + lsls r2, 2\n\ + mov r1, sp\n\ + bl memcpy\n\ + movs r0, 0x1\n\ +_080A9528:\n\ + add sp, 0x100\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif bool8 RemoveBagItem(u16 itemId, u16 count) { @@ -410,7 +577,7 @@ static u16 SanitizeItemId(u16 itemId) return itemId; } -struct Item *ItemId_GetItem(u16 itemId) +const struct Item *ItemId_GetItem(u16 itemId) { return &gItems[SanitizeItemId(itemId)]; } @@ -435,15 +602,15 @@ u8 ItemId_GetHoldEffectParam(u16 itemId) return gItems[SanitizeItemId(itemId)].holdEffectParam; } -u8 *ItemId_GetDescription(u16 itemId) +const u8 *ItemId_GetDescription(u16 itemId) { return gItems[SanitizeItemId(itemId)].description; } -bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) +bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) { u32 r5 = c + 1; - u8 *description = gItems[SanitizeItemId(itemId)].description; + const u8 *description = gItems[SanitizeItemId(itemId)].description; u8 *str = a; for (;;) diff --git a/src/item_menu.c b/src/item_menu.c new file mode 100644 index 000000000..350ba3db4 --- /dev/null +++ b/src/item_menu.c @@ -0,0 +1,4583 @@ +#include "global.h" +#include "berry.h" +#include "berry_tag_screen.h" +#include "data2.h" +#include "decompress.h" +#include "field_effect.h" +#include "field_map_obj_helpers.h" +#include "field_player_avatar.h" +#include "graphics.h" +#include "item.h" +#include "items.h" +#include "item_menu.h" +#include "item_use.h" +#include "link.h" +#include "mail_data.h" +#include "main.h" +#include "map_name_popup.h" +#include "menu.h" +#include "menu_cursor.h" +#include "menu_helpers.h" +#include "money.h" +#include "palette.h" +#include "party_menu.h" +#include "player_pc.h" +#include "pokemon_menu.h" +#include "rom4.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "strings.h" +#include "strings2.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +// External stuff +extern u8 ewram[]; +extern void gpu_pal_allocator_reset__manage_upper_four(void); +extern void sub_80F9020(void); +extern void sub_80F9988(); +extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); +extern void PauseVerticalScrollIndicator(); +extern u8 sub_80F9284(void); +extern void sub_808B5B4(); +extern u8 sub_80F92F4(); +extern void sub_80C9C7C(u8); +extern void pal_fill_black(void); +extern bool8 sub_807D770(void); +extern u8 sub_80F931C(); +extern void sub_808A3F8(u8); +extern void sub_80B3050(void); +extern void sub_80546B8(u8); +extern void sub_804E990(u8); +extern void sub_802E424(u8); +extern void sub_8064E2C(void); + +struct PocketScrollState +{ + u8 cursorPos; + u8 scrollTop; + u8 numSlots; + u8 cursorMax; +}; + +struct UnknownStruct2 +{ + u8 unk0; + u8 textLine; + u8 unk2; +}; + +struct UnknownStruct3 +{ + u8 unk0; + u8 unk1; + u8 unk2; +}; + +struct UnknownStruct4 +{ + u8 unk0; + u8 unk1; + u16 unk2; + const u8 *unk4; + TaskFunc unk8; +}; + +struct UnknownStruct5 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +}; + +struct UnknownStruct6 +{ + u8 unk0; +}; + +enum +{ + BAG_POCKET_ITEMS, // 0 + BAG_POCKET_POKE_BALLS, // 1 + BAG_POCKET_TMs_HMs, // 2 + BAG_POCKET_BERRIES, // 3 + BAG_POCKET_KEY_ITEMS, // 4 +}; + +enum +{ + RETURN_TO_FIELD_0, + RETURN_TO_BATTLE, + RETURN_TO_PKMN_LIST, + RETURN_TO_SHOP, + RETURN_TO_FIELD_4, + RETURN_TO_FIELD_5, + RETURN_TO_PC, + RETURN_TO_WALLY_BATTLE, +}; + +enum +{ + ITEM_ACTION_USE_0, // 0 + ITEM_ACTION_TOSS, // 1 + ITEM_ACTION_CANCEL_2, // 2 + ITEM_ACTION_REGISTER, // 3 + ITEM_ACTION_USE_4, // 4 + ITEM_ACTION_CANCEL_5, // 5 + ITEM_ACTION_GIVE, // 6 + ITEM_ACTION_CHECK_TAG, // 7 + ITEM_ACTION_NONE, // 8 + ITEM_ACTION_CONFIRM, // 9 +}; + +// ewram +EWRAM_DATA static struct UnknownStruct2 gUnknown_0203853C = {0}; +EWRAM_DATA static struct UnknownStruct3 gUnknown_02038540 = {0}; +EWRAM_DATA static struct UnknownStruct4 gUnknown_02038544 = {0}; +EWRAM_DATA static struct UnknownStruct5 gUnknown_02038550 = {0}; +EWRAM_DATA static struct UnknownStruct6 gUnknown_02038554 = {0}; // There are 3 bytes of padding after this, so I assume it's a struct +EWRAM_DATA static u8 gUnknown_02038558 = 0; +EWRAM_DATA static s8 sCurrentBagPocket = 0; +EWRAM_DATA static u8 gUnknown_0203855A = 0; +EWRAM_DATA static s8 gUnknown_0203855B = 0; +EWRAM_DATA static s8 gUnknown_0203855C = 0; +EWRAM_DATA u16 gScriptItemId = 0; +EWRAM_DATA u8 gUnknown_02038560 = 0; +EWRAM_DATA u8 gUnknown_02038561 = 0; +EWRAM_DATA static u8 gUnknown_02038562 = 0; +EWRAM_DATA static u8 gUnknown_02038563 = 0; +EWRAM_DATA static u8 gUnknown_02038564 = 0; +EWRAM_DATA static u8 sPokeballSpriteId ALIGNED(4) = 0; // HACK: why is there a space before this variable? + +// bss +static u8 sPopupMenuSelection; +static u8 sReturnLocation; +static const u8 *sPopupMenuActionList; + +// common +void (*gUnknown_03005D00)(u8) = NULL; +extern u16 gUnknown_030041B4; +extern struct PocketScrollState gBagPocketScrollStates[]; +extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots +extern const u8 Event_NoRegisteredItem[]; + +#define ewramBerryPic (ewram + 0) +#define ewramBerryPicTemp (ewram + 0x1000) +#define ewramSavedItemsPocket ((struct ItemSlot *)(ewram + 0x1E000)) // saved items pocket (for Wally battle) +#define ewramSavedPokeballsPocket ((struct ItemSlot *)(ewram + 0x1F000)) // saved Pokeballs pocket (for Wally battle) +#define ewramBagSetupStep (ewram[0x1FFFF]) + +extern const struct CompressedSpriteSheet sMaleBagSpriteSheet; +extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet; +extern const struct CompressedSpritePalette sBagSpritePalette; + +const struct BagPocket gBagPockets[NUM_BAG_POCKETS] = +{ + {gSaveBlock1.bagPocket_Items, 20}, + {gSaveBlock1.bagPocket_PokeBalls, 16}, + {gSaveBlock1.bagPocket_TMHM, 64}, + {gSaveBlock1.bagPocket_Berries, 46}, + {gSaveBlock1.bagPocket_KeyItems, 20}, +}; + +static void HandlePopupMenuAction_UseOnField(u8); +static void HandlePopupMenuAction_Toss(u8); +static void sub_80A5F80(u8); +static void HandlePopupMenuAction_Register(u8); +static void HandlePopupMenuAction_UseInBattle(u8); +static void sub_80A7124(u8); +static void HandlePopupMenuAction_Give(u8); +static void HandlePopupMenuAction_CheckTag(u8); +static void HandlePopupMenuAction_Confirm(u8); + +static const struct MenuAction2 sItemPopupMenuActions[] = +{ + {OtherText_Use, HandlePopupMenuAction_UseOnField}, + {OtherText_Toss, HandlePopupMenuAction_Toss}, + {gOtherText_CancelNoTerminator, sub_80A5F80}, + {OtherText_Register, HandlePopupMenuAction_Register}, + {OtherText_Use, HandlePopupMenuAction_UseInBattle}, + {gOtherText_CancelNoTerminator, sub_80A7124}, + {OtherText_Give2, HandlePopupMenuAction_Give}, + {OtherText_CheckTag, HandlePopupMenuAction_CheckTag}, + {gOtherText_CancelWithTerminator, NULL}, + {OtherText_Confirm, HandlePopupMenuAction_Confirm}, +}; + +static const u8 sItemPopupMenuChoicesTable[][6] = +{ + [BAG_POCKET_ITEMS] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_TOSS, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_POKE_BALLS] = + { + ITEM_ACTION_GIVE, + ITEM_ACTION_TOSS, + ITEM_ACTION_NONE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_TMs_HMs] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_NONE, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2, + }, + + [BAG_POCKET_BERRIES] = + { + ITEM_ACTION_CHECK_TAG, + ITEM_ACTION_USE_0, + ITEM_ACTION_TOSS, + ITEM_ACTION_NONE, + ITEM_ACTION_GIVE, + ITEM_ACTION_CANCEL_2 + }, + + [BAG_POCKET_KEY_ITEMS] = + { + ITEM_ACTION_USE_0, + ITEM_ACTION_NONE, + ITEM_ACTION_REGISTER, + ITEM_ACTION_CANCEL_2, + }, +}; + +const u8 gUnknown_083C16AE[][2] = +{ + {6, 2}, + {6, 2}, + {6, 2}, + {6, 2}, + {2, 0}, +}; + +const u8 gUnknown_083C16B8[] = {7, 9, 8, 2}; + +static void OnItemSelect_Field05(u8); +static void OnBagClose_Field0(u8); +static void OnBagClose_PkmnList(u8); +static void OnItemSelect_PkmnList(u8); +static void OnBagClose_Shop(u8); +static void OnItemSelect_Shop(u8); +static void OnBagClose_Field4(u8); +static void OnItemSelect_Field4(u8); +static void OnBagClose_Field5(u8); +static void OnBagClose_PC(u8); +static void OnItemSelect_PC(u8); +static void OnItemSelect_Battle(u8); +static void OnBagClose_Battle(u8); + +static const struct {TaskFunc onItemSelect; TaskFunc onBagClose;} gUnknown_083C16BC[] = +{ + [RETURN_TO_FIELD_0] = {OnItemSelect_Field05, OnBagClose_Field0}, + [RETURN_TO_BATTLE] = {OnItemSelect_Battle, OnBagClose_Battle}, + [RETURN_TO_PKMN_LIST] = {OnItemSelect_PkmnList, OnBagClose_PkmnList}, + [RETURN_TO_SHOP] = {OnItemSelect_Shop, OnBagClose_Shop}, + [RETURN_TO_FIELD_4] = {OnItemSelect_Field4, OnBagClose_Field4}, + [RETURN_TO_FIELD_5] = {OnItemSelect_Field05, OnBagClose_Field5}, + [RETURN_TO_PC] = {OnItemSelect_PC, OnBagClose_PC}, +}; + +static void sub_80A5E60(u8); +static void sub_80A5E90(u8); + +static const struct YesNoFuncTable gUnknown_083C16F4 = {sub_80A5E60, sub_80A5E90}; + +static void sub_80A65AC(u8); +static void sub_80A6618(u8); + +const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618}; + +void sub_80A34E8(void); +static bool8 LoadBagGraphicsMultistep(void); +static void sub_80A362C(void); +static void sub_80A3740(void); +static void sub_80A396C(u16 *, u8, u8, u8); +static void sub_80A39B8(u16 *, u8); +static void sub_80A39E4(u16 *, u8, u8, s8); +static void DrawPocketIndicatorDots(u16 *, u8); +static void SortItemSlots(struct BagPocket); +static void UpdateAllBagPockets(void); +static void sub_80A3D24(u8); +static void sub_80A3D40(void); +static void RemoveSelectIconFromRegisteredItem(void); +static void sub_80A48E8(u16, int, int); +static void ItemListMenu_InitDescription(s16); +static void ItemListMenu_ChangeDescription(s16, int); +static void sub_80A4F68(u8); +static void sub_80A50C8(u8); +static void sub_80A5AE4(u8); +static void sub_80A5BF8(u8); +static void Task_CallItemUseOnFieldCallback(u8); +static void sub_80A6444(u8); +static void sub_80A648C(u8); +static void Task_BuyHowManyDialogueHandleInput(u8); +static void BuyMenuPrintItemQuantityAndPrice(u8); +static void BuyMenuDisplayMessage(u16, u16); +static void sub_80A683C(void); +static void sub_80A6870(u16, u8); +static void sub_80A699C(void); +static void sub_80A7230(u8); +static void ItemListMenu_InitMenu(void); +static void sub_80A73C0(void); +static void sub_80A73F0(void); +static void sub_80A73FC(void); +static void sub_80A740C(void); +static void sub_80A7420(void); +static void sub_80A751C(void); +static void sub_80A7528(u8); +static void sub_80A7590(void); +static void sub_80A75E4(void); +static void sub_80A7630(void); +static void sub_80A763C(void); +static void sub_80A76A0(void); +static void sub_80A770C(void); +static void DisplayCannotUseItemMessage(int, const u8 *, TaskFunc, int); +static void sub_80A7768(void); +static void sub_80A7828(void); +static void sub_80A7834(int, int); +static bool32 sub_80A78A0(void); +static void sub_80A78B8(void); +static bool32 sub_80A78C4(void); +static void sub_80A78E8(void); +static int sub_80A78F4(void); +static void sub_80A7918(void); +static int sub_80A7924(void); +static int sub_80A7958(void); +static void sub_80A7970(void); +static void sub_80A797C(void); +static int sub_80A7988(void); +static void sub_80A79B4(struct Sprite *); +static void sub_80A79EC(struct Sprite *); +static void sub_80A7A94(struct Sprite *); +static void sub_80A7AE4(struct Sprite *); +static void CreateBagSprite(void); +static void sub_80A7B6C(struct Sprite *); +static void CreateBagPokeballSprite(u8); +static void sub_80A7C64(void); + +static void sub_80A3118(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + sub_80A740C(); + UpdatePaletteFade(); +} + +static void sub_80A3134(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + { + const void *src = gBGTilemapBuffers[1]; + void *dst = (void *)(VRAM + 0x2000); + + DmaCopy16(3, src, dst, 0x800); + } + + { + const void *src = gBGTilemapBuffers[2]; + void *dst = (void *)(VRAM + 0x6000); + + DmaCopy16(3, src, dst, 0x800); + } +} + +static bool8 SetupBagMultistep(void) +{ + u32 index; + u16 savedIme; + + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80A34E8(); + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + gpu_pal_allocator_reset__manage_upper_four(); + gMain.state++; + break; + case 3: + sub_80F9020(); + ewramBagSetupStep = 0; + gMain.state++; + break; + case 4: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 5: + ResetSpriteData(); + gMain.state++; + break; + case 6: + if (LoadBagGraphicsMultistep() == FALSE) + break; + gMain.state++; + break; + case 7: + SetUpWindowConfig(&gWindowConfig_81E6DFC); + gMain.state++; + break; + case 8: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + gMain.state++; + break; + case 9: + if (!MultistepInitMenuWindowContinue()) + break; + gMain.state++; + break; + case 10: + sub_80F944C(); + LoadScrollIndicatorPalette(); + CreateVerticalScrollIndicators(0, 172, 12); + CreateVerticalScrollIndicators(1, 172, 148); + CreateVerticalScrollIndicators(2, 28, 88); + CreateVerticalScrollIndicators(3, 100, 88); + sub_80F9988(0, 2); + sub_80F9988(1, 2); + sub_80F9988(2, 2); + sub_80F9988(3, 2); + if (sReturnLocation == RETURN_TO_FIELD_4 || sReturnLocation == RETURN_TO_FIELD_5) + { + sub_80F979C(2, 1); + sub_80F979C(3, 1); + } + gMain.state++; + break; + case 11: + gUnknown_0203855A = 16; + sub_80A39B8(gBGTilemapBuffers[2], sCurrentBagPocket + 1); + DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); + UpdateAllBagPockets(); + SortItemSlots(gBagPockets[2]); + SortItemSlots(gBagPockets[3]); + sub_80A3D40(); + gCurrentBagPocketItemSlots = gBagPockets[sCurrentBagPocket].itemSlots; + sub_80A362C(); + gMain.state++; + break; + case 12: + sub_80A48E8(0xFFFF, 0, 7); + index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + ItemListMenu_InitDescription(gCurrentBagPocketItemSlots[index].itemId); + ItemListMenu_InitMenu(); + gUnknown_0203855B = sCurrentBagPocket + 1; + gUnknown_0203855C = 0; + gMain.state++; + break; + case 13: + CreateBagSprite(); + CreateBagPokeballSprite(0); + sub_80A3740(); + gMain.state++; + break; + case 14: + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gPaletteFade.bufferTransferDisabled = FALSE; + gMain.state++; + break; + case 15: + if (sub_8055870() == TRUE) + break; + gMain.state++; + break; + case 16: + SetVBlankCallback(sub_80A3134); + SetMainCallback2(sub_80A3118); + sub_80A751C(); + sub_80A7630(); + sub_80A770C(); + sub_80A7828(); + sub_80A78B8(); + return TRUE; + } + return FALSE; +} + +static bool8 sub_80A34B4(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + sPopupMenuSelection = 0; + ResetTasks(); + return TRUE; + } + if (sub_80F9344() == TRUE) + break; + } + return FALSE; +} + + +void sub_80A34E8(void) +{ + sub_80F9368(); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(4) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + REG_BLDCNT = 0; +} + +static bool8 LoadBagGraphicsMultistep(void) +{ + switch (ewramBagSetupStep) + { + case 0: + LZDecompressVram(gBagScreen_Gfx, (void *)(VRAM + 0x4000)); + ewramBagSetupStep++; + break; + case 1: + CpuCopy16(gUnknown_08E77004, gBGTilemapBuffers[2], 0x800); + ewramBagSetupStep++; + break; + case 2: + if (gSaveBlock2.playerGender == MALE || sReturnLocation == RETURN_TO_WALLY_BATTLE) + LoadCompressedPalette(gBagScreenMale_Pal, 0, 64); + else + LoadCompressedPalette(gBagScreenFemale_Pal, 0, 64); + ewramBagSetupStep++; + break; + case 3: + if (gSaveBlock2.playerGender == MALE || sReturnLocation == RETURN_TO_WALLY_BATTLE) + LoadCompressedObjectPic(&sMaleBagSpriteSheet); + else + LoadCompressedObjectPic(&sFemaleBagSpriteSheet); + ewramBagSetupStep++; + break; + case 4: + LoadCompressedObjectPalette(&sBagSpritePalette); + ewramBagSetupStep = 0; + return TRUE; + } + return FALSE; +} + +static void sub_80A362C(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + u8 r3; + + if (sReturnLocation == RETURN_TO_FIELD_5) + r3 = gBagPocketScrollStates[i].numSlots - 1; + else + r3 = gBagPocketScrollStates[i].numSlots; + + if (gBagPocketScrollStates[i].scrollTop != 0) + { + if (gBagPocketScrollStates[i].scrollTop + gBagPocketScrollStates[i].cursorMax > r3) + gBagPocketScrollStates[i].scrollTop = r3 - gBagPocketScrollStates[i].cursorMax; + } + else + { + if (gBagPocketScrollStates[i].cursorPos > r3) + gBagPocketScrollStates[i].cursorPos = r3; + } + } +} + +void ResetBagScrollPositions(void) +{ + u16 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + { + gBagPocketScrollStates[i].cursorPos = 0; + gBagPocketScrollStates[i].scrollTop = 0; + gBagPocketScrollStates[i].numSlots = 0; + gBagPocketScrollStates[i].cursorMax = 0; + } + sCurrentBagPocket = 0; +} + +static void sub_80A36B8(u16 *a, u8 b, u8 c, u8 d, u8 e) +{ + u16 i; + u16 j; + + for (i = c; i <= c + e; i++) + { + for (j = b; j <= b + d; j++) + { + u32 index = j + i * 32; + + a[index] = 0; + } + } +} + +void ClearBag(void) +{ + u16 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + ClearItemSlots(gBagPockets[i].itemSlots, gBagPockets[i].capacity); + ResetBagScrollPositions(); +} + +static void sub_80A3740(void) +{ + const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; + + LoadPalette(&colors[1], 0xD1, sizeof(colors[1])); + LoadPalette(&colors[0], 0xD8, sizeof(colors[0])); +} + +static void sub_80A3770(void) +{ + if (sReturnLocation == RETURN_TO_FIELD_0) + { + sPopupMenuActionList = sItemPopupMenuChoicesTable[sCurrentBagPocket]; + if (sCurrentBagPocket != BAG_POCKET_BERRIES) + gUnknown_02038564 = 4; + else + gUnknown_02038564 = 6; + } +} + +static void sub_80A37C0(u8 taskId) +{ + gTasks[taskId].func = sub_80A50C8; + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(2); + StartVerticalScrollIndicators(3); +} + +static void sub_80A37F8(u8 taskId) +{ + u8 r5 = gUnknown_0203855A; + + if (r5 < 16) + { + gUnknown_0203855A++; + sub_80A396C(gBGTilemapBuffers[2], r5, gUnknown_0203855A, 0x4F); + sub_80A39E4(gBGTilemapBuffers[2], sCurrentBagPocket + 1, gUnknown_0203855A / 2, gTasks[taskId].data[5]); + gUnknown_02038558 = 1; + sub_80A48E8(taskId, r5 / 2, gUnknown_0203855A / 2 - 1); + gUnknown_02038558 = 0; + return; + } + + if (gLinkOpen == TRUE) + { + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, gUnknown_02038562); + gUnknown_02038562++; + } + else + { + while (gUnknown_02038562 < 3) + { + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, gUnknown_02038562); + gUnknown_02038562++; + } + } + if (gUnknown_02038562 == 3) + { + gUnknown_0203855A = 16; + gUnknown_0203855B = sCurrentBagPocket + 1; + sub_80A37C0(FindTaskIdByFunc(sub_80A4F68)); + DestroyTask(taskId); + ItemListMenu_InitMenu(); + sub_80F979C(2, 0); + sub_80F979C(3, 0); + } +} + +static void sub_80A3954(u16 *a) +{ + CpuCopy16(gUnknown_08E77004, a, 0x800); +} + +static void sub_80A396C(u16 *a, u8 b, u8 c, u8 d) +{ + u16 *dst = a + 14 + (b + 2) * 32; + u16 i; + + while (c > b++) + { + for (i = 0; i < 15; i++) + dst[i] = d; + dst += 32; + } +} + +static void sub_80A39B8(u16 *a, u8 b) +{ + u8 var = b * 2; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, 0, var, 8, 2); +} + +static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) +{ + u16 r2 = b * 2; + u16 r7; + + if (d == -1) + { + r7 = (b + 1) * 2; + if (b == 5) + r7 = 2; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, 8 - c, r2, c, 2); + sub_809D104(a, c + 4, 10, gUnknown_08E96EC8, 0, r7, 8 - c, 2); + } + else if (d == 1) + { + r7 = (b - 1) * 2; + if (b == 1) + r7 = 10; + + sub_809D104(a, 4, 10, gUnknown_08E96EC8, c, r7, 8 - c, 2); + sub_809D104(a, 12 - c, 10, gUnknown_08E96EC8, 0, r2, c, 2); + } +} + +// Draws dots under the bag sprite, showing which pocket is selected +static void DrawPocketIndicatorDots(u16 *tileMapBuffer, u8 selectedPocket) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + { + if (i == selectedPocket) + tileMapBuffer[0x125 + i] = 0x107D; + else + tileMapBuffer[0x125 + i] = 0x107C; + } +} + +static void ChangePocket(u16 *tileMapBuffer, s8 delta) +{ + u8 taskId; + + sCurrentBagPocket += delta; + // Wrap around + if (sCurrentBagPocket >= NUM_BAG_POCKETS) + sCurrentBagPocket = 0; + if (sCurrentBagPocket < 0) + sCurrentBagPocket = NUM_BAG_POCKETS - 1; + + sub_80A76A0(); + sub_80A7590(); + gCurrentBagPocketItemSlots = gBagPockets[sCurrentBagPocket].itemSlots; + sub_80A3D24(sCurrentBagPocket); + gUnknown_0203855A = 0; + sub_80A3954(tileMapBuffer); + sub_80A396C(tileMapBuffer, 0, 16, 3); + sub_80A39B8(tileMapBuffer, 0); + gUnknown_0203855B = 6; + gUnknown_02038562 = 0; + taskId = FindTaskIdByFunc(sub_80A37F8); + if (taskId == 0xFF) + taskId = CreateTask(sub_80A37F8, 8); + gTasks[taskId].data[5] = delta; +} + +static void SwapItemSlots(struct ItemSlot *a, struct ItemSlot *b) +{ + struct ItemSlot temp = *a; + + *a = *b; + *b = temp; +} + +static void RemoveEmptyItemSlots(struct BagPocket pocket) +{ + u16 i; + u16 j; + + for (i = 0; i < pocket.capacity - 1; i++) + { + for (j = i + 1; j < pocket.capacity; j++) + { + if (pocket.itemSlots[i].quantity == 0) + SwapItemSlots(&pocket.itemSlots[i], &pocket.itemSlots[j]); + } + } +} + +static void SortItemSlots(struct BagPocket pocket) +{ + u16 i; + u16 j; + + for (i = 0; i < pocket.capacity; i++) + { + for (j = i + 1; j < pocket.capacity; j++) + { + if (pocket.itemSlots[i].quantity != 0 && pocket.itemSlots[j].quantity != 0 + && pocket.itemSlots[i].itemId > pocket.itemSlots[j].itemId) + SwapItemSlots(&pocket.itemSlots[i], &pocket.itemSlots[j]); + } + } +} + +static void UpdateBagPocket(u8 pocketNum) +{ + u16 i; + + gBagPocketScrollStates[pocketNum].numSlots = 0; + for (i = 0; i < gBagPockets[pocketNum].capacity; i++) + { + if (gBagPockets[pocketNum].itemSlots[i].quantity != 0) + gBagPocketScrollStates[pocketNum].numSlots++; + } + RemoveEmptyItemSlots(gBagPockets[pocketNum]); +} + +static void UpdateAllBagPockets(void) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + UpdateBagPocket(i); +} + +static void sub_80A3D24(u8 pocketNum) +{ + if (gBagPocketScrollStates[pocketNum].numSlots >= 7) + gBagPocketScrollStates[pocketNum].cursorMax = 7; + else + gBagPocketScrollStates[pocketNum].cursorMax = gBagPocketScrollStates[pocketNum].numSlots; +} + +static void sub_80A3D40(void) +{ + u8 i; + + for (i = 0; i < NUM_BAG_POCKETS; i++) + sub_80A3D24(i); +} + +static void sub_80A3D5C(u8 taskId) +{ + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + gCurrentBagPocketItemSlots[index].quantity -= gTasks[taskId].data[1]; + if (gCurrentBagPocketItemSlots[index].quantity == 0) // item slot will be removed if the quantity is zero + { + // Un-register the item if registered + if (gSaveBlock1.registeredItem == gCurrentBagPocketItemSlots[index].itemId) + { + RemoveSelectIconFromRegisteredItem(); + gSaveBlock1.registeredItem = ITEM_NONE; + } + + gCurrentBagPocketItemSlots[index].itemId = ITEM_NONE; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 7 == gBagPocketScrollStates[sCurrentBagPocket].numSlots + && gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + gBagPocketScrollStates[sCurrentBagPocket].scrollTop--; + UpdateBagPocket(sCurrentBagPocket); + } + sub_80A3D24(sCurrentBagPocket); +} + +void sub_80A3E0C(void) +{ + u32 index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + + if (gCurrentBagPocketItemSlots[index].quantity == 0) + { + gCurrentBagPocketItemSlots[index].itemId = 0; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 7 == gBagPocketScrollStates[sCurrentBagPocket].numSlots + && gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + gBagPocketScrollStates[sCurrentBagPocket].scrollTop--; + UpdateBagPocket(sCurrentBagPocket); + } + sub_80A3D24(sCurrentBagPocket); +} + +static void nullsub_16(void) +{ +} + +static void sub_80A3E70(u8 a, u8 b) +{ + struct ItemSlot temp = gCurrentBagPocketItemSlots[a]; + + gCurrentBagPocketItemSlots[a] = gCurrentBagPocketItemSlots[b]; + gCurrentBagPocketItemSlots[b] = temp; +} + +static void sub_80A3E90(u8 taskId) +{ + PlaySE(SE_SELECT); + nullsub_16(); + sub_80A3E70( + gTasks[taskId].data[10] - 1, + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + gBagPocketScrollStates[sCurrentBagPocket].scrollTop); + gTasks[taskId].data[10] = 0; + sub_80A763C(); + sub_80A7528(0); + ItemListMenu_InitMenu(); +} + +static void sub_80A3EF4(u8 taskId) +{ + u8 r2; + + PlaySE(SE_SELECT); + nullsub_16(); + r2 = gTasks[taskId].data[10] - gBagPocketScrollStates[sCurrentBagPocket].scrollTop - 1; + gTasks[taskId].data[10] = 0; + if (r2 < 8) + sub_80A48E8(taskId, r2, r2); + sub_80A7528(0); +} + +static void sub_80A3F50(u8 taskId) +{ + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A7528(1); +} + +void sub_80A3FA0(u16 *a, u8 b, u8 c, u8 d, u8 e, u16 f) +{ + s16 i; + s16 j; + + for (i = c; i < c + e; i++) + { + for (j = b; j < b + d; j++) + { + u32 index = j + i * 32; + + a[index] = f; + } + } +} + +static void sub_80A4008(u16 *a, u8 b, u8 c, u8 d, u8 e) +{ + sub_80A3FA0(a, b, c, d, e, 1); +} + +static void DrawSelectIcon(u32 itemPos) +{ + u16 *ptr1 = gBGTilemapBuffers[2] + 0x5A; + + ptr1 += itemPos * 64; + ptr1[0] = 0x5A; + ptr1[1] = 0x5B; + ptr1[2] = 0x5C; + ptr1[32] = 0x6A; + ptr1[33] = 0x6B; + ptr1[34] = 0x6C; +} + +static void MoveSelectIcon(u8 itemPos) +{ + u16 i; + u16 *ptr; + + ptr = gBGTilemapBuffers[2] + 0x5A; + for (i = 0; i < 16; i++) + { + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[2] = 0x4F; + ptr += 32; + } + + ptr = gBGTilemapBuffers[2] + 0x5A + itemPos * 64; + ptr[0] = 0x5A; + ptr[1] = 0x5B; + ptr[2] = 0x5C; + ptr[32] = 0x6A; + ptr[33] = 0x6B; + ptr[34] = 0x6C; +} + +static void EraseSelectIcon(u8 itemPos) +{ + u16 *ptr = gBGTilemapBuffers[2] + 0x5A; + + ptr += itemPos * 64; + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[2] = 0x4F; + ptr[32] = 0x4F; + ptr[33] = 0x4F; + ptr[34] = 0x4F; +} + +static void RemoveSelectIconFromRegisteredItem(void) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + break; + if (gCurrentBagPocketItemSlots[gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i].itemId == gSaveBlock1.registeredItem) + { + EraseSelectIcon(i); + break; + } + } +} + +static void AddSelectIconToRegisteredItem(void) +{ + RemoveSelectIconFromRegisteredItem(); + MoveSelectIcon(gBagPocketScrollStates[sCurrentBagPocket].cursorPos); +} + +void sub_80A4164(u8 *dest, u16 value, enum StringConvertMode mode, u8 digits) +{ + *dest++ = CHAR_MULT_SIGN; + dest[0] = EXT_CTRL_CODE_BEGIN; + dest[1] = 0x14; + dest[2] = 6; + dest += 3; + ConvertIntToDecimalStringN(dest, value, mode, digits); +} + +void sub_80A418C(u16 value, enum StringConvertMode mode, u8 c, u8 d, u8 digits) +{ + sub_80A4164(gStringVar1, value, mode, digits); + MenuPrint(gStringVar1, c, d); +} + +static void sub_80A41D4(u8 taskId) +{ + sub_80A763C(); +} + +static void sub_80A41E0(u8 *a, u16 b, const u8 *c, u16 d, u8 e) +{ + a[0] = EXT_CTRL_CODE_BEGIN; + a[1] = 0x13; + a[2] = 8; + a += 3; + a = ConvertIntToDecimalStringN(a, b, STR_CONV_MODE_LEADING_ZEROS, 2); + a[0] = EXT_CTRL_CODE_BEGIN; + a[1] = 0x13; + a[2] = 0x18; + a += 3; + a = sub_8072C74(a, c, 0x78 - (e + 1) * 6, 0); + *a++ = CHAR_MULT_SIGN; + sub_8072C14(a, d, 0x78, 1); +} + +static u8 *sub_80A425C(u8 taskId, u8 *text, u8 c) +{ + if (gTasks[taskId].data[10] - gBagPocketScrollStates[sCurrentBagPocket].scrollTop - 1 == c) + { + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 1; + text[2] = 2; + text += 3; + } + return text; +} + +static bool8 sub_80A42B0(u8 itemPos, int b) +{ + u8 r5; + u16 *ptr; + struct UnknownStruct3 *r8 = &gUnknown_02038540; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + itemPos > gBagPocketScrollStates[sCurrentBagPocket].numSlots) + return TRUE; + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + itemPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (sReturnLocation == RETURN_TO_FIELD_5) + return TRUE; + r5 = itemPos * 2 + 2; + sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0); + MenuPrint(gStringVar1, 14, r5); + ptr = gBGTilemapBuffers[2] + 14 + r5 * 32; + ptr[0] = 0x4F; + ptr[1] = 0x4F; + ptr[32] = 0x4F; + ptr[33] = 0x4F; + if (itemPos == 7) + return TRUE; + if ((b == 1 && r8->unk2 != 0) || b == 2) + MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 13); + else + MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 17); + return TRUE; + } + return FALSE; +} + +static void sub_80A4380(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + text = gStringVar1; + text = sub_80A425C(a, text, i); + text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0); + *text++ = CHAR_MULT_SIGN; + sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); + MenuPrint(gStringVar1, 14, r5); + } +} + +static void sub_80A444C(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + text = gStringVar1; + text = sub_80A425C(a, text, i); +#if ENGLISH + sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x60, 0); +#else + sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0); +#endif + MenuPrint(gStringVar1, 14, r5); + if (gUnknown_02038558 != 0) + { + if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) + DrawSelectIcon(i); + } + else + { + if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) + MoveSelectIcon(i); + else + EraseSelectIcon(i); + } + } +} + +// more gBGTilemapBuffers shenanigans +#ifdef NONMATCHING +static void sub_80A4548(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 sp10; + u32 r5; + u8 *text; + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + sp10 = i * 2 + 2; + r5 = sp10 * 32 + 14; + text = gStringVar1; + text = sub_80A425C(a, text, i); + if (gCurrentBagPocketItemSlots[r4].itemId < 0x153) + { + const u8 *r2; + + gBGTilemapBuffers[2][r5 + 0] = 0x59; + gBGTilemapBuffers[2][r5 + 1] = 0x4F; + gBGTilemapBuffers[2][r5 + 32] = 0x69; + gBGTilemapBuffers[2][r5 + 33] = 0x4F; + r2 = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; + sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 288, r2, gCurrentBagPocketItemSlots[r4].quantity, 2); + } + else + { + const u8 *moveName; + + gBGTilemapBuffers[2][r5 + 0] = 0x105D; + gBGTilemapBuffers[2][r5 + 1] = 0x105E; + gBGTilemapBuffers[2][r5 + 32] = 0x106D; + gBGTilemapBuffers[2][r5 + 33] = 0x106E; + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 0x13; + text[2] = 0x11; + text += 3; + text = ConvertIntToDecimalString(text, gCurrentBagPocketItemSlots[r4].itemId); + text[0] = EXT_CTRL_CODE_BEGIN; + text[1] = 0x13; + text[2] = 0x18; + text += 3; + moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; + sub_8072C74(text, moveName, 0x78, 0); + } + MenuPrint(gStringVar1, 14, sp10); + } +} +#else +__attribute__((naked)) +static void sub_80A4548(u16 a, int b, int c, int d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + str r2, [sp, 0x8]\n\ + str r3, [sp, 0xC]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x4]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r8, r1\n\ + ldr r0, _080A456C @ =gBGTilemapBuffers + 0x1000\n\ + mov r9, r0\n\ + b _080A46C2\n\ + .align 2, 0\n\ +_080A456C: .4byte gBGTilemapBuffers + 0x1000\n\ +_080A4570:\n\ + ldr r1, _080A461C @ =gBagPocketScrollStates\n\ + ldr r0, _080A4620 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x1]\n\ + add r4, r8\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + mov r1, r8\n\ + lsls r0, r1, 25\n\ + movs r3, 0x80\n\ + lsls r3, 18\n\ + adds r0, r3\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x10]\n\ + lsls r0, 5\n\ + adds r0, 0xE\n\ + adds r5, r0, 0\n\ + ldr r6, _080A4624 @ =gStringVar1\n\ + ldr r1, [sp, 0x4]\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + adds r1, r6, 0\n\ + mov r2, r8\n\ + bl sub_80A425C\n\ + adds r6, r0, 0\n\ + ldr r3, _080A4628 @ =gCurrentBagPocketItemSlots\n\ + mov r10, r3\n\ + ldr r0, [r3]\n\ + lsls r7, r4, 2\n\ + adds r3, r7, r0\n\ + ldrh r1, [r3]\n\ + movs r0, 0xA9\n\ + lsls r0, 1\n\ + cmp r1, r0\n\ + bhi _080A4634\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + movs r1, 0x59\n\ + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 1\n\ + add r0, r9\n\ + movs r2, 0x4F\n\ + strh r2, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + lsls r0, 1\n\ + add r0, r9\n\ + movs r1, 0x69\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x21\n\ + lsls r0, 1\n\ + add r0, r9\n\ + strh r2, [r0]\n\ + ldrh r0, [r3]\n\ + bl ItemIdToBattleMoveId\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + adds r2, r0, 0\n\ + muls r2, r1\n\ + ldr r0, _080A462C @ =gMoveNames\n\ + adds r2, r0\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldr r3, _080A4630 @ =0xfffffee0\n\ + adds r1, r3, 0\n\ + ldrh r3, [r0]\n\ + adds r1, r3\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + ldrh r3, [r0, 0x2]\n\ + movs r0, 0x2\n\ + str r0, [sp]\n\ + adds r0, r6, 0\n\ + bl sub_80A41E0\n\ + b _080A46AE\n\ + .align 2, 0\n\ +_080A461C: .4byte gBagPocketScrollStates\n\ +_080A4620: .4byte sCurrentBagPocket\n\ +_080A4624: .4byte gStringVar1\n\ +_080A4628: .4byte gCurrentBagPocketItemSlots\n\ +_080A462C: .4byte gMoveNames\n\ +_080A4630: .4byte 0xfffffee0\n\ +_080A4634:\n\ + lsls r0, r5, 1\n\ + add r0, r9\n\ + ldr r1, _080A46EC @ =0x0000105d\n\ + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0x1\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x20\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0xF\n\ + strh r1, [r0]\n\ + adds r0, r5, 0\n\ + adds r0, 0x21\n\ + lsls r0, 1\n\ + add r0, r9\n\ + adds r1, 0x1\n\ + strh r1, [r0]\n\ + movs r0, 0xFC\n\ + strb r0, [r6]\n\ + movs r4, 0x13\n\ + strb r4, [r6, 0x1]\n\ + movs r0, 0x11\n\ + strb r0, [r6, 0x2]\n\ + adds r6, 0x3\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldrh r1, [r0]\n\ + ldr r3, _080A46F0 @ =0xfffffeae\n\ + adds r1, r3\n\ + adds r0, r6, 0\n\ + bl ConvertIntToDecimalString\n\ + adds r6, r0, 0\n\ + movs r0, 0xFC\n\ + strb r0, [r6]\n\ + strb r4, [r6, 0x1]\n\ + movs r0, 0x18\n\ + strb r0, [r6, 0x2]\n\ + adds r6, 0x3\n\ + mov r1, r10\n\ + ldr r0, [r1]\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + bl ItemIdToBattleMoveId\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + muls r1, r0\n\ + ldr r0, _080A46F4 @ =gMoveNames\n\ + adds r1, r0\n\ + adds r0, r6, 0\n\ + movs r2, 0x78\n\ + movs r3, 0\n\ + bl sub_8072C74\n\ +_080A46AE:\n\ + ldr r0, _080A46F8 @ =gStringVar1\n\ + movs r1, 0xE\n\ + ldr r2, [sp, 0x10]\n\ + bl MenuPrint\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ +_080A46C2:\n\ + ldr r3, [sp, 0x8]\n\ + cmp r8, r3\n\ + bgt _080A46DA\n\ + mov r0, r8\n\ + ldr r1, [sp, 0xC]\n\ + bl sub_80A42B0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080A46DA\n\ + b _080A4570\n\ +_080A46DA:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A46EC: .4byte 0x0000105d\n\ +_080A46F0: .4byte 0xfffffeae\n\ +_080A46F4: .4byte gMoveNames\n\ +_080A46F8: .4byte gStringVar1\n\ + .syntax divided\n"); +} +#endif + +static void sub_80A46FC(u16 a, int b, int c, int d) +{ + u8 i; + + for (i = b; i <= c; i++) + { + u8 r4; + u8 r5; + u8 *text; + register int var asm("r0"); + + if (sub_80A42B0(i, d) == TRUE) + break; + r4 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + i; + r5 = i * 2 + 2; + + var = 14 + r5 * 32; + gBGTilemapBuffers[2][var] = 0x59; + var += 32; + gBGTilemapBuffers[2][var] = 0x69; + + text = gStringVar1; + text = sub_80A425C(a, text, i); + CopyItemName(gCurrentBagPocketItemSlots[r4].itemId, gStringVar2); + sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 0x84, gStringVar2, gCurrentBagPocketItemSlots[r4].quantity, 3); + MenuPrint(gStringVar1, 14, r5); + } +} + +static void sub_80A47E8(u16 a, int b, int c, int d) +{ + switch (sCurrentBagPocket) + { + case BAG_POCKET_ITEMS: + case BAG_POCKET_POKE_BALLS: + sub_80A4380(a, b, c, d); + break; + case BAG_POCKET_KEY_ITEMS: + sub_80A444C(a, b, c, d); + break; + case BAG_POCKET_TMs_HMs: + sub_80A4548(a, b, c, d); + break; + case BAG_POCKET_BERRIES: + sub_80A46FC(a, b, c, d); + break; + } + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + sub_80F979C(0, 0); + else + sub_80F979C(0, 1); + if ((sReturnLocation != RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots + 1) + || (sReturnLocation == RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots)) + sub_80F979C(1, 0); + else + sub_80F979C(1, 1); +} + +static void sub_80A48E8(u16 taskId, int b, int c) +{ + sub_80A47E8(taskId, b, c, 0); +} + +static void sub_80A48F8(u16 taskId) +{ + sub_80A47E8(taskId, 0, 5, 2); +} + +static void ItemListMenu_InitDescription(s16 itemId) +{ + u8 r5; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + r5 = sub_8072A18(gOtherText_ReturnTo, 4, 0x68, 0x68, 1); + r5 += sub_8072A18(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0x68, 1); + } + else + { + r5 = sub_8072A18(ItemId_GetDescription(itemId), 4, 0x68, 0x68, 1); + } + + if (r5 < 3) + MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20); +} + +static void ItemListMenu_ChangeDescription(s16 itemId, int b) +{ + u8 description[100]; + + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (b == 0) + { + MenuZeroFillWindowRect(0, 13, 13, 20); + MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); + } + else if (b == 1) + { + MenuPrint_PixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); + } + } + else + { + if (b == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (ItemId_CopyDescription(description, itemId, b)) + MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); + } +} + +static bool32 CopyTextLine(u8 *destination, const u8 *source, u32 c) +{ + u32 r4 = c + 1; + const u8 *src = source; + u8 *dst = destination; + + while (1) + { + if (*src == CHAR_NEWLINE || *src == EOS) + { + r4--; + if (r4 == 0) + { + *dst = EOS; + return TRUE; + } + if (*src == EOS) + return FALSE; + // got a new line - reset dst pointer + dst = destination; + src++; + } + else + { + *dst++ = *src++; + } + } +} + +static void sub_80A4A98(const u8 *text, u32 line) +{ + u8 buffer[100]; + + if (line == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (CopyTextLine(buffer, text, line)) + MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); +} + +static void sub_80A4ADC(u8 taskId) +{ + if (gTasks[taskId].data[10] == 0) + sub_80A7528(0); + PlaySE(SE_SELECT); + gUnknown_0203855C = 1; +} + +static void sub_80A4B14(s8 a, u8 b) +{ + gBagPocketScrollStates[sCurrentBagPocket].scrollTop += a; + MoveMenuCursor(0); + sub_80A73C0(); + sub_80A763C(); + sub_80A4ADC(b); +} + +static void sub_80A4B58(s8 delta, u8 b) +{ + gBagPocketScrollStates[sCurrentBagPocket].cursorPos = MoveMenuCursor(delta); + sub_80A73C0(); + sub_80A4ADC(b); +} + +static const u8 *sub_80A4B90(u16 itemId) +{ + if (TestPlayerAvatarFlags(6)) + { + if (itemId == ITEM_MACH_BIKE || itemId == ITEM_ACRO_BIKE) + return gOtherText_Walk; + } + if (ItemIsMail(itemId) == TRUE) + return gOtherText_Check; + return sItemPopupMenuActions[sPopupMenuActionList[0]].text; +} + +static void sub_80A4BF0(u16 *a) +{ + u8 i; + + if (gUnknown_02038564 == 4) + { + MenuDrawTextWindow(0, 7, 13, 12); + sub_80A4008(a, 1, 8, 12, 4); + if (sub_80F9344() == TRUE && sReturnLocation == RETURN_TO_FIELD_5) + { + sub_80A7834(1, 0); + } + else + { + for (i = 0; i < gUnknown_02038564; i++) + { + const u8 *text; + + if (i == 0) + text = sub_80A4B90(gScriptItemId); + else + text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; + MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); + } + } + if (sReturnLocation == RETURN_TO_FIELD_5) + InitMenu(0, 1, 8, gUnknown_02038564, sPopupMenuSelection, 1); + else + InitMenu(0, 1, 8, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + else + { + MenuDrawTextWindow(0, 5, 13, 12); + sub_80A4008(a, 1, 6, 12, 6); + for (i = 0; i < gUnknown_02038564; i++) + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); + InitMenu(0, 1, 6, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + sub_80A7528(2); +} + +static void sub_80A4DA4(u16 *a) +{ + sub_80A73FC(); + sub_80A36B8(a, 0, 6, 13, 6); + MenuZeroFillWindowRect(0, 5, 13, 12); + sub_80A7590(); +} + +static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) +{ + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = b + 2; + gTasks[taskId].data[3] = c + 1; + MenuDrawTextWindow(b, c, b + d, c + e); + sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1); + sub_80A418C(1, 1, b + 2, c + 1, digits); +} + +static void sub_80A4E8C(s8 delta, u8 b) +{ + PlaySE(SE_SELECT); + sub_80F979C(0, 1); + sub_80F979C(1, 1); + sub_80F979C(2, 1); + sub_80F979C(3, 1); + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + PauseVerticalScrollIndicator(2); + PauseVerticalScrollIndicator(3); + ChangePocket(gBGTilemapBuffers[2], delta); + DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); + sub_80A3770(); + sub_80A7C64(); + CreateBagPokeballSprite(b); +} + +static bool8 sub_80A4F0C(void) +{ + if (sReturnLocation == RETURN_TO_FIELD_5 || sReturnLocation == RETURN_TO_FIELD_4) + return FALSE; + if (gMain.newKeys == DPAD_RIGHT || sub_80F9284() == 2) + { + sub_80A4E8C(1, 2); + return TRUE; + } + if (gMain.newKeys == DPAD_LEFT || sub_80F9284() == 1) + { + sub_80A4E8C(-1, 1); + return TRUE; + } + return FALSE; +} + +static void sub_80A4F68(u8 taskId) +{ + sub_80A4F0C(); +} + +static bool8 sub_80A4F74(u8 a) +{ + bool8 retVal = FALSE; + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos != 0) + sub_80A4B58(-1, a); + else if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) + sub_80A4B14(-1, a); + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + retVal = TRUE; + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (sReturnLocation != RETURN_TO_FIELD_5) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].cursorMax) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + sub_80A4B14(1, a); + } + else + { + sub_80A4B58(1, a); + } + } + else + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots - 1) + { + if (gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].cursorMax) + sub_80A4B58(1, a); + else + sub_80A4B14(1, a); + } + } + retVal = TRUE; + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + } + else + { + if (gTasks[a].data[10] == 0 && sub_80A4F0C() == TRUE) + { + sub_80A73F0(); + gTasks[a].func = sub_80A4F68; + retVal = TRUE; + } + else + { + sub_80A73C0(); + } + } + return retVal; +} + +static void sub_80A50C8(u8 taskId) +{ + s16 *r5 = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + if (sub_80A4F74(taskId) == TRUE) + { + sub_808B5B4(taskId); + return; + } + + if ((gMain.newKeys & SELECT_BUTTON) + && !(sCurrentBagPocket == BAG_POCKET_BERRIES || sCurrentBagPocket == BAG_POCKET_TMs_HMs) + && (sReturnLocation == RETURN_TO_FIELD_0 || sReturnLocation == RETURN_TO_BATTLE)) + { + if (r5[10] == 0) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + PlaySE(SE_SELECT); + sub_80A3F50(taskId); + } + sub_808B5B4(taskId); + } + else + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos != gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + PlaySE(SE_SELECT); + sub_80A3E90(taskId); + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + } + return; + } + + if (gMain.newKeys & A_BUTTON) + { + if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos == gBagPocketScrollStates[sCurrentBagPocket].numSlots) + { + if (r5[10] == 0) + { + gScriptItemId = 0; + gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + } + else + { + if (r5[10] == 0) + { + PlaySE(SE_SELECT); + gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + gScriptItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; + gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); + sub_80F98A4(0); + sub_80F98A4(1); + sub_80F98A4(2); + sub_80F98A4(3); + sub_80A797C(); + } + else + { + sub_80A3E90(taskId); + } + sub_808B5B4(taskId); + } + return; + } + + if (gMain.newKeys & B_BUTTON) + { + if (r5[10] == 0) + { + if (sReturnLocation != RETURN_TO_FIELD_5) + { + gScriptItemId = 0; + gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); + } + } + else + { + sub_80A3EF4(taskId); + } + sub_808B5B4(taskId); + return; + } + } +} + +bool8 sub_80A52C4(u8 taskId, u16 b) +{ + s16 *taskData = gTasks[taskId].data; + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (taskData[1] != b) + taskData[1]++; + else + taskData[1] = 1; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (taskData[1] != 1) + taskData[1]--; + else + taskData[1] = b; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT) + { + if (taskData[1] + 10 < b) + taskData[1] += 10; + else + taskData[1] = b; + return TRUE; + } + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT) + { + if (taskData[1] > 10) + taskData[1] -= 10; + else + taskData[1] = 1; + return TRUE; + } + + return FALSE; +} + +static bool8 sub_80A5350(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (sub_80A52C4(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) + { + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A418C(taskData[1], 1, taskData[2], taskData[3], 3); + else + sub_80A418C(taskData[1], 1, taskData[2], taskData[3], 2); + return TRUE; + } + return FALSE; +} + +static void sub_80A53CC(void) +{ + if (sub_80A34B4() == TRUE) + { + sub_80A3770(); + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + } +} + +void sub_80A53F8(void) +{ + sReturnLocation = RETURN_TO_FIELD_0; + SetMainCallback2(sub_80A53CC); +} + +#ifdef NONMATCHING +static void sub_80A5414(u8 taskId) +{ + TaskFunc r5 = NULL; + + if (sub_80A78A0() != 0) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x40) + { + if ((sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection - 1] == 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-1); + } + } + //_080A546C + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x80) + { + if (!(sPopupMenuSelection & 1) && sPopupMenuActionList[sPopupMenuSelection + 1] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(1); + } + } + //_080A549C + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x20) + { + if (sPopupMenuSelection > 1 && sPopupMenuActionList[sPopupMenuSelection - 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(-2); + } + } + //_080A54CC + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == 0x10) + { + if (sPopupMenuSelection <= 1 && sPopupMenuActionList[sPopupMenuSelection + 2] != 8) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor3(2); + } + } + //_080A5500 + else if (!(gMain.newKeys & A_BUTTON)) + { + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[3]].func; + r5(taskId); + } + } + else + { + //_080A5590 + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + r5 = sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func; + r5(taskId); + } + } + //_080A5552 + if (r5 == NULL) + { + if (sReturnLocation == RETURN_TO_FIELD_5) + { + if (sPopupMenuSelection == 0) + { + sub_8072DDC(12); + return; + } + //_080A55D4 + //else + //{ + if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) + sub_8072DCC(0x2F); + else + sub_8072DCC(0x30); + //} + } + //_080A55E0 + else + { + if (sPopupMenuSelection == 0 || sPopupMenuSelection == 1) + sub_8072DCC(0x2F); + else + sub_8072DCC(0x30); + } + } +} +#else +__attribute__((naked)) +static void sub_80A5414(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r5, 0\n\ + bl sub_80A78A0\n\ + cmp r0, 0\n\ + bne _080A5426\n\ + b _080A5552\n\ +_080A5426:\n\ + ldr r2, _080A5460 @ =gMain\n\ + ldrh r0, [r2, 0x30]\n\ + movs r1, 0xF0\n\ + ands r1, r0\n\ + cmp r1, 0x40\n\ + bne _080A546C\n\ + ldr r4, _080A5464 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5440\n\ + b _080A5552\n\ +_080A5440:\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5468 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + bne _080A5452\n\ + b _080A5552\n\ +_080A5452:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A5460: .4byte gMain\n\ +_080A5464: .4byte sPopupMenuSelection\n\ +_080A5468: .4byte sPopupMenuActionList\n\ +_080A546C:\n\ + cmp r1, 0x80\n\ + bne _080A549C\n\ + ldr r4, _080A5494 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5552\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5498 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x1]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A5494: .4byte sPopupMenuSelection\n\ +_080A5498: .4byte sPopupMenuActionList\n\ +_080A549C:\n\ + cmp r1, 0x20\n\ + bne _080A54CC\n\ + ldr r4, _080A54C4 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bls _080A5552\n\ + adds r1, r0, 0\n\ + ldr r0, _080A54C8 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x2\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + b _080A54EE\n\ + .align 2, 0\n\ +_080A54C4: .4byte sPopupMenuSelection\n\ +_080A54C8: .4byte sPopupMenuActionList\n\ +_080A54CC:\n\ + cmp r1, 0x10\n\ + bne _080A5500\n\ + ldr r4, _080A54F8 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x1\n\ + bhi _080A5552\n\ + adds r1, r0, 0\n\ + ldr r0, _080A54FC @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x2]\n\ + cmp r0, 0x8\n\ + beq _080A5552\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x2\n\ +_080A54EE:\n\ + bl MoveMenuCursor3\n\ + strb r0, [r4]\n\ + b _080A5552\n\ + .align 2, 0\n\ +_080A54F8: .4byte sPopupMenuSelection\n\ +_080A54FC: .4byte sPopupMenuActionList\n\ +_080A5500:\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5590\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080A5552\n\ + ldr r1, _080A5570 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r1, _080A5574 @ =gBagPocketScrollStates\n\ + ldr r0, _080A5578 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r2, [r0]\n\ + adds r0, r4, 0\n\ + adds r1, r2, 0\n\ + bl sub_80A48E8\n\ + ldr r0, _080A557C @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A5580 @ =sItemPopupMenuActions\n\ + ldr r0, _080A5584 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x3]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ +_080A5552:\n\ + cmp r5, 0\n\ + bne _080A55FA\n\ + ldr r0, _080A5588 @ =sReturnLocation\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x5\n\ + bne _080A55E0\n\ + ldr r0, _080A558C @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080A55D4\n\ + movs r0, 0xC\n\ + bl sub_8072DDC\n\ + b _080A55FA\n\ + .align 2, 0\n\ +_080A5570: .4byte gTasks\n\ +_080A5574: .4byte gBagPocketScrollStates\n\ +_080A5578: .4byte sCurrentBagPocket\n\ +_080A557C: .4byte gBGTilemapBuffers + 0x800\n\ +_080A5580: .4byte sItemPopupMenuActions\n\ +_080A5584: .4byte sPopupMenuActionList\n\ +_080A5588: .4byte sReturnLocation\n\ +_080A558C: .4byte sPopupMenuSelection\n\ +_080A5590:\n\ + ldr r1, _080A55C0 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r0, _080A55C4 @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A55C8 @ =sItemPopupMenuActions\n\ + ldr r0, _080A55CC @ =sPopupMenuSelection\n\ + ldrb r2, [r0]\n\ + ldr r0, _080A55D0 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ + b _080A5552\n\ + .align 2, 0\n\ +_080A55C0: .4byte gTasks\n\ +_080A55C4: .4byte gBGTilemapBuffers + 0x800\n\ +_080A55C8: .4byte sItemPopupMenuActions\n\ +_080A55CC: .4byte sPopupMenuSelection\n\ +_080A55D0: .4byte sPopupMenuActionList\n\ +_080A55D4:\n\ + cmp r0, 0x1\n\ + bls _080A55E8\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ + b _080A55FA\n\ +_080A55E0:\n\ + ldr r0, _080A55F0 @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bhi _080A55F4\n\ +_080A55E8:\n\ + movs r0, 0x2F\n\ + bl sub_8072DCC\n\ + b _080A55FA\n\ + .align 2, 0\n\ +_080A55F0: .4byte sPopupMenuSelection\n\ +_080A55F4:\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ +_080A55FA:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +__attribute__((naked)) +static void sub_80A5600(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + movs r5, 0\n\ + ldr r2, _080A563C @ =gMain\n\ + ldrh r0, [r2, 0x30]\n\ + movs r1, 0xF0\n\ + ands r1, r0\n\ + cmp r1, 0x40\n\ + bne _080A5648\n\ + ldr r4, _080A5640 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080A561E\n\ + b _080A5736\n\ +_080A561E:\n\ + adds r1, r0, 0\n\ + ldr r0, _080A5644 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x1\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + bne _080A5630\n\ + b _080A5736\n\ +_080A5630:\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A563C: .4byte gMain\n\ +_080A5640: .4byte sPopupMenuSelection\n\ +_080A5644: .4byte sPopupMenuActionList\n\ +_080A5648:\n\ + cmp r1, 0x80\n\ + bne _080A5680\n\ + ldr r4, _080A5674 @ =sPopupMenuSelection\n\ + ldrb r1, [r4]\n\ + ldr r0, _080A5678 @ =gUnknown_02038564\n\ + ldrb r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + beq _080A5736\n\ + cmp r1, 0x2\n\ + beq _080A5736\n\ + ldr r0, _080A567C @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r1, r0\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A5674: .4byte sPopupMenuSelection\n\ +_080A5678: .4byte gUnknown_02038564\n\ +_080A567C: .4byte sPopupMenuActionList\n\ +_080A5680:\n\ + cmp r1, 0x20\n\ + bne _080A56B0\n\ + ldr r4, _080A56A8 @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bls _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56AC @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + subs r1, 0x3\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ + negs r0, r0\n\ + b _080A56D2\n\ + .align 2, 0\n\ +_080A56A8: .4byte sPopupMenuSelection\n\ +_080A56AC: .4byte sPopupMenuActionList\n\ +_080A56B0:\n\ + cmp r1, 0x10\n\ + bne _080A56E4\n\ + ldr r4, _080A56DC @ =sPopupMenuSelection\n\ + ldrb r0, [r4]\n\ + cmp r0, 0x2\n\ + bhi _080A5736\n\ + adds r1, r0, 0\n\ + ldr r0, _080A56E0 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x3]\n\ + cmp r0, 0x8\n\ + beq _080A5736\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x3\n\ +_080A56D2:\n\ + bl MoveMenuCursor3\n\ + strb r0, [r4]\n\ + b _080A5736\n\ + .align 2, 0\n\ +_080A56DC: .4byte sPopupMenuSelection\n\ +_080A56E0: .4byte sPopupMenuActionList\n\ +_080A56E4:\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080A5768\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080A5736\n\ + ldr r1, _080A574C @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r1, _080A5750 @ =gBagPocketScrollStates\n\ + ldr r0, _080A5754 @ =sCurrentBagPocket\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r2, [r0]\n\ + adds r0, r4, 0\n\ + adds r1, r2, 0\n\ + bl sub_80A48E8\n\ + ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A575C @ =sItemPopupMenuActions\n\ + ldr r0, _080A5760 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + ldrb r0, [r0, 0x5]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ +_080A5736:\n\ + cmp r5, 0\n\ + bne _080A57BE\n\ + ldr r0, _080A5764 @ =sPopupMenuSelection\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080A57AC\n\ + movs r0, 0xC\n\ + bl sub_8072DDC\n\ + b _080A57BE\n\ + .align 2, 0\n\ +_080A574C: .4byte gTasks\n\ +_080A5750: .4byte gBagPocketScrollStates\n\ +_080A5754: .4byte sCurrentBagPocket\n\ +_080A5758: .4byte gBGTilemapBuffers + 0x800\n\ +_080A575C: .4byte sItemPopupMenuActions\n\ +_080A5760: .4byte sPopupMenuActionList\n\ +_080A5764: .4byte sPopupMenuSelection\n\ +_080A5768:\n\ + ldr r1, _080A5798 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0x1C]\n\ + ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\ + bl sub_80A4DA4\n\ + ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\ + ldr r0, _080A57A4 @ =sPopupMenuSelection\n\ + ldrb r2, [r0]\n\ + ldr r0, _080A57A8 @ =sPopupMenuActionList\n\ + ldr r0, [r0]\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 3\n\ + adds r1, 0x4\n\ + adds r0, r1\n\ + ldr r5, [r0]\n\ + adds r0, r4, 0\n\ + bl _call_via_r5\n\ + b _080A5736\n\ + .align 2, 0\n\ +_080A5798: .4byte gTasks\n\ +_080A579C: .4byte gBGTilemapBuffers + 0x800\n\ +_080A57A0: .4byte sItemPopupMenuActions\n\ +_080A57A4: .4byte sPopupMenuSelection\n\ +_080A57A8: .4byte sPopupMenuActionList\n\ +_080A57AC:\n\ + cmp r0, 0x2\n\ + bhi _080A57B8\n\ + movs r0, 0x2F\n\ + bl sub_8072DCC\n\ + b _080A57BE\n\ +_080A57B8:\n\ + movs r0, 0x30\n\ + bl sub_8072DCC\n\ +_080A57BE:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} + +static void sub_80A57C4(void) +{ + u8 r5; + + sPopupMenuActionList = gUnknown_083C16AE[sCurrentBagPocket]; + if (sCurrentBagPocket == BAG_POCKET_KEY_ITEMS) + { + gUnknown_02038564 = 1; + r5 = 9; + } + else if (sub_80F92F4(gScriptItemId) == 0) + { + sPopupMenuActionList = gUnknown_083C16AE[4]; + gUnknown_02038564 = 1; + r5 = 9; + } + else + { + gUnknown_02038564 = 2; + r5 = 7; + } + sub_80A4008(gBGTilemapBuffers[1], 7, r5 + 1, 6, gUnknown_02038564 * 2); + MenuDrawTextWindow(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); + sub_80A7834(0, r5); + InitMenu(0, 7, r5 + 1, gUnknown_02038564, 0, 6); +} + +static void sub_80A5888(u8 taskId) +{ + if (sub_80A78A0() != 0) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sPopupMenuSelection != 0) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sPopupMenuSelection != gUnknown_02038564 - 1) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[2].func(taskId); + } + } +} + +static void OnBagClose_Field0(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_805469C >> 16; + gTasks[taskId].data[9] = (u32)sub_805469C; + gLastFieldPokeMenuOpened = 0; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Field05(u8 taskId) +{ + sPopupMenuSelection = 0; + if (sReturnLocation == RETURN_TO_FIELD_5) + sPopupMenuSelection = 1; + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + if (sub_80F9344() == TRUE && sReturnLocation != RETURN_TO_FIELD_5) + { + sub_80A57C4(); + gTasks[taskId].func = sub_80A5888; + } + else + { + sub_80A4BF0(gBGTilemapBuffers[1]); + if (sCurrentBagPocket != BAG_POCKET_BERRIES || sReturnLocation == RETURN_TO_FIELD_5) + gTasks[taskId].func = sub_80A5414; + else + gTasks[taskId].func = sub_80A5600; + } +} + +static void sub_80A5AAC(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = HandleItemMenuPaletteFade; +} + +static void sub_80A5AE4(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A5AAC(taskId); +} + +void HandleItemMenuPaletteFade(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + MainCallback cb = (MainCallback)((u16)taskData[8] << 16 | (u16)taskData[9]); + + SetMainCallback2(cb); + gpu_pal_allocator_reset__manage_upper_four(); + DestroyTask(taskId); + } +} + +void sub_80A5B40(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + ResetTasks(); + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void HandlePopupMenuAction_UseOnField(u8 taskId) +{ + if (ItemId_GetFieldFunc(gScriptItemId) != NULL) + { + PlaySE(SE_SELECT); + if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gScriptItemId) == 1) + { + sub_80A5BF8(taskId); + } + else + { + gTasks[taskId].data[2] = 0; + if (sCurrentBagPocket != BAG_POCKET_BERRIES) + ItemId_GetFieldFunc(gScriptItemId)(taskId); + else + sub_80C9C7C(taskId); + } + } +} + +static void sub_80A5BF8(u8 taskId) +{ + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_NoPokemon, CleanUpItemMenuMessage, 1); +} + +static void sub_80A5C24(u8 taskId) +{ + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +void CleanUpItemMenuMessage(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(7, 7, 13, 12); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A5C24; +} + +void CleanUpOverworldMessage(u8 taskId) +{ + MenuZeroFillWindowRect(0, 13, 29, 19); + DestroyTask(taskId); + sub_8064E2C(); + ScriptContext2_Disable(); +} + +void ExecuteItemUseFromBlackPalette(void) +{ + pal_fill_black(); + CreateTask(Task_CallItemUseOnFieldCallback, 8); +} + +static void Task_CallItemUseOnFieldCallback(u8 taskId) +{ + if (sub_807D770() == TRUE) + gUnknown_03005D00(taskId); +} + +void sub_80A5D04(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +static void sub_80A5D38(u8 taskId) +{ + gTasks[taskId].data[1] = 0; + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A5D78(void) +{ + sub_80A4008(gBGTilemapBuffers[1], 8, 8, 5, 4); + DisplayYesNoMenu(7, 7, 1); +} + +static void sub_80A5DA0(u16 itemId, u16 quantity) +{ + CopyItemName(itemId, gStringVar1); + if (quantity >= 100) + ConvertIntToDecimalStringN(gStringVar2, quantity, STR_CONV_MODE_LEFT_ALIGN, 3); + else + ConvertIntToDecimalStringN(gStringVar2, quantity, STR_CONV_MODE_LEFT_ALIGN, 2); + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A7528(5); + sub_80A5D78(); +} + +static void sub_80A5DF8(void) +{ + sub_80A4DA4(gBGTilemapBuffers[1]); + MenuZeroFillWindowRect(7, 6, 11, 13); + sub_80A7528(4); +} + +static void sub_80A5E1C(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + gTasks[taskId].data[10] = 0; + sub_80A41D4(taskId); + sub_80A5D38(taskId); + } +} + +static void sub_80A5E60(u8 taskId) +{ + sub_80A5DF8(); + sub_80A3D5C(taskId); + gTasks[taskId].func = sub_80A5E1C; +} + +static void sub_80A5E90(u8 taskId) +{ + sub_80A5D38(taskId); +} + +static void sub_80A5EA0(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + return; + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A5DA0(gScriptItemId, gTasks[taskId].data[1]); + DoYesNoFuncWithChoice(taskId, &gUnknown_083C16F4); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void HandlePopupMenuAction_Toss(u8 taskId) +{ + PlaySE(SE_SELECT); + gTasks[taskId].func = sub_80A5EA0; + sub_80A7528(3); + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A4DD8(taskId, 6, 9, 7, 3, 3); + else + sub_80A4DD8(taskId, 7, 9, 6, 3, 2); +} + +static void sub_80A5F80(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void HandlePopupMenuAction_Register(u8 taskId) +{ + PlaySE(SE_SELECT); + if (gSaveBlock1.registeredItem == gScriptItemId) + { + // Un-register the registered item + RemoveSelectIconFromRegisteredItem(); + gSaveBlock1.registeredItem = 0; + } + else + { + AddSelectIconToRegisteredItem(); + gSaveBlock1.registeredItem = gScriptItemId; + } + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6000(u8 taskId) +{ + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6024(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A6000; + } +} + +static void DisplayCannotBeHeldMessage(u8 taskId) +{ + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeld); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); +} + +static void HandlePopupMenuAction_Give(u8 taskId) +{ + PlaySE(SE_SELECT); + if (sub_80F931C(gScriptItemId) == 0) + { + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); + } + else if (ItemId_GetImportance(gScriptItemId) == 0) + { + if (CalculatePlayerPartyCount() == 0) + { + sub_80A5BF8(taskId); + } + else + { + gTasks[taskId].data[8] = (u32)sub_808B020 >> 16; + gTasks[taskId].data[9] = (u32)sub_808B020; + gTasks[taskId].func = HandleItemMenuPaletteFade; + gUnknown_02038561 = 1; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + } + else + { + DisplayCannotBeHeldMessage(taskId); + } +} + +static void HandlePopupMenuAction_CheckTag(u8 taskId) +{ + sub_80A5AE4(taskId); + gTasks[taskId].data[8] = (u32)BerryTagScreen_814625C >> 16; + gTasks[taskId].data[9] = (u32)BerryTagScreen_814625C; +} + +static void sub_80A61A8(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A61D0(void) +{ + sReturnLocation = RETURN_TO_PKMN_LIST; + SetMainCallback2(sub_80A61A8); +} + +static void OnBagClose_PkmnList(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; + gTasks[taskId].data[9] = (u32)sub_808A3F8; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_PkmnList(u8 taskId) +{ + u8 r6 = sCurrentBagPocket + 1; + + if (sub_80F931C(gScriptItemId) == 0) + { + sub_80A73FC(); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); + } + else if (sub_80F92F4(gScriptItemId) == 0) + { + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeldHere); + sub_80A7590(); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); + } + else if (r6 != 5 && ItemId_GetImportance(gScriptItemId) == 0) + { + gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; + gTasks[taskId].data[9] = (u32)sub_808A3F8; + sub_80A5AAC(taskId); + } + else + { + DisplayCannotBeHeldMessage(taskId); + } +} + +static void sub_80A62D8(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A6300(void) +{ + sReturnLocation = RETURN_TO_SHOP; + SetMainCallback2(sub_80A62D8); +} + +static void OnBagClose_Shop(u8 taskId) +{ + gFieldCallback = sub_80B3050; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Shop(u8 taskId) +{ + sub_80A7590(); + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + CopyItemName(gScriptItemId, gStringVar2); + if (ItemId_GetPrice(gScriptItemId) == 0) + { + StringExpandPlaceholders(gStringVar4, gOtherText_CantBuyThat); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6444, 1); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_HowManyToSell); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A648C, 1); + } +} + +static void sub_80A640C(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A6444(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A640C; +} + +static void sub_80A648C(u8 taskId) +{ + gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; + sub_80A4008(gBGTilemapBuffers[1], 1, 11, 12, 2); + MenuDrawTextWindow(0, 10, 13, 13); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[3] = 11; + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A418C(1, 1, 1, 11, 3); + else + sub_80A418C(1, 1, 1, 11, 2); + BuyMenuDisplayMessage(gScriptItemId, 1); + sub_80A683C(); +} + +static void sub_80A6520(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + BuyMenuPrintItemQuantityAndPrice(taskId); + } +} + +static void sub_80A6548(u8 taskId) +{ + sub_80A48F8(taskId); + gTasks[taskId].func = sub_80A6520; +} + +static void sub_80A6574(u8 taskId) +{ + PlaySE(SE_REGI); + sub_80A6870(gScriptItemId, gTasks[taskId].data[1]); + gTasks[taskId].func = sub_80A6548; +} + +static void sub_80A65AC(u8 taskId) +{ + MenuZeroFillWindowRect(7, 6, 13, 12); + sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); + CopyItemName(gScriptItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6574, 1); + sub_80A3D5C(taskId); +} + +static void sub_80A6618(u8 taskId) +{ + MenuZeroFillWindowRect(7, 6, 13, 12); + sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); + BuyMenuPrintItemQuantityAndPrice(taskId); +} + +static void sub_80A6650(u8 taskId) +{ + sub_80A5D78(); + DoYesNoFuncWithChoice(taskId, &gUnknown_083C16FC); +} + +static void Task_BuyHowManyDialogueHandleInput(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + { + MenuZeroFillWindowRect(6, 11, 12, 11); + BuyMenuDisplayMessage(gScriptItemId, gTasks[taskId].data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(0, 10, 13, 13); + sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gScriptItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); + DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6650, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + BuyMenuPrintItemQuantityAndPrice(taskId); + } +} + +static void sub_80A6760(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) +{ + sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); + RemoveMoneyLabelObject(0, 0); + MenuZeroFillWindowRect(0, 4, 13, 13); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_80A6760; +} + +static void BuyMenuDisplayMessage(u16 itemId, u16 quantity) +{ + sub_80B7A94(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, STR_CONV_MODE_LEFT_ALIGN, 6); +} + +static void sub_80A683C(void) +{ + sub_80B7C14(gSaveBlock1.money, 0, 0); + sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2); +} + +static void sub_80A6870(u16 itemId, u8 quantity) +{ + sub_80B79B8(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity); + sub_80B7BEC(gSaveBlock1.money, 0, 0); +} + +static void sub_80A68A4(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A68CC(void) +{ + sCurrentBagPocket = BAG_POCKET_BERRIES; + sReturnLocation = RETURN_TO_FIELD_4; + SetMainCallback2(sub_80A68A4); +} + +static void OnBagClose_Field4(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16; + gTasks[taskId].data[9] = (u32)sub_80546B8; + sub_80A5AE4(taskId); +} + +static void OnItemSelect_Field4(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_80546B8 >> 16; + gTasks[taskId].data[9] = (u32)sub_80546B8; + sub_80A5AAC(taskId); +} + +static void sub_80A6940(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + sub_80A699C(); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_80A6978(void) +{ + sCurrentBagPocket = BAG_POCKET_BERRIES; + sReturnLocation = RETURN_TO_FIELD_5; + SetMainCallback2(sub_80A6940); +} + +static void sub_80A699C(void) +{ + sPopupMenuActionList = gUnknown_083C16B8; + gUnknown_02038564 = 4; +} + +static void OnBagClose_Field5(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_804E990 >> 16; + gTasks[taskId].data[9] = (u32)sub_804E990; + sub_80A5AE4(taskId); +} + +static void HandlePopupMenuAction_Confirm(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_804E990 >> 16; + gTasks[taskId].data[9] = (u32)sub_804E990; + sub_80A5AAC(taskId); +} + +static void sub_80A6A08(void) +{ + if (sub_80A34B4() == TRUE) + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); +} + +void sub_80A6A30(void) +{ + sReturnLocation = RETURN_TO_PC; + SetMainCallback2(sub_80A6A08); +} + +static void OnBagClose_PC(u8 taskId) +{ + gFieldCallback = ItemStorage_ReturnToMenuAfterDeposit; + gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; + gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; + sub_80A5AE4(taskId); +} + +static void sub_80A6A84(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + sub_80A4DA4(gBGTilemapBuffers[1]); + CopyItemName(gScriptItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); + MenuZeroFillWindowRect(7, 6, 11, 13); + sub_80A7528(7); + sub_80A3D5C(taskId); + gTasks[taskId].func = sub_80A5E1C; +} + +static void sub_80A6B00(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void sub_80A6B64(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (ItemId_GetImportance(gScriptItemId) == 2) + { + gTasks[taskId].func = sub_80A6B00; + sub_80A7528(9); + } + else + { + if (AddPCItem(gScriptItemId, taskData[1]) == TRUE) + { + sub_80A6A84(taskId); + } + else + { + gTasks[taskId].func = sub_80A6B00; + sub_80A7528(8); + } + } +} + +static void sub_80A6BE0(u8 taskId) +{ + if (sub_80A5350(taskId) == TRUE) + return; + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80A4DA4(gBGTilemapBuffers[1]); + sub_80A6B64(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + PlaySE(SE_SELECT); + sub_80A5D38(taskId); + } +} + +static void OnItemSelect_PC(u8 taskId) +{ + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + PlaySE(SE_SELECT); + sub_80A7590(); + if (sCurrentBagPocket != BAG_POCKET_KEY_ITEMS) + { + gTasks[taskId].func = sub_80A6BE0; + sub_80A7528(6); + // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way + if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) + sub_80A4DD8(taskId, 6, 9, 7, 3, 3); + else + sub_80A4DD8(taskId, 7, 9, 6, 3, 2); + } + else + { + gTasks[taskId].data[1] = 1; + sub_80A6B64(taskId); + } +} + +bool32 sub_80A6D1C(void) +{ + HideMapNamePopup(); + if (gSaveBlock1.registeredItem != 0) + { + if (CheckBagHasItem(gSaveBlock1.registeredItem, 1) == TRUE) + { + u8 taskId; + + ScriptContext2_Enable(); + FreezeMapObjects(); + sub_80594C0(); + sub_80597F4(); + gScriptItemId = gSaveBlock1.registeredItem; + taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1.registeredItem), 8); + gTasks[taskId].data[2] = 1; + return TRUE; + } + gSaveBlock1.registeredItem = 0; + } + ScriptContext1_SetupScript(Event_NoRegisteredItem); + return TRUE; +} + +static void sub_80A6D98(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A50C8, 0); + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void sub_80A6DCC(void) +{ + sPopupMenuSelection = 0; + sReturnLocation = RETURN_TO_BATTLE; + SetMainCallback2(sub_80A6D98); +} + +static void sub_80A6DF0(u16 *a) +{ + u8 r6 = (gUnknown_02038564 - 1) * 2; + + MenuDrawTextWindow(7, 9 - r6, 13, 12); + sub_80A4008(a, 8, 10 - r6, 5, r6 + 2); + if (gUnknown_02038564 == 1) + { + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); + } + else + { + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); + MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); + } + InitMenu(0, 8, 10 - r6, gUnknown_02038564, 0, 5); + sub_80A7528(2); +} + +static void sub_80A6EB8(u8 taskId) +{ + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (sPopupMenuSelection == 1) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(-1); + } + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (sPopupMenuSelection + 1 < gUnknown_02038564) + { + PlaySE(SE_SELECT); + sPopupMenuSelection = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[sPopupMenuActionList[sPopupMenuSelection]].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = 0; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A4DA4(gBGTilemapBuffers[1]); + sItemPopupMenuActions[5].func(taskId); + } +} + +static const u8 gUnknown_083C1708[] = {4, 5}; +static const u8 gUnknown_083C170A[] = {5, 0}; + +static void sub_80A6FDC(void) +{ + if (ItemId_GetBattleUsage(gScriptItemId) != 0) + { + sPopupMenuActionList = gUnknown_083C1708; + gUnknown_02038564 = 2; + } + else + { + sPopupMenuActionList = gUnknown_083C170A; + gUnknown_02038564 = 1; + } +} + +static void OnItemSelect_Battle(u8 taskId) +{ + sPopupMenuSelection = 0; + sub_80A6FDC(); + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + sub_80A6DF0(gBGTilemapBuffers[1]); + gTasks[taskId].func = sub_80A6EB8; +} + +void sub_80A7094(u8 taskId) +{ + gTasks[taskId].data[8] = (u32)sub_802E424 >> 16; + gTasks[taskId].data[9] = (u32)sub_802E424; + gTasks[taskId].func = HandleItemMenuPaletteFade; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); +} + +static void OnBagClose_Battle(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7094(taskId); +} + +static void HandlePopupMenuAction_UseInBattle(u8 taskId) +{ + if (ItemId_GetBattleFunc(gScriptItemId) != NULL) + { + PlaySE(SE_SELECT); + ItemId_GetBattleFunc(gScriptItemId)(taskId); + } +} + +static void sub_80A7124(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_80A7528(0); + sub_80A41D4(taskId); + ItemListMenu_InitMenu(); + sub_80A37C0(taskId); +} + +static void sub_80A7150(void) +{ + while (1) + { + if (SetupBagMultistep() == TRUE) + { + gUnknown_02038563 = CreateTask(sub_80A7230, 0); + gTasks[gUnknown_02038563].data[15] = 0; + break; + } + if (sub_80F9344() == TRUE) + break; + } +} + +void PrepareBagForWallyTutorial(void) +{ + u8 i; + + sPopupMenuSelection = 0; + sCurrentBagPocket = BAG_POCKET_ITEMS; + for (i = 0; i < 5; i++) + { + gBagPocketScrollStates[i].cursorPos = 0; + gBagPocketScrollStates[i].scrollTop = 0; + } + + // Save player's items + memcpy(ewramSavedItemsPocket, gSaveBlock1.bagPocket_Items, sizeof(gSaveBlock1.bagPocket_Items)); + memcpy(ewramSavedPokeballsPocket, gSaveBlock1.bagPocket_PokeBalls, sizeof(gSaveBlock1.bagPocket_PokeBalls)); + + // Add Wally's items to the bag + ClearItemSlots(gSaveBlock1.bagPocket_Items, ARRAY_COUNT(gSaveBlock1.bagPocket_Items)); + ClearItemSlots(gSaveBlock1.bagPocket_PokeBalls, ARRAY_COUNT(gSaveBlock1.bagPocket_PokeBalls)); + AddBagItem(ITEM_POTION, 1); + AddBagItem(ITEM_POKE_BALL, 1); + + sReturnLocation = RETURN_TO_WALLY_BATTLE; + SetMainCallback2(sub_80A7150); +} + +static void sub_80A7230(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + switch (taskData[15]) + { + case 102: + PlaySE(SE_SELECT); + sub_80A4E8C(1, 2); + break; + case 204: + PlaySE(SE_SELECT); + sub_80F98A4(2); + sub_80F98A4(3); + gScriptItemId = ITEM_POKE_BALL; + sPopupMenuActionList = gUnknown_083C1708; + gUnknown_02038564 = 2; + gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; + sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); + sub_80A73FC(); + sub_80A6DF0(gBGTilemapBuffers[1]); + break; + case 306: + PlaySE(SE_SELECT); + sub_80A4DA4(gBGTilemapBuffers[1]); + + // Restore player's items + memcpy(gSaveBlock1.bagPocket_Items, ewramSavedItemsPocket, sizeof(gSaveBlock1.bagPocket_Items)); + memcpy(gSaveBlock1.bagPocket_PokeBalls, ewramSavedPokeballsPocket, sizeof(gSaveBlock1.bagPocket_PokeBalls)); + + taskData[8] = (u32)sub_802E424 >> 16; + taskData[9] = (u32)sub_802E424; + gTasks[taskId].func = HandleItemMenuPaletteFade; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + return; + } + taskData[15]++; +} + +static void ItemListMenu_InitMenu(void) +{ + InitMenu(0, 14, 2, gBagPocketScrollStates[sCurrentBagPocket].cursorMax + 1, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, 0); + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 15); + sub_80A73C0(); +} + +static void sub_80A73C0(void) +{ + sub_814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); +} + +static void sub_80A73F0(void) +{ + sub_814ADC8(); +} + +static void sub_80A73FC(void) +{ + HandleDestroyMenuCursors(); + sub_814AD44(); +} + +static void sub_80A740C(void) +{ + sub_80A75E4(); + sub_80A7768(); + sub_80A7420(); +} + +static void sub_80A7420(void) +{ + struct UnknownStruct2 *unkStruct = &gUnknown_0203853C; + int index; + + switch (unkStruct->unk0) + { + case 3: + unkStruct->unk0 = 2; + break; + case 2: + switch (unkStruct->unk2) + { + case 0: + index = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; + ItemListMenu_ChangeDescription(gCurrentBagPocketItemSlots[index].itemId, unkStruct->textLine); + break; + case 1: + sub_80A4A98(gOtherText_SwitchWhichItem, unkStruct->textLine); + break; + case 2: + sub_80A4A98(gOtherText_WhatWillYouDo2, unkStruct->textLine); + break; + case 3: + sub_80A4A98(gOtherText_HowManyToToss, unkStruct->textLine); + break; + case 4: + sub_80A4A98(gOtherText_ThrewAwayItem, unkStruct->textLine); + break; + case 5: + sub_80A4A98(gOtherText_OkayToThrowAwayPrompt, unkStruct->textLine); + break; + case 6: + sub_80A4A98(gOtherText_HowManyToDeposit, unkStruct->textLine); + break; + case 7: + sub_80A4A98(gOtherText_DepositedItems, unkStruct->textLine); + break; + case 8: + sub_80A4A98(gOtherText_NoRoomForItems, unkStruct->textLine); + break; + case 9: + sub_80A4A98(gOtherText_CantStoreSomeoneItem, unkStruct->textLine); + break; + } + unkStruct->textLine++; + if (unkStruct->textLine == 3) + { + unkStruct->unk0 = 0; + sub_80A7918(); + } + break; + } +} + +static void sub_80A751C(void) +{ + gUnknown_0203853C.unk0 = 0; +} + +static void sub_80A7528(u8 a) +{ + gUnknown_0203853C.textLine = 0; + gUnknown_0203853C.unk2 = a; + switch (sub_80A78F4()) + { + case 0: + gUnknown_0203853C.unk0 = 2; + while (gUnknown_0203853C.unk0 != 0) + sub_80A7420(); + break; + case 1: + gUnknown_0203853C.unk0 = 3; + break; + case 2: + gUnknown_0203853C.unk0 = 1; + break; + } +} + +static void sub_80A756C(void) +{ + if (gUnknown_0203853C.unk0 == 2 || gUnknown_0203853C.unk0 == 3) + sub_80A7918(); + gUnknown_0203853C.unk0 = 0; +} + +static void sub_80A7590(void) +{ + MenuZeroFillWindowRect(0, 13, 13, 20); + sub_80A756C(); +} + +static void sub_80A75A8(void) +{ + if (gUnknown_0203853C.unk0 == 2 || gUnknown_0203853C.unk0 == 3) + gUnknown_0203853C.unk0 = 1; +} + +static void sub_80A75C4(void) +{ + switch (gUnknown_0203853C.unk0) + { + case 1: + gUnknown_0203853C.unk0 = 3; + break; + case 0: + sub_80A7918(); + break; + } +} + +static void sub_80A75E4(void) +{ + if (gUnknown_02038540.unk0 == 1 && sub_80A7988() == 0) + { + int r1; + + sub_80A47E8(gUnknown_02038563, gUnknown_02038540.unk1, gUnknown_02038540.unk1, 1); + gUnknown_02038540.unk1++; + if (gUnknown_02038540.unk2 != 0) + r1 = 5; + else + r1 = 7; + if (r1 < gUnknown_02038540.unk1) + { + gUnknown_02038540.unk0 = 0; + sub_80A78E8(); + } + } +} + +static void sub_80A7630(void) +{ + gUnknown_02038540.unk0 = 0; +} + +static void sub_80A763C(void) +{ + struct UnknownStruct3 *r4 = &gUnknown_02038540; + + switch (sub_80A78C4()) + { + case FALSE: + sub_80A48E8(gUnknown_02038563, 0, 7); + break; + case TRUE: + r4->unk0 = 1; + r4->unk1 = 0; + r4->unk2 = 0; + break; + } +} + +static void sub_80A7678(void) +{ + if (gUnknown_02038540.unk0 == 1) + sub_80A78E8(); + gUnknown_02038540.unk0 = 0; +} + +static void sub_80A7694(void) +{ + gUnknown_02038540.unk2 = 1; +} + +static void sub_80A76A0(void) +{ + MenuZeroFillWindowRect(14, 2, 29, 18); + sub_80A7678(); +} + +static bool32 sub_80A76B8(void) +{ + struct UnknownStruct3 *s = &gUnknown_02038540; + + return (s->unk0 == 0); +} + +static bool32 sub_80A76D0(void) +{ + struct UnknownStruct3 *s = &gUnknown_02038540; + + return (s->unk1 > 5); +} + +static void sub_80A76E8(void) +{ + if (gUnknown_02038544.unk0 == 1) + { + DisplayItemMessageOnField( + gUnknown_02038544.unk1, + gUnknown_02038544.unk4, + gUnknown_02038544.unk8, + gUnknown_02038544.unk2); + gUnknown_02038544.unk0 = 0; + } +} + +static void sub_80A770C(void) +{ + gUnknown_02038544.unk0 = 0; +} + +static void DisplayCannotUseItemMessage(int a, const u8 *b, TaskFunc func, int d) +{ + struct UnknownStruct4 *r4 = &gUnknown_02038544; + + switch (sub_80A7924()) + { + case 0: + DisplayItemMessageOnField(a, b, func, d); + break; + case 2: + r4->unk0 = 1; + r4->unk1 = a; + r4->unk4 = b; + r4->unk8 = func; + r4->unk2 = d; + break; + } +} + +static void sub_80A7768(void) +{ + struct UnknownStruct5 *r4 = &gUnknown_02038550; + + if (r4->unk0 == 2) + { + if (r4->unk1 != 0) + { + if (r4->unk2 != 1) + { + const u8 *text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; + int var = r4->unk1 - 1; + + MenuPrint(text, 7, var * 2 + 1 + r4->unk3); + } + else + { + const u8 *text; + int var; + + if (r4->unk1 == 1) + text = sub_80A4B90(gScriptItemId); + else + text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; + var = r4->unk1 - 1; + MenuPrint(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); + } + if (r4->unk1 == gUnknown_02038564) + { + r4->unk0 = 0; + sub_80A7970(); + } + } + r4->unk1++; + } +} + +static void sub_80A7828(void) +{ + gUnknown_02038550.unk0 = 0; +} + +static void sub_80A7834(int a, int b) +{ + struct UnknownStruct5 *r4 = &gUnknown_02038550; + + switch (sub_80A7958()) + { + case 1: + r4->unk0 = 2; + r4->unk1 = 0; + r4->unk2 = a; + r4->unk3 = b; + break; + case 2: + r4->unk0 = 1; + r4->unk1 = 0; + r4->unk2 = a; + r4->unk3 = b; + break; + } +} + +static void sub_80A7868(void) +{ + if (gUnknown_02038550.unk0 == 2) + gUnknown_02038550.unk0 = 1; +} + +static void sub_80A7880(void) +{ + switch (gUnknown_02038550.unk0) + { + case 1: + gUnknown_02038550.unk0 = 2; + break; + case 0: + sub_80A7970(); + break; + } +} + +static bool32 sub_80A78A0(void) +{ + struct UnknownStruct5 *r0 = &gUnknown_02038550; + + return (r0->unk0 == 0); +} + +static void sub_80A78B8(void) +{ + gUnknown_02038554.unk0 = 0; +} + +static bool32 sub_80A78C4(void) +{ + bool32 retVal; + + if (gLinkOpen == TRUE) + { + sub_80A7868(); + sub_80A75A8(); + retVal = TRUE; + } + else + { + retVal = FALSE; + } + return retVal; +} + +static void sub_80A78E8(void) +{ + sub_80A7880(); +} + +static int sub_80A78F4(void) +{ + int retVal; + + if (gLinkOpen == TRUE) + { + if (sub_80A76B8() != 0) + retVal = 1; + else + retVal = 2; + } + else + { + retVal = 0; + } + return retVal; +} + +static void sub_80A7918(void) +{ + sub_80A76E8(); +} + +static int sub_80A7924(void) +{ + if (gLinkOpen == TRUE && sub_80A76B8() == 0) + { + if (sub_80A76D0() != 0) + { + sub_80A7678(); + return 0; + } + } + else + { + return 0; + } + sub_80A7694(); + return 2; +} + +static int sub_80A7958(void) +{ + if (sub_80A76B8() == 0) + return 2; + sub_80A75A8(); + return 1; +} + +static void sub_80A7970(void) +{ + sub_80A75C4(); +} + +static void sub_80A797C(void) +{ + gUnknown_02038554.unk0 = 1; +} + +static int sub_80A7988(void) +{ + int val = gUnknown_02038554.unk0; + + gUnknown_02038554.unk0 = 0; + return val; +} + +static const u16 gPalette_83C170C[] = INCBIN_U16("graphics/unknown/83C170C.gbapal"); +static const u8 gSpriteImage_83C172C[] = INCBIN_U8("graphics/unknown_sprites/83C172C.4bpp"); + +const u8 gSpriteImage_UnusedCherry[] = INCBIN_U8("graphics/unused/cherry.4bpp"); +const u16 gSpritePalette_UnusedCherry[] = INCBIN_U16("graphics/unused/cherry.gbapal"); + +//------------------------------------------------------------------------------ +// Bag Sprite +//------------------------------------------------------------------------------ + +static const struct OamData sBagSpriteOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 7, + .affineParam = 0, +}; + +static const union AnimCmd sBagSpriteAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq1[] = +{ + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq5[] = +{ + ANIMCMD_FRAME(128, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq2[] = +{ + ANIMCMD_FRAME(192, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq3[] = +{ + ANIMCMD_FRAME(256, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sBagSpriteAnimSeq4[] = +{ + ANIMCMD_FRAME(320, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBagSpriteAnimTable[] = +{ + sBagSpriteAnimSeq0, + sBagSpriteAnimSeq1, + sBagSpriteAnimSeq2, + sBagSpriteAnimSeq3, + sBagSpriteAnimSeq4, + sBagSpriteAnimSeq5, +}; + +static const union AffineAnimCmd sBagSpriteAffineAnimSeq[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -2, 2), + AFFINEANIMCMD_FRAME(0, 0, 2, 4), + AFFINEANIMCMD_FRAME(0, 0, -2, 4), + AFFINEANIMCMD_FRAME(0, 0, 2, 2), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sBagSpriteAffineAnimTable[] = +{ + sBagSpriteAffineAnimSeq, +}; + +static const struct CompressedSpriteSheet sMaleBagSpriteSheet = {gBagMaleTiles, 0x3000, 30000}; +static const struct CompressedSpriteSheet sFemaleBagSpriteSheet = {gBagFemaleTiles, 0x3000, 30000}; +static const struct CompressedSpritePalette sBagSpritePalette = {gBagPalette, 30000}; + +static void sub_80A7998(struct Sprite *sprite) +{ + sprite->animNum = 0; + sprite->data0 = 0; + sprite->data1 = 0; + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->callback = sub_80A79B4; +} + +static void sub_80A79B4(struct Sprite *sprite) +{ + if (gUnknown_0203855B != -1) + sub_80A79EC(sprite); + if (gUnknown_0203855C != 0) + sub_80A7A94(sprite); +} + +static void sub_80A79EC(struct Sprite *sprite) +{ + switch (sprite->data3) + { + case 0: + if (gUnknown_0203855B != 6) + { + sprite->animBeginning = TRUE; + sprite->animNum = gUnknown_0203855B; + gUnknown_0203855B = -1; + } + else + { + sprite->animBeginning = TRUE; + sprite->animNum = 0; + sprite->pos1.y -= 4; + sprite->data0 = 4; + sprite->data3 = 1; + sub_80A7AE4(sprite); + } + break; + case 1: + if (sprite->data0 != 0) + { + if (sprite->data1 != 0) + { + sprite->pos1.y++; + sprite->data0--; + } + sprite->data1 = (sprite->data1 + 1) & 1; + } + else + { + gUnknown_0203855B = -1; + sprite->data1 = 0; + sprite->data3 = 0; + } + break; + } +} + +static void sub_80A7A94(struct Sprite *sprite) +{ + switch (sprite->data4) + { + case 0: + sprite->oam.affineMode = 1; + sprite->affineAnims = sBagSpriteAffineAnimTable; + InitSpriteAffineAnim(sprite); + sprite->data4 = 1; + break; + case 1: + sprite->data2++; + if (sprite->data2 == 12) + sub_80A7AE4(sprite); + break; + } +} + +static void sub_80A7AE4(struct Sprite *sprite) +{ + gUnknown_0203855C = 0; + sprite->oam.affineMode = 0; + sprite->data2 = 0; + sprite->data4 = 0; + FreeOamMatrix(sprite->oam.matrixNum); +} + +static const struct SpriteTemplate sBagSpriteTemplate = +{ + .tileTag = 30000, + .paletteTag = 30000, + .oam = &sBagSpriteOamData, + .anims = sBagSpriteAnimTable, + .images = NULL, + .affineAnims = sBagSpriteAffineAnimTable, + .callback = sub_80A7998, +}; + +static void CreateBagSprite(void) +{ + CreateSprite(&sBagSpriteTemplate, 58, 40, 0); +} + +//------------------------------------------------------------------------------ +// Pokeball Sprite +//------------------------------------------------------------------------------ + +static const struct OamData gOamData_83C1CF8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 4, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 8, + .affineParam = 0, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D00[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 8, 32), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D10[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -8, 32), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1D20[] = +{ + gSpriteAffineAnim_83C1D00, + gSpriteAffineAnim_83C1D10, +}; + +static const struct SpriteFrameImage gSpriteImageTable_83C1D28[] = +{ + {gSpriteImage_83C172C, sizeof(gSpriteImage_83C172C)}, +}; + +static const struct SpritePalette sPokeballSpritePalette = {gPalette_83C170C, 8}; + +static void sub_80A7B28(struct Sprite *sprite) +{ + sprite->data3 = 0; + sprite->data0 = 0; + sub_80A7B6C(sprite); + sprite->callback = sub_80A7B6C; +} + +static void sub_80A7B48(struct Sprite *sprite) +{ + sprite->centerToCornerVecX = sprite->data5 - ((sprite->data0 + 1) & 1); + sprite->centerToCornerVecY = sprite->data6 - ((sprite->data0 + 1) & 1); +} + +static void sub_80A7B6C(struct Sprite *sprite) +{ + if (sprite->data7 != 0) + { + switch (sprite->data3) + { + case 0: + sprite->oam.affineMode = 1; + if (sprite->data7 == 1) + sprite->affineAnims = gSpriteAffineAnimTable_83C1D20; + else + sprite->affineAnims = gSpriteAffineAnimTable_83C1D20 + 1; + InitSpriteAffineAnim(sprite); + sprite->data3 = 1; + sprite->data5 = sprite->centerToCornerVecX; + sprite->data6 = sprite->centerToCornerVecY; + sub_80A7B48(sprite); + break; + case 1: + sprite->data0++; + sub_80A7B48(sprite); + if (sprite->data0 == 32) + { + sprite->data0 = 0; + sprite->data3 = 0; + sprite->centerToCornerVecX = sprite->data5; + sprite->centerToCornerVecY = sprite->data6; + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + sprite->callback = SpriteCallbackDummy; + } + break; + } + } +} + +static const struct SpriteTemplate sPokeballSpriteTemplate = +{ + .tileTag = 0xFFFF, + .paletteTag = 8, + .oam = &gOamData_83C1CF8, + .anims = sBagSpriteAnimTable, + .images = gSpriteImageTable_83C1D28, + .affineAnims = gSpriteAffineAnimTable_83C1D20, + .callback = sub_80A7B28, +}; + +static void CreateBagPokeballSprite(u8 a) +{ + LoadSpritePalette(&sPokeballSpritePalette); + sPokeballSpriteId = CreateSprite(&sPokeballSpriteTemplate, 16, 88, 0); + gSprites[sPokeballSpriteId].data7 = a; +} + +static void sub_80A7C64(void) +{ + FreeSpritePaletteByTag(8); + FreeOamMatrix(gSprites[sPokeballSpriteId].oam.matrixNum); + DestroySprite(&gSprites[sPokeballSpriteId]); +} + +static const struct OamData sBerrySpriteOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 7, + .affineParam = 0, +}; + +static const struct OamData gOamData_83C1D58 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 7, + .affineParam = 0, +}; + +static const union AnimCmd sBerrySpriteAnimSeq[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBerrySpriteAnimTable[] = +{ + sBerrySpriteAnimSeq, +}; + +static const struct SpriteFrameImage sBerrySpriteImageTable[] = +{ + {ewramBerryPic, 0x800}, +}; + +static void SpriteCB_BerrySprite(struct Sprite *); +static const struct SpriteTemplate sBerrySpriteTemplate = +{ + .tileTag = 0xFFFF, + .paletteTag = 30020, + .oam = &sBerrySpriteOamData, + .anims = sBerrySpriteAnimTable, + .images = sBerrySpriteImageTable, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BerrySprite, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1D8C[] = +{ + AFFINEANIMCMD_FRAME(-1, -1, -3, 96), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_FRAME(-2, -2, -1, 64), + AFFINEANIMCMD_FRAME(-8, 0, 0, 16), + AFFINEANIMCMD_FRAME(0, -8, 0, 16), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83C1DC4[] = +{ + AFFINEANIMCMD_FRAME(-1, -1, 3, 96), + AFFINEANIMCMD_FRAME(0, 0, 0, 16), + AFFINEANIMCMD_FRAME(-2, -2, 1, 64), + AFFINEANIMCMD_FRAME(-8, 0, 0, 16), + AFFINEANIMCMD_FRAME(0, -8, 0, 16), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1DFC[] = +{ + gSpriteAffineAnim_83C1D8C, + gSpriteAffineAnim_83C1DC4, +}; + +static const struct SpriteTemplate gSpriteTemplate_83C1E04 = +{ + .tileTag = 0xFFFF, + .paletteTag = 30020, + .oam = &gOamData_83C1D58, + .anims = sBerrySpriteAnimTable, + .images = sBerrySpriteImageTable, + .affineAnims = gSpriteAffineAnimTable_83C1DFC, + .callback = SpriteCallbackDummy, +}; + +static const struct {const u8 *lzPic; const u8 *lzPalette;} sBerryGraphicsTable[] = +{ + {gBerryPic_Cheri, gBerryPalette_Cheri}, + {gBerryPic_Chesto, gBerryPalette_Chesto}, + {gBerryPic_Pecha, gBerryPalette_Pecha}, + {gBerryPic_Rawst, gBerryPalette_Rawst}, + {gBerryPic_Aspear, gBerryPalette_Aspear}, + {gBerryPic_Leppa, gBerryPalette_Leppa}, + {gBerryPic_Oran, gBerryPalette_Oran}, + {gBerryPic_Persim, gBerryPalette_Persim}, + {gBerryPic_Lum, gBerryPalette_Lum}, + {gBerryPic_Sitrus, gBerryPalette_Sitrus}, + {gBerryPic_Figy, gBerryPalette_Figy}, + {gBerryPic_Wiki, gBerryPalette_Wiki}, + {gBerryPic_Mago, gBerryPalette_Mago}, + {gBerryPic_Aguav, gBerryPalette_Aguav}, + {gBerryPic_Iapapa, gBerryPalette_Iapapa}, + {gBerryPic_Razz, gBerryPalette_Razz}, + {gBerryPic_Bluk, gBerryPalette_Bluk}, + {gBerryPic_Nanab, gBerryPalette_Nanab}, + {gBerryPic_Wepear, gBerryPalette_Wepear}, + {gBerryPic_Pinap, gBerryPalette_Pinap}, + {gBerryPic_Pomeg, gBerryPalette_Pomeg}, + {gBerryPic_Kelpsy, gBerryPalette_Kelpsy}, + {gBerryPic_Qualot, gBerryPalette_Qualot}, + {gBerryPic_Hondew, gBerryPalette_Hondew}, + {gBerryPic_Grepa, gBerryPalette_Grepa}, + {gBerryPic_Tamato, gBerryPalette_Tamato}, + {gBerryPic_Cornn, gBerryPalette_Cornn}, + {gBerryPic_Magost, gBerryPalette_Magost}, + {gBerryPic_Rabuta, gBerryPalette_Rabuta}, + {gBerryPic_Nomel, gBerryPalette_Nomel}, + {gBerryPic_Spelon, gBerryPalette_Spelon}, + {gBerryPic_Pamtre, gBerryPalette_Pamtre}, + {gBerryPic_Watmel, gBerryPalette_Watmel}, + {gBerryPic_Durin, gBerryPalette_Durin}, + {gBerryPic_Belue, gBerryPalette_Belue}, + {gBerryPic_Liechi, gBerryPalette_Liechi}, + {gBerryPic_Ganlon, gBerryPalette_Ganlon}, + {gBerryPic_Salac, gBerryPalette_Salac}, + {gBerryPic_Petaya, gBerryPalette_Petaya}, + {gBerryPic_Apicot, gBerryPalette_Apicot}, + {gBerryPic_Lansat, gBerryPalette_Lansat}, + {gBerryPic_Starf, gBerryPalette_Starf}, + {gBerryPic_Enigma, gBerryPalette_Enigma}, +}; + +static void DrawBerryPic(const u8 *src, u8 *dst) +{ + u8 i; + u8 j; + + memset(dst, 0, 0x800); + dst += 0x100; + for (i = 0; i < 6; i++) + { + dst += 32; + for (j = 0; j < 6; j++) + { + memcpy(dst, src, 32); + dst += 32; + src += 32; + } + if (i != 5) + dst += 32; + } +} + +static void LoadBerryPic(u8 berryId) +{ + struct SpritePalette spritePal; + + if (berryId == 0x2A && IsEnigmaBerryValid() == TRUE) + { + DrawBerryPic(gSaveBlock1.enigmaBerry.pic, ewramBerryPic); + spritePal.data = gSaveBlock1.enigmaBerry.palette; + spritePal.tag = 0x7544; + LoadSpritePalette(&spritePal); + } + else + { + spritePal.data = (u16 *)sBerryGraphicsTable[berryId].lzPalette; + spritePal.tag = 0x7544; + LoadCompressedObjectPalette((struct CompressedSpritePalette *)&spritePal); + sub_800D238(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); + DrawBerryPic(ewramBerryPicTemp, ewramBerryPic); + } +} + +u8 CreateBerrySprite(u8 berryId, s16 x, s16 y) +{ + LoadBerryPic(berryId); + return CreateSprite(&sBerrySpriteTemplate, x, y, 0); +} + +static void SpriteCB_BerrySprite(struct Sprite *sprite) +{ + sprite->pos2.y = -gUnknown_030041B4; +} + +void sub_80A7DD4(void) +{ + FreeSpritePaletteByTag(0x7544); + FreeSpritePaletteByTag(8); +} + +u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate) +{ + u8 spriteId; + + FreeSpritePaletteByTag(0x7544); + LoadBerryPic(berryId); + spriteId = CreateSprite(&gSpriteTemplate_83C1E04, x, y, 0); + if (animate == TRUE) + StartSpriteAffineAnim(&gSprites[spriteId], 1); + return spriteId; +} + +const struct CompressedSpriteSheet gUnknown_083C1F74 = {gBerryCheckCircle_Gfx, 2048, 0x2710}; + +const struct CompressedSpritePalette gUnknown_083C1F7C = {gBerryCheck_Pal, 0x2710}; + +static const struct OamData gOamData_83C1F84 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_83C1F8C[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_83C1F94[] = +{ + gSpriteAnim_83C1F8C, +}; + +static const struct SpriteTemplate gSpriteTemplate_83C1F98 = +{ + .tileTag = 10000, + .paletteTag = 10000, + .oam = &gOamData_83C1F84, + .anims = gSpriteAnimTable_83C1F94, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_BerrySprite, +}; + +u8 sub_80A7E5C(s16 x) +{ + return CreateSprite(&gSpriteTemplate_83C1F98, x, 99, 0); +} diff --git a/src/item_use.c b/src/item_use.c index b906f91ad..1750c1584 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -55,7 +55,7 @@ extern u16 gBattleTypeFlags; static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -static const struct TextStruct gUnknown_083D61DC[2] = +static const u8 *const gUnknown_083D61DC[2] = { gSSTidalBetaString, gSSTidalBetaString2, @@ -768,11 +768,11 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) if(gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); } } diff --git a/src/menu_cursor.c b/src/menu_cursor.c index 2dc36cf32..c007296dc 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -555,7 +555,7 @@ _0814AA24:\n\ cmp r1, 0x7\n\ bgt _0814A99E\n\ _0814AA3E:\n\ - ldr r5, _0814AAAC @ =0x0843d6d8\n\ + ldr r5, _0814AAAC @ =gUnknown_0842F798\n\ ldr r0, [r5]\n\ ldr r1, [r5, 0x4]\n\ str r0, [r4]\n\ @@ -611,7 +611,7 @@ _0814AA9C:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0814AAAC: .4byte 0x0843d6d8\n\ +_0814AAAC: .4byte gUnknown_0842F798\n\ _0814AAB0: .4byte gUnknown_0203A3D0\n\ _0814AAB4: .4byte gSprites\n\ _0814AAB8: .4byte gSubspriteTables_842F5C0\n\ diff --git a/src/new_game.c b/src/new_game.c index 33aacd10a..4b6ea1dd2 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -114,7 +114,7 @@ void sub_8052E4C(void) sub_808C0A0(); ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - sub_80A3684(); + ResetBagScrollPositions(); } void NewGameInitData(void) diff --git a/src/option_menu.c b/src/option_menu.c index 2463b11c6..7f8d76528 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -32,8 +32,9 @@ enum { MENUITEM_CANCEL, }; -extern u8 gUnknown_0839F63C[]; -extern u8 gUnknown_0839F5FC[]; //palette +const u16 gUnknown_0839F5FC[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal"); +// note: this is only used in the Japanese release +const u8 gUnknown_0839F63C[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp"); static void Task_OptionMenuFadeIn(u8 taskId); static void Task_OptionMenuProcessInput(u8 taskId); diff --git a/src/player_pc.c b/src/player_pc.c index 38e01b92e..adff9971a 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -30,9 +30,6 @@ extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); extern u8 sub_807D770(void); extern void sub_808B020(void); -extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); -extern void sub_80A418C(u16, enum StringConvertMode, int, int, int); -extern void sub_80A6A30(void); extern void sub_80F944C(void); extern u8 *gPcItemMenuOptionOrder; @@ -100,7 +97,7 @@ static void Mailbox_MoveToBag(u8); static void Mailbox_Give(u8); static void Mailbox_Cancel(u8); -static const struct TextStruct gPCText_OptionDescList[] = +static const u8 *const gPCText_OptionDescList[] = { PCText_TakeOutItems, PCText_StoreItems, @@ -319,7 +316,7 @@ static void InitItemStorageMenu(u8 var) MenuDrawTextWindow(0, 0, 11, 9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); - ItemStorageMenuPrint(gPCText_OptionDescList[var].text); + ItemStorageMenuPrint(gPCText_OptionDescList[var]); } static void ItemStorageMenuPrint(const u8 *textPtr) @@ -334,13 +331,13 @@ static void ItemStorageMenuProcessInput(u8 var) { PlaySE(SE_SELECT); MoveMenuCursor(-1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()].text); + ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); MoveMenuCursor(1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()].text); + ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); } else if (gMain.newKeys & A_BUTTON) { @@ -935,36 +932,36 @@ weirdCase: static void ItemStorage_PrintItemPcResponse(u16 itemId) { - u8 *string; + const u8 *string; switch(itemId) { case ITEMPC_GO_BACK_TO_PREV: - string = (u8 *)gMenuText_GoBackToPrev; + string = gMenuText_GoBackToPrev; break; case ITEMPC_HOW_MANY_TO_WITHDRAW: - string = (u8 *)gOtherText_HowManyToWithdraw; + string = gOtherText_HowManyToWithdraw; break; case ITEMPC_WITHDREW_THING: - string = (u8 *)gOtherText_WithdrewThing; + string = gOtherText_WithdrewThing; break; case ITEMPC_HOW_MANY_TO_TOSS: - string = (u8 *)gOtherText_HowManyToToss; + string = gOtherText_HowManyToToss; break; case ITEMPC_THREW_AWAY_ITEM: - string = (u8 *)gOtherText_ThrewAwayItem; + string = gOtherText_ThrewAwayItem; break; case ITEMPC_NO_MORE_ROOM: - string = (u8 *)gOtherText_NoMoreRoom; + string = gOtherText_NoMoreRoom; break; case ITEMPC_TOO_IMPORTANT: - string = (u8 *)gOtherText_TooImportant; + string = gOtherText_TooImportant; break; case ITEMPC_OKAY_TO_THROW_AWAY: - string = (u8 *)gOtherText_OkayToThrowAwayPrompt; + string = gOtherText_OkayToThrowAwayPrompt; break; case ITEMPC_SWITCH_WHICH_ITEM: - string = (u8 *)gOtherText_SwitchWhichItem; + string = gOtherText_SwitchWhichItem; break; default: string = ItemId_GetDescription(itemId); diff --git a/src/pokeblock.c b/src/pokeblock.c index b7fa5daa8..b7fa5daa8 100755..100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c diff --git a/src/scrcmd.c b/src/scrcmd.c index a394f2a55..45552f2fa 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1416,7 +1416,7 @@ bool8 ScrCmd_bufferstd(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); - StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index].text); + StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); return FALSE; } diff --git a/src/script.c b/src/script.c index 488a67de1..c27eb22fe 100644 --- a/src/script.c +++ b/src/script.c @@ -34,7 +34,7 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable ctx->stack[i] = 0; } -u8 SetupBytecodeScript(struct ScriptContext *ctx, void *ptr) +u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) { ctx->scriptPtr = ptr; ctx->mode = 1; @@ -106,7 +106,7 @@ u8 RunScript(struct ScriptContext *ctx) return 1; } -u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr) +u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { if (ctx->stackDepth + 1 >= 20) { @@ -120,7 +120,7 @@ u8 ScriptPush(struct ScriptContext *ctx, u8 *ptr) } } -u8 *ScriptPop(struct ScriptContext *ctx) +const u8 *ScriptPop(struct ScriptContext *ctx) { if (ctx->stackDepth == 0) return NULL; @@ -202,7 +202,7 @@ bool8 ScriptContext2_RunScript(void) return 1; } -void ScriptContext1_SetupScript(u8 *ptr) +void ScriptContext1_SetupScript(const u8 *ptr) { InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); SetupBytecodeScript(&sScriptContext1, ptr); @@ -221,7 +221,7 @@ void EnableBothScriptContexts() ScriptContext2_Enable(); } -void ScriptContext2_RunNewScript(u8 *ptr) +void ScriptContext2_RunNewScript(const u8 *ptr) { InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd); SetupBytecodeScript(&sScriptContext2, ptr); diff --git a/src/script_menu.c b/src/script_menu.c index e1ad3f467..f4ac55fb9 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -547,7 +547,7 @@ const struct MultichoiceListStruct gMultichoiceLists[] = {(struct MenuAction *)MultichoiceList_72, 5} }; -const struct TextStruct gUnknown_083CE048[] = +const u8 *const gUnknown_083CE048[] = { OtherText_Cool2, OtherText_Beauty3, diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 13a6f6f3e..13a6f6f3e 100755..100644 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c diff --git a/src/strings.c b/src/strings.c index be1bd94c7..219c5bec1 100644 --- a/src/strings.c +++ b/src/strings.c @@ -197,7 +197,7 @@ const u8 OtherText_TheField[] = _("the field."); const u8 OtherText_TheField2[] = _("the field."); const u8 OtherText_ThePC[] = _("the PC."); -const struct TextStruct gUnknown_0840E740[7] = +const u8 *const gUnknown_0840E740[7] = { OtherText_TheField3, OtherText_TheBattle, @@ -1120,7 +1120,7 @@ const u8 OtherText_TheField[] = _("zum Hauptmenü."); const u8 OtherText_TheField2[] = _("zum Hauptmenü."); const u8 OtherText_ThePC[] = _("zum PC."); -const struct TextStruct gUnknown_0840E740[7] = +const u8 *const gUnknown_0840E740[7] = { OtherText_TheField3, OtherText_TheBattle, diff --git a/src/task.c b/src/task.c index 3c28a66d9..7bd2b5937 100644 --- a/src/task.c +++ b/src/task.c @@ -11,6 +11,9 @@ struct Task gTasks[ACTIVE_SENTINEL]; static void InsertTask(u8 newTaskId); static u8 FindFirstActiveTask(); +// Unused string +const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました"); + void ResetTasks() { u8 taskId; diff --git a/src/title_screen.c b/src/title_screen.c index 664e07978..1ed87ff03 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -30,8 +30,12 @@ #define VERSION_BANNER_BYTES 0x2000 #define VERSION_BANNER_LEFT_X 108 #define VERSION_BANNER_RIGHT_X 172 -#define VERSION_BANNER_Y 44 +#ifdef SAPPHIRE +#define VERSION_BANNER_Y_GOAL 83 +#else #define VERSION_BANNER_Y_GOAL 84 +#endif +#define VERSION_BANNER_Y (VERSION_BANNER_Y_GOAL - 40) #define START_BANNER_X DISPLAY_WIDTH / 2 - 2 #endif @@ -331,7 +335,9 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = #define LEGENDARY_MARKING_COLOR(c) RGB(0, 0, (c)) #endif -#ifdef SAPPHIRE +#if defined(GERMAN) && defined(SAPPHIRE) +#define PLTT_BUFFER_INDEX 9 +#elif defined(SAPPHIRE) #define PLTT_BUFFER_INDEX 26 #else #define PLTT_BUFFER_INDEX 21 @@ -164,19 +164,19 @@ void nullsub_21(void); void sub_80BE188(void); void sub_80BE320(void); -#ifdef NONMATCHING u8 special_0x44(void) { u8 i; u8 j; - u8 var01; - TVShow *tvShow; - for (i=5; i<24; i++) + +#ifndef NONMATCHING + asm("":::"r5"); +#endif + + for (i = 5; i < 24; i++) { if (gSaveBlock1.tvShows[i].common.var00 == 0) - { break; - } } i = Random() % i; j = i; @@ -184,140 +184,35 @@ u8 special_0x44(void) { if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) { - var01 = gSaveBlock1.tvShows[i].common.var01; - } else - { - tvShow = &gSaveBlock1.tvShows[i]; - if (tvShow->massOutbreak.var16 != 0) { - continue; - } else { - var01 = tvShow->common.var01; - } + if (gSaveBlock1.tvShows[i].common.var01 == 1) + return i; } - if (var01 == 1) + else { - return i; + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[i].massOutbreak; + + if (massOutbreak->var16 == 0 && massOutbreak->var01 == 1) + return i; } - } while (i == 0 ? i = 23 : i --, i != j); - return 0xff; -} -#else -__attribute__((naked)) -u8 special_0x44(void) -{ - asm(".syntax unified\n" - " push {r4-r7,lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6,r7}\n" - " movs r4, 0x5\n" - " ldr r1, _080BD874 @ =gSaveBlock1\n" - " ldr r2, _080BD878 @ =0x000027ec\n" - " adds r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, 0\n" - " beq _080BD834\n" - " adds r2, r1, 0\n" - " ldr r1, _080BD87C @ =0x00002738\n" - "_080BD81A:\n" - " adds r0, r4, 0x1\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - " cmp r4, 0x17\n" - " bhi _080BD834\n" - " lsls r0, r4, 3\n" - " adds r0, r4\n" - " lsls r0, 2\n" - " adds r0, r2\n" - " adds r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, 0\n" - " bne _080BD81A\n" - "_080BD834:\n" - " bl Random\n" - " lsls r0, 16\n" - " lsrs r0, 16\n" - " adds r1, r4, 0\n" - " bl __modsi3\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - " mov r8, r4\n" - " ldr r7, _080BD874 @ =gSaveBlock1\n" - " ldr r0, _080BD87C @ =0x00002738\n" - " adds r0, r7\n" - " mov r9, r0\n" - "_080BD850:\n" - " lsls r0, r4, 3\n" - " adds r0, r4\n" - " lsls r6, r0, 2\n" - " adds r5, r6, r7\n" - " ldr r1, _080BD87C @ =0x00002738\n" - " adds r0, r5, r1\n" - " ldrb r0, [r0]\n" - " bl sub_80BFB54\n" - " lsls r0, 24\n" - " lsrs r0, 24\n" - " cmp r0, 0x4\n" - " beq _080BD884\n" - " ldr r2, _080BD880 @ =0x00002739\n" - " adds r0, r5, r2\n" - " ldrb r0, [r0]\n" - " b _080BD890\n" - " .align 2, 0\n" - "_080BD874: .4byte gSaveBlock1\n" - "_080BD878: .4byte 0x000027ec\n" - "_080BD87C: .4byte 0x00002738\n" - "_080BD880: .4byte 0x00002739\n" - "_080BD884:\n" - " mov r0, r9\n" - " adds r1, r6, r0\n" - " ldrh r0, [r1, 0x16]\n" - " cmp r0, 0\n" - " bne _080BD898\n" - " ldrb r0, [r1, 0x1]\n" - "_080BD890:\n" - " cmp r0, 0x1\n" - " bne _080BD898\n" - " adds r0, r4, 0\n" - " b _080BD8AC\n" - "_080BD898:\n" - " cmp r4, 0\n" - " bne _080BD8A0\n" - " movs r4, 0x17\n" - " b _080BD8A6\n" - "_080BD8A0:\n" - " subs r0, r4, 0x1\n" - " lsls r0, 24\n" - " lsrs r4, r0, 24\n" - "_080BD8A6:\n" - " cmp r4, r8\n" - " bne _080BD850\n" - " movs r0, 0xFF\n" - "_080BD8AC:\n" - " pop {r3,r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4-r7}\n" - " pop {r1}\n" - " bx r1\n" - ".syntax divided\n"); + + if (i == 0) + i = 23; + else + i--; + } while (i != j); + return 0xFF; } -#endif u8 sub_80BDA30(void); u8 sub_80BD8B8(void) { - u8 retval; - retval = special_0x44(); + u8 retval = special_0x44(); + if (retval == 0xff) - { return 0xff; - } if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) - { return sub_80BDA30(); - } return retval; } @@ -328,26 +223,26 @@ bool8 IsTVShowInSearchOfTrainersAiring(void); void UpdateTVScreensOnMap(int width, int height) { - u8 bigMovieOrEmergencyNewsOnTv; FlagSet(SYS_TV_WATCH); - bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV(); - switch (bigMovieOrEmergencyNewsOnTv) + switch (CheckForBigMovieOrEmergencyNewsOnTV()) { - case 1: + case 1: + SetTVMetatilesOnMap(width, height, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F + && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { SetTVMetatilesOnMap(width, height, 0x3); - break; - case 2: - break; - default: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) - { - SetTVMetatilesOnMap(width, height, 0x3); - } - else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) - { - FlagReset(SYS_TV_WATCH); - SetTVMetatilesOnMap(width, height, 0x3); - } + } + else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagReset(SYS_TV_WATCH); + SetTVMetatilesOnMap(width, height, 0x3); + } + break; } } @@ -355,14 +250,13 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId) { int x; int y; + for (y=0; y<height; y++) { for (x=0; x<width; x++) { if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) - { MapGridSetMetatileIdAt(x, y, tileId | 0xc00); - } } } } @@ -384,9 +278,7 @@ u8 sub_80BDA30(void) for (showIdx=0; showIdx<24; showIdx++) { if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1) - { return showIdx; - } } return 0xff; } @@ -396,9 +288,7 @@ u8 special_0x4a(void) TVShow *tvShow; tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) - { return sub_80BDA30(); - } return gSpecialVar_0x8004; } @@ -429,28 +319,24 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void); void GabbyAndTyBeforeInterview(void) { u8 i; + gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species; gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies; gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove; if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) - { gSaveBlock1.gabbyAndTyData.battleNum ++; - } gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; + if (gBattleResults.PlayerFaintCounter) - { gSaveBlock1.gabbyAndTyData.valA_1 = 1; - } else - { + else gSaveBlock1.gabbyAndTyData.valA_1 = 0; - } + if (gBattleResults.unk3) - { gSaveBlock1.gabbyAndTyData.valA_2 = 1; - } else - { + else gSaveBlock1.gabbyAndTyData.valA_2 = 0; - } + if (!gBattleResults.unk5_1) { for (i=0; i<11; i++) @@ -461,15 +347,15 @@ void GabbyAndTyBeforeInterview(void) break; } } - } else + } + else { gSaveBlock1.gabbyAndTyData.valA_3 = 1; } + TakeTVShowInSearchOfTrainersOffTheAir(); if (gSaveBlock1.gabbyAndTyData.lastMove == 0) - { FlagSet(1); - } } void sub_80BDC14(void) @@ -491,10 +377,9 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void) u8 GabbyAndTyGetBattleNum(void) { if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) - { return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; - } - return gSaveBlock1.gabbyAndTyData.battleNum; + else + return gSaveBlock1.gabbyAndTyData.battleNum; } bool8 IsTVShowInSearchOfTrainersAiring(void) @@ -505,9 +390,8 @@ bool8 IsTVShowInSearchOfTrainersAiring(void) bool8 GabbyAndTyGetLastQuote(void) { if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) - { return FALSE; - } + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); gSaveBlock1.gabbyAndTyData.quote |= 0xffff; return TRUE; @@ -516,26 +400,20 @@ bool8 GabbyAndTyGetLastQuote(void) u8 sub_80BDD18(void) { if (!gSaveBlock1.gabbyAndTyData.valB_0) - { return 1; - } if (gSaveBlock1.gabbyAndTyData.valB_3) - { return 2; - } if (gSaveBlock1.gabbyAndTyData.valB_2) - { return 3; - } if (gSaveBlock1.gabbyAndTyData.valB_1) - { return 4; - } return 0; } -void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { - switch (GabbyAndTyGetBattleNum()) { +void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) +{ + switch (GabbyAndTyGetBattleNum()) + { case 1: gSpecialVar_0x8004 = 0xE; gSpecialVar_0x8005 = 0xD; @@ -571,8 +449,10 @@ void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { } } -void sub_80BDE48(void) { - switch (gSpecialVar_0x8005) { +void sub_80BDE48(void) +{ + switch (gSpecialVar_0x8005) + { case TVSHOW_FAN_CLUB_LETTER: sub_80BE5FC(); break; @@ -594,217 +474,131 @@ void sub_80BDE48(void) { } } -u8 sub_80BDEAC(u8 *a0) { - u8 lang; - lang = GAME_LANGUAGE; - if (a0[0] == 0xFC && a0[1] == 0x15) { +u8 sub_80BDEAC(u8 *a0) +{ + u8 lang = GAME_LANGUAGE; + + if (a0[0] == EXT_CTRL_CODE_BEGIN && a0[1] == 0x15) lang = LANGUAGE_JAPANESE; - } return lang; } -void sub_80BDEC8(void) { - TVShow *show; +void sub_80BDEC8(void) +{ u8 i; u16 total; u16 item; + total = 0; sub_80BEB20(); sub_80BE778(); - if (gBattleResults.CaughtPoke == 0) { + + if (gBattleResults.CaughtPoke == 0) + { sub_80BE074(); - } else { + } + else + { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) { + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) + { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { - for (i=0; i<11; i++) { + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) + { + for (i = 0; i < 11; i++) total += gBattleResults.unk36[i]; - } - if (total != 0 || gBattleResults.unk5_1 != 0) { - total = FALSE; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; - show->pokemonToday.var01 = total; - if (gBattleResults.unk5_1 != 0) { + if (total != 0 || gBattleResults.unk5_1 != 0) + { + struct TVShowPokemonToday *pokemonToday; + + total = 0; + pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday; + pokemonToday->var00 = TVSHOW_POKEMON_TODAY_CAUGHT; + pokemonToday->var01 = total; + if (gBattleResults.unk5_1 != 0) + { total = 1; item = ITEM_MASTER_BALL; - } else { - for (i=0; i<11; i++) { + } + else + { + for (i = 0; i < 11; i++) total += gBattleResults.unk36[i]; - } - if (total > 0xff) { + if (total > 0xff) total = 0xff; - } item = gLastUsedItem; } - show->pokemonToday.var12 = total; - show->pokemonToday.ball = item; - StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gBattleResults.CaughtNick); - show->pokemonToday.species = gBattleResults.CaughtPoke; - sub_80BE138(show); - show->pokemonToday.language = GAME_LANGUAGE; - show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); - StripExtCtrlCodes(show->pokemonToday.nickname); + pokemonToday->var12 = total; + pokemonToday->ball = item; + StringCopy(pokemonToday->playerName, gSaveBlock2.playerName); + StringCopy(pokemonToday->nickname, gBattleResults.CaughtNick); + pokemonToday->species = gBattleResults.CaughtPoke; + sub_80BE138((TVShow *)pokemonToday); + pokemonToday->language = GAME_LANGUAGE; + pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); + StripExtCtrlCodes(pokemonToday->nickname); } } } } } -void sub_80BE028(void) { - TVShow *buffer; - buffer = &gSaveBlock1.tvShows[24]; - if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { +void sub_80BE028(void) +{ + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (worldOfMasters->var00 != TVSHOW_WORLD_OF_MASTERS) + { sub_80BF55C(gSaveBlock1.tvShows, 24); - buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); - buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; + worldOfMasters->var06 = GetGameStat(GAME_STAT_STEPS); + worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS; } - buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gBattleResults.CaughtPoke; - buffer->worldOfMasters.var08 = gBattleResults.Poke1Species; - buffer->worldOfMasters.var0a = gMapHeader.name; + worldOfMasters->var02++; + worldOfMasters->var04 = gBattleResults.CaughtPoke; + worldOfMasters->var08 = gBattleResults.Poke1Species; + worldOfMasters->var0a = gMapHeader.name; } -#ifdef NONMATCHING -void sub_80BE074(void) { +void sub_80BE074(void) +{ u8 i; u16 total; - u8 flag; - TVShow *show; - if (sub_80BF77C(0xffff) == 0) { - for (i=0, total=0; i<ARRAY_COUNT(gUnknown_03004316); i++) { + u8 zero = 0; + + if (sub_80BF77C(0xffff) == 0) + { + for (i = 0, total = 0; i < ARRAY_COUNT(gUnknown_03004316); i++) total += gUnknown_03004316[i]; - } - if (total > 0xff) { + if (total > 0xff) total = 0xff; - } - if (total > 2 && gBattleOutcome == 1) { + if (total > 2 && gBattleOutcome == 1) + { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { - flag = FALSE; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - asm_comment("Here the wrong registers are used to hold the show ID and flag."); - show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; - show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gBattleResults.Poke1Species; - show->pokemonTodayFailed.species2 = gBattleResults.unk20; - show->pokemonTodayFailed.var10 = total; - show->pokemonTodayFailed.var11 = gBattleOutcome; - show->pokemonTodayFailed.var12 = gMapHeader.name; - StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName); - sub_80BE138(show); - show->pokemonTodayFailed.language = GAME_LANGUAGE; + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) + { + struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonTodayFailed; + + zero = 0; + pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED; + pokemonTodayFailed->var01 = zero; + pokemonTodayFailed->species = gBattleResults.Poke1Species; + pokemonTodayFailed->species2 = gBattleResults.LastOpponentSpecies; + pokemonTodayFailed->var10 = total; + pokemonTodayFailed->var11 = gBattleOutcome; + pokemonTodayFailed->var12 = gMapHeader.name; + StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)pokemonTodayFailed); + pokemonTodayFailed->language = GAME_LANGUAGE; } } } } -#else -__attribute__((naked)) -void sub_80BE074(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - ldr r0, _080BE118 @ =0x0000ffff\n\ - bl sub_80BF77C\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BE112\n\ - movs r1, 0\n\ - movs r5, 0\n\ - ldr r2, _080BE11C @ =gUnknown_03004316\n\ -_080BE088:\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r0, r5, r0\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0xA\n\ - bls _080BE088\n\ - cmp r5, 0xFF\n\ - bls _080BE0A2\n\ - movs r5, 0xFF\n\ -_080BE0A2:\n\ - cmp r5, 0x2\n\ - bls _080BE112\n\ - ldr r7, _080BE120 @ =gBattleOutcome\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x1\n\ - bne _080BE112\n\ - ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r6, 0\n\ - bl sub_80BF74C\n\ - ldr r4, _080BE128 @ =gUnknown_03005D38\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - beq _080BE112\n\ - movs r0, 0x17\n\ - bl sub_80BF1B4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BE112\n\ - movs r0, 0\n\ - ldrsb r0, [r4, r0]\n\ - lsls r4, r0, 3\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - adds r4, r6\n\ - @ -- Here the compiler puts the status flag in the wrong register. --\n\ - movs r1, 0\n\ - movs r0, 0x17\n\ - strb r0, [r4]\n\ - strb r1, [r4, 0x1]\n\ - ldr r1, _080BE12C @ =gBattleResults\n\ - ldrh r0, [r1, 0x6]\n\ - strh r0, [r4, 0xC]\n\ - ldrh r0, [r1, 0x20]\n\ - strh r0, [r4, 0xE]\n\ - strb r5, [r4, 0x10]\n\ - ldrb r0, [r7]\n\ - strb r0, [r4, 0x11]\n\ - ldr r0, _080BE130 @ =gMapHeader\n\ - ldrb r0, [r0, 0x14]\n\ - strb r0, [r4, 0x12]\n\ - adds r0, r4, 0\n\ - adds r0, 0x13\n\ - ldr r1, _080BE134 @ =gSaveBlock2\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - bl sub_80BE138\n"); -#if ENGLISH - asm("movs r0, 2 @ GAME_LANGUAGE\n"); -#elif GERMAN - asm("movs r0, 5 @ GAME_LANGUAGE\n"); -#endif - asm("strb r0, [r4, 0x2]\n\ -_080BE112:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BE118: .4byte 0x0000ffff\n\ -_080BE11C: .4byte gUnknown_03004316\n\ -_080BE120: .4byte gBattleOutcome\n\ -_080BE124: .4byte gSaveBlock1 + 0x2738\n\ -_080BE128: .4byte gUnknown_03005D38\n\ -_080BE12C: .4byte gBattleResults\n\ -_080BE130: .4byte gMapHeader\n\ -_080BE134: .4byte gSaveBlock2\n\ -.syntax divided\n"); -} -#endif -void sub_80BE138(TVShow *show) { - u32 playerId; - playerId = GetPlayerTrainerId(); + +void sub_80BE138(TVShow *show) +{ + u32 playerId = GetPlayerTrainerId(); + show->common.srcTrainerId2Lo = playerId & 0xFF; show->common.srcTrainerId2Hi = playerId >> 8; show->common.srcTrainerIdLo = playerId & 0xFF; @@ -813,107 +607,119 @@ void sub_80BE138(TVShow *show) { show->common.trainerIdHi = playerId >> 8; } -void sub_80BE160(TVShow *show) { - u32 playerId; - playerId = GetPlayerTrainerId(); +void sub_80BE160(TVShow *show) +{ + u32 playerId = GetPlayerTrainerId(); + show->common.srcTrainerIdLo = playerId & 0xFF; show->common.srcTrainerIdHi = playerId >> 8; show->common.trainerIdLo = playerId & 0xFF; show->common.trainerIdHi = playerId >> 8; } -void sub_80BE188(void) { - TVShow *show; - TVShow *buffer; - buffer = &gSaveBlock1.tvShows[24]; - if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; - show->bravoTrainer.var01 = 1; - show->bravoTrainer.species = buffer->bravoTrainer.species; - StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName); - StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname); - show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; - show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; - show->bravoTrainer.var14 = buffer->bravoTrainer.var14; - show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult; - show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; - sub_80BE160(show); - show->bravoTrainer.language = GAME_LANGUAGE; - show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname); - StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); - } -} - -void sub_80BE23C(u16 a0) { - TVShow *show; - show = &gSaveBlock1.tvShows[24]; +void sub_80BE188(void) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainerSrc = &gSaveBlock1.tvShows[24].bravoTrainer; + + if (bravoTrainerSrc->var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) + { + struct TVShowBravoTrainerPokemonProfiles *bravoTrainerNew = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; + + bravoTrainerNew->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + bravoTrainerNew->var01 = 1; + bravoTrainerNew->species = bravoTrainerSrc->species; + StringCopy(bravoTrainerNew->playerName, gSaveBlock2.playerName); + StringCopy(bravoTrainerNew->pokemonNickname, bravoTrainerSrc->pokemonNickname); + bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; + bravoTrainerNew->contestRank = bravoTrainerSrc->contestRank; + bravoTrainerNew->var14 = bravoTrainerSrc->var14; + bravoTrainerNew->contestResult = bravoTrainerSrc->contestResult; + bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory; + sub_80BE160((TVShow *)bravoTrainerNew); + bravoTrainerNew->language = GAME_LANGUAGE; + bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname); + StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); + } +} + +void sub_80BE23C(u16 a0) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; + sub_80BF484(); gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) { + if (gUnknown_03005D38.var0 != -1) + { sub_80BF55C(gSaveBlock1.tvShows, 24); - show->bravoTrainer.var14 = a0; - show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + bravoTrainer->var14 = a0; + bravoTrainer->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } } -void sub_80BE284(u8 a0) { - TVShow *show; - show = &gSaveBlock1.tvShows[24]; +void sub_80BE284(u8 a0) +{ + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1) { - show->bravoTrainer.contestResult = a0; - show->bravoTrainer.contestCategory = gScriptContestCategory; - show->bravoTrainer.contestRank = gScriptContestRank; - show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); - } -} - -void sub_80BE320(void) { - TVShow *show; - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; - show->bravoTrainerTower.var01 = 1; - StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); - StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); - show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; - show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482; - show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); - show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; - if (gSaveBlock2.filler_A8.var_4D0 == 0) { - show->bravoTrainerTower.btLevel = 50; - } else { - show->bravoTrainerTower.btLevel = 100; - } - show->bravoTrainerTower.var1b = gSpecialVar_0x8004; - sub_80BE160(show); - show->bravoTrainerTower.language = GAME_LANGUAGE; -} - -void sub_80BE3BC(void) { + if (gUnknown_03005D38.var0 != -1) + { + bravoTrainer->contestResult = a0; + bravoTrainer->contestCategory = gScriptContestCategory; + bravoTrainer->contestRank = gScriptContestRank; + bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); + } +} + +void sub_80BE320(void) +{ + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; + + bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; + bravoTrainerTower->var01 = 1; + StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); + StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC); + bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480; + bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482; + bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD; + if (gSaveBlock2.filler_A8.var_4D0 == 0) + bravoTrainerTower->btLevel = 50; + else + bravoTrainerTower->btLevel = 100; + bravoTrainerTower->var1b = gSpecialVar_0x8004; + sub_80BE160((TVShow *)bravoTrainerTower); + bravoTrainerTower->language = GAME_LANGUAGE; +} + +void sub_80BE3BC(void) +{ u8 rval; - TVShow *tvShow; u8 i; rval = sub_80BF77C(0x5555); - if (rval == 0) { + if (rval == 0) + { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) + { sub_80BF20C(); - if (gUnknown_02038724[0].item_amount >= 20) { - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; - tvShow->smartshopperShow.var01 = rval; - tvShow->smartshopperShow.shopLocation = gMapHeader.name; - for (i=0; i<3; i++) { - tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id; - tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount; + if (gUnknown_02038724[0].item_amount >= 20) + { + struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow; + + smartShopper->var00 = TVSHOW_SMART_SHOPPER; + smartShopper->var01 = rval; + smartShopper->shopLocation = gMapHeader.name; + for (i=0; i<3; i++) + { + smartShopper->itemIds[i] = gUnknown_02038724[i].item_id; + smartShopper->itemAmounts[i] = gUnknown_02038724[i].item_amount; } - tvShow->smartshopperShow.priceReduced = GetPriceReduction(1); - StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName); - sub_80BE138(tvShow); - tvShow->smartshopperShow.language = GAME_LANGUAGE; + smartShopper->priceReduced = GetPriceReduction(1); + StringCopy(smartShopper->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)smartShopper); + smartShopper->language = GAME_LANGUAGE; } } } @@ -921,132 +727,90 @@ void sub_80BE3BC(void) { void sub_80BE478(void) { - u16 playerNameLength; - u16 pokemonNicknameLength; - TVShow *tvShow; - sub_80BF478(); - if (gScriptResult == 1) - { return; - } GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); - - playerNameLength = StringLength(gSaveBlock2.playerName); - if (playerNameLength <= 1) + if (StringLength(gSaveBlock2.playerName) > 1 && StringLength(gStringVar1) > 1) { - return; - } + struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].nameRaterShow; - pokemonNicknameLength = StringLength(gStringVar1); - if (pokemonNicknameLength <= 1) - { - return; + nameRaterShow->var00 = TVSHOW_NAME_RATER_SHOW; + nameRaterShow->var01 = 1; + nameRaterShow->species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); + nameRaterShow->random = Random() % 3; + nameRaterShow->random2 = Random() % 2; + nameRaterShow->var1C = sub_80BF674(nameRaterShow->species); + StringCopy(nameRaterShow->trainerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, nameRaterShow->pokemonName); + sub_80BE160((TVShow *)nameRaterShow); + nameRaterShow->language = GAME_LANGUAGE; + nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName); + StripExtCtrlCodes(nameRaterShow->pokemonName); } - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; - tvShow->nameRaterShow.var01 = 1; - - tvShow->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL); - tvShow->nameRaterShow.random = Random() % 3; - tvShow->nameRaterShow.random2 = Random() % 2; - - tvShow->nameRaterShow.var1C = sub_80BF674(tvShow->nameRaterShow.species); - - StringCopy(tvShow->nameRaterShow.trainerName, gSaveBlock2.playerName); - - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, tvShow->nameRaterShow.pokemonName); - - sub_80BE160(tvShow); - - tvShow->nameRaterShow.language = GAME_LANGUAGE; - tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); - - StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName); } void StartMassOutbreak(void) { - TVShow *tvShow; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - - gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; - gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; - gSaveBlock1.outbreakLocationMapGroup = tvShow->massOutbreak.locationMapGroup; - gSaveBlock1.outbreakPokemonLevel = tvShow->massOutbreak.level; - gSaveBlock1.outbreakUnk1 = tvShow->massOutbreak.var02; - gSaveBlock1.outbreakUnk2 = tvShow->massOutbreak.var0E; - gSaveBlock1.outbreakPokemonMoves[0] = tvShow->massOutbreak.moves[0]; - gSaveBlock1.outbreakPokemonMoves[1] = tvShow->massOutbreak.moves[1]; - gSaveBlock1.outbreakPokemonMoves[2] = tvShow->massOutbreak.moves[2]; - gSaveBlock1.outbreakPokemonMoves[3] = tvShow->massOutbreak.moves[3]; - gSaveBlock1.outbreakUnk4 = tvShow->massOutbreak.var03; - gSaveBlock1.outbreakPokemonProbability = tvShow->massOutbreak.probability; + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; + + gSaveBlock1.outbreakPokemonSpecies = massOutbreak->species; + gSaveBlock1.outbreakLocationMapNum = massOutbreak->locationMapNum; + gSaveBlock1.outbreakLocationMapGroup = massOutbreak->locationMapGroup; + gSaveBlock1.outbreakPokemonLevel = massOutbreak->level; + gSaveBlock1.outbreakUnk1 = massOutbreak->var02; + gSaveBlock1.outbreakUnk2 = massOutbreak->var0E; + gSaveBlock1.outbreakPokemonMoves[0] = massOutbreak->moves[0]; + gSaveBlock1.outbreakPokemonMoves[1] = massOutbreak->moves[1]; + gSaveBlock1.outbreakPokemonMoves[2] = massOutbreak->moves[2]; + gSaveBlock1.outbreakPokemonMoves[3] = massOutbreak->moves[3]; + gSaveBlock1.outbreakUnk4 = massOutbreak->var03; + gSaveBlock1.outbreakPokemonProbability = massOutbreak->probability; gSaveBlock1.outbreakUnk5 = 2; } void sub_80BE5FC(void) { - TVShow *tvShow; - u16 species; - - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; - tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; - tvShow->fanclubLetter.var01 = 1; - StringCopy(tvShow->fanclubLetter.playerName, gSaveBlock2.playerName); - - species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - tvShow->fanclubLetter.species = species; - sub_80BE160(tvShow); - tvShow->fanclubLetter.language = GAME_LANGUAGE; + fanclubLetter->var00 = TVSHOW_FAN_CLUB_LETTER; + fanclubLetter->var01 = 1; + StringCopy(fanclubLetter->playerName, gSaveBlock2.playerName); + fanclubLetter->species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); + sub_80BE160((TVShow *)fanclubLetter); + fanclubLetter->language = GAME_LANGUAGE; } void sub_80BE65C(void) { - TVShow *tvShow; + struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; - tvShow->recentHappenings.var01 = 1; - StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName); - tvShow->recentHappenings.var02 = 0; - - sub_80BE160(tvShow); - tvShow->recentHappenings.language = GAME_LANGUAGE; + recentHappenings->var00 = TVSHOW_RECENT_HAPPENINGS; + recentHappenings->var01 = 1; + StringCopy(recentHappenings->playerName, gSaveBlock2.playerName); + recentHappenings->var02 = 0; + sub_80BE160((TVShow *)recentHappenings); + recentHappenings->language = GAME_LANGUAGE; } void sub_80BE6A0(void) { - TVShow *tvShow; u8 monIndex; + struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - - tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; - tvShow->fanclubOpinions.var01 = 1; - + fanclubOpinions->var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; + fanclubOpinions->var01 = 1; monIndex = GetLeadMonIndex(); - - tvShow->fanclubOpinions.var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16; - tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007; - - - StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName); - - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10); - - tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); - sub_80BE160(tvShow); - tvShow->fanclubOpinions.language = GAME_LANGUAGE; - tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10); - StripExtCtrlCodes(tvShow->fanclubOpinions.var10); + fanclubOpinions->var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16; + fanclubOpinions->var04B = gSpecialVar_0x8007; + StringCopy(fanclubOpinions->playerName, gSaveBlock2.playerName); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, fanclubOpinions->var10); + fanclubOpinions->var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); + sub_80BE160((TVShow *)fanclubOpinions); + fanclubOpinions->language = GAME_LANGUAGE; + fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10); + StripExtCtrlCodes(fanclubOpinions->var10); } void nullsub_21(void) @@ -1055,66 +819,46 @@ void nullsub_21(void) void sub_80BE778(void) { - u8 i; - - if (!FlagGet(SYS_GAME_CLEAR)) + if (FlagGet(SYS_GAME_CLEAR)) { - return; - } + u8 i; - - for (i = 0; i < 24; i++) - { - if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + for (i = 0; i < 24; i++) { - return; + if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + return; } - } - - if (sub_80BF77C(0x147)) - { - return; - } - - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 == -1) - { - return; - } - { - u16 rand; - u16 val; - s32 val2; - TVShow *tvShow; - - rand = Random(); - val = rand % 5; - - val2 = gUnknown_03005D38.var0; - - tvShow = &gSaveBlock1.tvShows[val2]; - - tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; - tvShow->massOutbreak.var01 = 1; - - tvShow->massOutbreak.level = gPokeOutbreakSpeciesList[val].level; - tvShow->massOutbreak.var02 = 0; - tvShow->massOutbreak.var03 = 0; - tvShow->massOutbreak.species = gPokeOutbreakSpeciesList[val].species; - tvShow->massOutbreak.var0E = 0; - tvShow->massOutbreak.moves[0] = gPokeOutbreakSpeciesList[val].moves[0]; - tvShow->massOutbreak.moves[1] = gPokeOutbreakSpeciesList[val].moves[1]; - tvShow->massOutbreak.moves[2] = gPokeOutbreakSpeciesList[val].moves[2]; - tvShow->massOutbreak.moves[3] = gPokeOutbreakSpeciesList[val].moves[3]; - tvShow->massOutbreak.locationMapNum = gPokeOutbreakSpeciesList[val].location; - tvShow->massOutbreak.locationMapGroup = 0; - tvShow->massOutbreak.var12 = 0; - tvShow->massOutbreak.probability = 0x32; - tvShow->massOutbreak.var15 = 0; - tvShow->massOutbreak.var16 = 0x01; - sub_80BE160(tvShow); + if (sub_80BF77C(0x147)) + return; - tvShow->massOutbreak.language = GAME_LANGUAGE; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1) + { + u16 rand = Random(); + u16 val = rand % 5; + s32 val2 = gUnknown_03005D38.var0; + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[val2].massOutbreak; + + massOutbreak->var00 = TVSHOW_MASS_OUTBREAK; + massOutbreak->var01 = 1; + massOutbreak->level = gPokeOutbreakSpeciesList[val].level; + massOutbreak->var02 = 0; + massOutbreak->var03 = 0; + massOutbreak->species = gPokeOutbreakSpeciesList[val].species; + massOutbreak->var0E = 0; + massOutbreak->moves[0] = gPokeOutbreakSpeciesList[val].moves[0]; + massOutbreak->moves[1] = gPokeOutbreakSpeciesList[val].moves[1]; + massOutbreak->moves[2] = gPokeOutbreakSpeciesList[val].moves[2]; + massOutbreak->moves[3] = gPokeOutbreakSpeciesList[val].moves[3]; + massOutbreak->locationMapNum = gPokeOutbreakSpeciesList[val].location; + massOutbreak->locationMapGroup = 0; + massOutbreak->var12 = 0; + massOutbreak->probability = 0x32; + massOutbreak->var15 = 0; + massOutbreak->var16 = 0x01; + sub_80BE160((TVShow *)massOutbreak); + massOutbreak->language = GAME_LANGUAGE; + } } } @@ -1146,15 +890,20 @@ void UpdateTVShowsPerDay(u16 arg0) void sub_80BE8EC(u16 arg0) { u8 showidx; - TVShow *tvShow; - if (gSaveBlock1.outbreakPokemonSpecies == 0) { - for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows[showidx]); - if (tvShow->massOutbreak.var16 < arg0) - tvShow->massOutbreak.var16 = 0; + + if (gSaveBlock1.outbreakPokemonSpecies == 0) + { + for (showidx=0; showidx<24; showidx++) + { + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK + && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) + { + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[showidx].massOutbreak; + + if (massOutbreak->var16 < arg0) + massOutbreak->var16 = 0; else - tvShow->massOutbreak.var16 -= arg0; + massOutbreak->var16 -= arg0; break; } } @@ -1172,7 +921,9 @@ void UpdateMassOutbreakTimeLeft(u16 arg0) void sub_80BE97C(bool8 flag) { u8 var0, var1; - if (flag != 0) { + + if (flag) + { var0 = gUnknown_020387E2 >> 8; if (var0 > 4) sub_80BE9D4(); @@ -1180,7 +931,9 @@ void sub_80BE97C(bool8 flag) var1 = gUnknown_020387E2 & 0xFF; if (var1 != 0xFF) gUnknown_020387E2++; - } else { + } + else + { var0 = gUnknown_020387E2 & 0xFF; if (var0 > 4) sub_80BE9D4(); @@ -1191,29 +944,24 @@ void sub_80BE97C(bool8 flag) } } -void sub_80BE9D4() +void sub_80BE9D4(void) { - TVShow *show; + //TVShow *show; gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { - show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); -#ifdef NONMATCHING - show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; - show->pokemonAngler.var01 = 0; -#else - asm(".syntax unified\n\ - movs r1, 0\n\ - movs r0, 24\n\ - strb r0, [r4]\n\ - strb r1, [r4, 1]\n\ - .syntax divided\n"); -#endif - show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF; - show->pokemonAngler.var03 = gUnknown_020387E2 >> 8; - show->pokemonAngler.var04 = gUnknown_020387E0; - StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName); - sub_80BE138(show); - show->pokemonAngler.language = GAME_LANGUAGE; + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) + { + struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonAngler; + register u8 zero asm("r1") = 0; + + asm(""::"r"(zero)); + pokemonAngler->var00 = TVSHOW_FISHING_ADVICE; + pokemonAngler->var01 = zero; + pokemonAngler->var02 = gUnknown_020387E2 & 0xFF; + pokemonAngler->var03 = gUnknown_020387E2 >> 8; + pokemonAngler->var04 = gUnknown_020387E0; + StringCopy(pokemonAngler->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)pokemonAngler); + pokemonAngler->language = GAME_LANGUAGE; } } @@ -1226,95 +974,100 @@ void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { - TVShow *unk_2a98; - unk_2a98 = &gSaveBlock1.tvShows[24]; - if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (worldOfMasters->var00 == TVSHOW_WORLD_OF_MASTERS) { - if (unk_2a98->worldOfMasters.var02 < 20) - { + if (worldOfMasters->var02 < 20) sub_80BF55C(gSaveBlock1.tvShows, 0x18); - } else - { sub_80BEA88(); - } } } void sub_80BEA88(void) { - TVShow *unk_2a98; - TVShow *tvShow; - u8 rval; - unk_2a98 = &gSaveBlock1.tvShows[24]; - rval = sub_80BF77C(0xFFFF); - if (rval == 0) + struct TVShowWorldOfMasters *worldOfMastersSrc = &gSaveBlock1.tvShows[24].worldOfMasters; + + if (sub_80BF77C(0xFFFF) == 0) { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) { - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; - tvShow->worldOfMasters.var01 = rval; - tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; - tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06; - tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04; - tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08; - tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a; - StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); - sub_80BE138(tvShow); - tvShow->worldOfMasters.language = GAME_LANGUAGE; + struct TVShowWorldOfMasters *worldOfMastersDst = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].worldOfMasters; + + worldOfMastersDst->var00 = TVSHOW_WORLD_OF_MASTERS; + worldOfMastersDst->var01 = 0; + worldOfMastersDst->var02 = worldOfMastersSrc->var02; + worldOfMastersDst->var06 = GetGameStat(GAME_STAT_STEPS) - worldOfMastersSrc->var06; + worldOfMastersDst->var04 = worldOfMastersSrc->var04; + worldOfMastersDst->var08 = worldOfMastersSrc->var08; + worldOfMastersDst->var0a = worldOfMastersSrc->var0a; + StringCopy(worldOfMastersDst->playerName, gSaveBlock2.playerName); + sub_80BE138((TVShow *)worldOfMastersDst); + worldOfMastersDst->language = GAME_LANGUAGE; } } } -void sub_80BEB20(void) { +void sub_80BEB20(void) +{ u16 rval; - struct SaveBlock1 *save; - struct UnknownSaveStruct2ABC *unk2abc; - if (FlagGet(SYS_GAME_CLEAR) != 0) { - unk2abc = gSaveBlock1.unknown_2ABC; - gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc); - if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) { + + if (FlagGet(SYS_GAME_CLEAR) != 0) + { + gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.unknown_2ABC); + if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) + { rval = (Random() % 3) + 1; - if (sub_80BEE48(rval) != 1) { - save = &gSaveBlock1; - save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; - save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; - save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; + if (sub_80BEE48(rval) != 1) + { + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; + gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; } } } } -int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) { +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) +{ s8 i; - for (i=0; i<16; i++) { - if (arg0[i].val0 == 0) { + + for (i = 0; i < 16; i++) + { + if (arg0[i].val0 == 0) return i; - } } return -1; } -void sub_80BEBF4(void) { +void sub_80BEBF4(void) +{ u8 i; - for (i=0; i<16; i++) { + + for (i = 0; i < 16; i++) sub_80BEC10(i); - } } -void sub_80BEC10(u8 arg0) { +void sub_80BEC10(u8 arg0) +{ gSaveBlock1.unknown_2ABC[arg0].val0 = 0; gSaveBlock1.unknown_2ABC[arg0].val1 = 0; gSaveBlock1.unknown_2ABC[arg0].val2 = 0; } -void sub_80BEC40(void) { +void sub_80BEC40(void) +{ u8 i, j; - for (i = 0; i < 15; i++) { - if (gSaveBlock1.unknown_2ABC[i].val0 == 0) { - for (j = i + 1; j < 16; j++) { - if (gSaveBlock1.unknown_2ABC[j].val0 != 0) { + + for (i = 0; i < 15; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == 0) + { + for (j = i + 1; j < 16; j++) + { + if (gSaveBlock1.unknown_2ABC[j].val0 != 0) + { gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j]; sub_80BEC10(j); break; @@ -1327,12 +1080,12 @@ void sub_80BEC40(void) { u8 sub_80BECA0(void) { u8 i; - for (i=0; i<16; i++) + for (i = 0; i < 16; i++) { - if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3) - { + if (gSaveBlock1.unknown_2ABC[i].val0 != 0 + && gSaveBlock1.unknown_2ABC[i].val1 == 1 + && gSaveBlock1.unknown_2ABC[i].val2 < 3) return i; - } } return 0xFF; } @@ -1350,17 +1103,14 @@ void sub_80BECE8(void) { gSaveBlock1.unknown_2ABC[arg0].val1 = 2; if (gLocalTime.hours < 20) - { ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]); - } else - { ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]); - } } else { u16 value = gSaveBlock1.unknown_2ABC[arg0].val2; + ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); gSaveBlock1.unknown_2ABC[arg0].val1 = 0; ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); @@ -1371,22 +1121,17 @@ void sub_80BECE8(void) bool8 GetPriceReduction(u8 arg0) { u8 i; + if (arg0 == 0) - { return FALSE; - } for (i=0; i<16; i++) { if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) { if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0) - { return TRUE; - } else - { return FALSE; - } } } return FALSE; @@ -1397,24 +1142,19 @@ bool8 IsPriceDiscounted(u8 arg0) switch (arg0) { case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) - { + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY + && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY + && gScriptLastTalked == 0x1a) return TRUE; - } else - { return FALSE; - } break; case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - { + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP + && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) return TRUE; - } else - { return FALSE; - } break; default: return TRUE; @@ -1424,19 +1164,13 @@ bool8 IsPriceDiscounted(u8 arg0) bool8 sub_80BEE48(u8 arg0) { u8 i; + if (arg0 == 0) - { return TRUE; - } - else + for (i=0; i<16; i++) { - for (i=0; i<16; i++) - { - if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) - { - return TRUE; - } - } + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + return TRUE; } return FALSE; } @@ -1444,6 +1178,7 @@ bool8 sub_80BEE48(u8 arg0) void sub_80BEE84(u16 var0) { u8 i; + for (i=0; i<16; i++) { if (gSaveBlock1.unknown_2ABC[i].val0) @@ -1455,9 +1190,7 @@ void sub_80BEE84(u16 var0) else { if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) - { gSaveBlock1.unknown_2ABC[i].val1 = 1; - } gSaveBlock1.unknown_2ABC[i].val2 -= var0; } } @@ -1470,16 +1203,16 @@ void sub_80BEF10(u8 strvaridx, u8 rank) switch (rank) { case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); break; case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); break; case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); break; case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); break; } } @@ -1489,34 +1222,34 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) switch (category) { case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); break; case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); break; case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); break; case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); break; case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH].text); + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); break; } } void SetContestCategoryStringVarForInterview(void) { - TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; + + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); } void sub_80BF088(u8 arg0, s32 price) { - size_t log10val; - log10val = sub_80BF0B8(price); + size_t log10val = sub_80BF0B8(price); + ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); } @@ -1547,38 +1280,31 @@ void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) u8 i; s32 price; price = 0; - for (i=0; i<3; i++) + + for (i = 0; i < 3; i++) { if (arg1->itemIds[i]) - { price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; - } } if (arg1->priceReduced == 1) - { sub_80BF088(arg0, price >> 1); - } else - { sub_80BF088(arg0, price); - } } bool8 sub_80BF1B4(u8 showIdx) { - TVShow *tvShows; u8 i; - u32 trainerId; - tvShows = gSaveBlock1.tvShows; - trainerId = GetPlayerTrainerId(); - for (i=5; i<24; i++) + //TVShow *tvShows; + TVShow *tvShows = gSaveBlock1.tvShows; + u32 trainerId = GetPlayerTrainerId(); + + for (i = 5; i < 24; i++) { if (tvShows[i].common.var00 == showIdx) { if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) - { return TRUE; - } } } return FALSE; @@ -1588,9 +1314,10 @@ void sub_80BF20C(void) { u8 i, j; u16 tmpId, tmpAmount; - for (i=0; i<2; i++) + + for (i = 0; i < 2; i++) { - for (j=i+1; j<3; j++) + for (j = i + 1; j < 3; j++) { if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) { @@ -1608,9 +1335,11 @@ void sub_80BF20C(void) void sub_80BF25C(u8 showType) { u8 i; - for (i=0; i<5; i++) + + for (i = 0; i < 5; i++) { - if (gSaveBlock1.tvShows[i].common.var00 == showType) { + if (gSaveBlock1.tvShows[i].common.var00 == showType) + { if(gSaveBlock1.tvShows[i].common.var01 == 1) { gScriptResult = 1; @@ -1630,7 +1359,8 @@ void sub_80BF25C(u8 showType) void sub_80BF2C4(void) { gScriptResult = 0; - switch (gSpecialVar_0x8005) { + switch (gSpecialVar_0x8005) + { case TVSHOW_FAN_CLUB_LETTER: sub_80BF334(); break; @@ -1657,35 +1387,41 @@ void sub_80BF2C4(void) void sub_80BF334(void) { - TVShow *show; + struct TVShowFanClubLetter *fanclubLetter; + sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); - if (gScriptResult == 0) { + if (gScriptResult == 0) + { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubLetter.pad04, 6); + fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; + sub_80EB6FC(fanclubLetter->pad04, 6); } } void sub_80BF3A4(void) { - TVShow *show; + struct TVShowRecentHappenings *recentHappenings; + sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->recentHappenings.var04, 6); + if (gScriptResult == 0) + { + recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; + sub_80EB6FC(recentHappenings->var04, 6); } } void sub_80BF3DC(void) { - TVShow *show; + struct TVShowFanclubOpinions *fanclubOpinions; + sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (gScriptResult == 0) { + if (gScriptResult == 0) + { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); StringGetEnd10(gStringVar2); - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubOpinions.var1C, 2); + fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions; + sub_80EB6FC(fanclubOpinions->var1C, 2); } } @@ -1701,21 +1437,25 @@ void sub_80BF478(void) void sub_80BF484(void) { - TVShow *show; + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer; + sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->bravoTrainer.var04, 2); + if (gScriptResult == 0) + { + bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; + sub_80EB6FC(bravoTrainer->var04, 2); } } void sub_80BF4BC(void) { - TVShow *show; + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower; + sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later + if (gScriptResult == 0) + { + bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; + sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later } } @@ -1725,13 +1465,9 @@ u8 sub_80BF4F4(u8 arg0) u32 species; GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); - species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE) - { return FALSE; - } return TRUE; } @@ -1740,22 +1476,18 @@ u8 sub_80BF4F4(u8 arg0) { u8 langData[4]; u32 species; - u8 *tmp; GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1); tmp = langData; tmp[0] = GetMonData(&gPlayerParty[arg0], MON_DATA_LANGUAGE, &langData); - if (tmp[0] != GAME_LANGUAGE) { + if (tmp[0] != GAME_LANGUAGE) return TRUE; - } species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL); - - if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) { + if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) return TRUE; - } return FALSE; } @@ -1769,21 +1501,26 @@ u8 sub_80BF544(void) void sub_80BF55C(TVShow tvShow[], u8 showidx) { u8 idx; + tvShow[showidx].common.var00 = 0; tvShow[showidx].common.var01 = 0; - for (idx=0; idx<34; idx++) { + for (idx = 0; idx < 34; idx++) tvShow[showidx].common.pad02[idx] = 0; - } } void sub_80BF588(TVShow tvShow[]) { u8 showidx; u8 showidx2; - for (showidx=0; showidx<4; showidx++) { - if (tvShow[showidx].common.var00 == 0) { - for (showidx2=showidx+1; showidx2<5; showidx2++) { - if (tvShow[showidx2].common.var00 != 0) { + + for (showidx = 0; showidx < 4; showidx++) + { + if (tvShow[showidx].common.var00 == 0) + { + for (showidx2 = showidx + 1; showidx2 < 5; showidx2++) + { + if (tvShow[showidx2].common.var00 != 0) + { tvShow[showidx] = tvShow[showidx2]; sub_80BF55C(tvShow, showidx2); break; @@ -1791,10 +1528,14 @@ void sub_80BF588(TVShow tvShow[]) } } } - for (showidx=5; showidx<24; showidx++) { - if (tvShow[showidx].common.var00 == 0) { - for (showidx2=showidx+1; showidx2<24; showidx2++) { - if (tvShow[showidx2].common.var00 != 0) { + for (showidx = 5; showidx < 24; showidx++) + { + if (tvShow[showidx].common.var00 == 0) + { + for (showidx2 = showidx + 1; showidx2 < 24; showidx2++) + { + if (tvShow[showidx2].common.var00 != 0) + { tvShow[showidx] = tvShow[showidx2]; sub_80BF55C(gSaveBlock1.tvShows, showidx2); break; @@ -1807,6 +1548,7 @@ void sub_80BF588(TVShow tvShow[]) u16 sub_80BF638(u8 arg0, u16 arg1) { u16 retval = sub_80BF674(arg1); + StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); return retval; } @@ -1815,14 +1557,17 @@ u16 sub_80BF674(u16 species) { u16 rspecies; u16 cspecies; + rspecies = (Random() % (NUM_SPECIES - 1)) + 1; cspecies = rspecies; - while ((s8)GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { + while (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) + { if (cspecies == SPECIES_BULBASAUR) cspecies = NUM_SPECIES - 1; else cspecies --; - if (cspecies == rspecies) { + if (cspecies == rspecies) + { cspecies = species; return cspecies; } @@ -1843,7 +1588,9 @@ void sub_80BF6D8(void) s8 sub_80BF720(TVShow tvShow[]) { u8 idx; - for (idx=0; idx<5; idx++) { + + for (idx = 0; idx < 5; idx++) + { if (tvShow[idx].common.var00 == 0) return idx; } @@ -1853,7 +1600,9 @@ s8 sub_80BF720(TVShow tvShow[]) s8 sub_80BF74C(TVShow tvShow[]) { s8 idx; - for (idx=5; idx<24; idx++) { + + for (idx = 5; idx < 24; idx++) + { if (tvShow[idx].common.var00 == 0) return idx; } @@ -1870,12 +1619,14 @@ bool8 sub_80BF77C(u16 value) void sub_80BF79C(TVShow *arg0) { u8 i = Random() % 6; - while (1) { + + while (1) + { if (i == 6) i = 0; if (arg0->recentHappenings.var04[i] != 0xFFFF) break; - i ++; + i++; } sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]); } @@ -1884,8 +1635,11 @@ u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) { u16 flagsum = 0; u8 i = 0; - if (arg0->pokemonName[0] != 0xFF) { - while (i < 11 && arg0->pokemonName[i] != 0xFF) { + + if (arg0->pokemonName[0] != 0xFF) + { + while (i < 11 && arg0->pokemonName[i] != 0xFF) + { flagsum += arg0->pokemonName[i]; i++; } @@ -1893,49 +1647,77 @@ u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) return flagsum & 0x7; } + void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) { u8 flags[3]; u16 nameLength; u8 i; - for (i=0; i<3; i++) + + for (i = 0; i < 3; i++) flags[i] = EOS; - if (arg3 == 0) { + + if (arg3 == 0) + { nameLength = StringLength(tvShow->trainerName); - if (arg2 == 0) { + if (arg2 == 0) + { flags[0] = tvShow->trainerName[arg1]; - } else if (arg2 == 1) { + } + else if (arg2 == 1) + { flags[0] = tvShow->trainerName[nameLength - arg1]; - } else if (arg2 == 2) { + } + else if (arg2 == 2) { flags[0] = tvShow->trainerName[arg1]; flags[1] = tvShow->trainerName[arg1 + 1]; - } else { + } + else + { flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; } - } else if (arg3 == 1) { + } + else if (arg3 == 1) + { nameLength = StringLength(tvShow->pokemonName); - if (arg2 == 0) { + if (arg2 == 0) + { flags[0] = tvShow->pokemonName[arg1]; - } else if (arg2 == 1) { + } + else if (arg2 == 1) + { flags[0] = tvShow->pokemonName[nameLength - arg1]; - } else if (arg2 == 2) { + } + else if (arg2 == 2) + { flags[0] = tvShow->pokemonName[arg1]; flags[1] = tvShow->pokemonName[arg1 + 1]; - } else { + } + else + { flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; } - } else { + } + else + { nameLength = StringLength(gSpeciesNames[arg4]); - if (arg2 == 0) { + if (arg2 == 0) + { flags[0] = gSpeciesNames[arg4][arg1]; - } else if (arg2 == 1) { + } + else if (arg2 == 1) + { flags[0] = gSpeciesNames[arg4][nameLength - arg1]; - } else if (arg2 == 2) { + } + else if (arg2 == 2) + { flags[0] = gSpeciesNames[arg4][arg1]; flags[1] = gSpeciesNames[arg4][arg1 + 1]; - } else { + } + else + { flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; } @@ -1946,7 +1728,8 @@ void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNam bool8 sub_80BF974(void) { u8 i; - for (i=0; i<5; i++) + + for (i = 0; i < 5; i++) { if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) return TRUE; @@ -1970,6 +1753,7 @@ void sub_80BF9F8(void) u16 spec; u16 gender; u32 pval; + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); @@ -2021,10 +1805,13 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) { if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) return 0; - if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock2.playerGender == MALE) + { if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) return 0; - } else { + } + else + { if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) return 0; } @@ -2035,165 +1822,56 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) return 1; } -#ifdef NONMATCHING void GetMomOrDadStringForTVMessage(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { - if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { + if (gSaveBlock2.playerGender == MALE) + { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); } - } else { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) { + } + else + { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); } } } - if (VarGet(VAR_0x4003) == 1) { + if (VarGet(VAR_0x4003) == 1) + { StringCopy(gStringVar1, gOtherText_Mom); - } else if (VarGet(VAR_0x4003) == 2) { + } + else if (VarGet(VAR_0x4003) == 2) + { StringCopy(gStringVar1, gOtherText_Dad); - } else if (VarGet(VAR_0x4003) > 2) { - if ((u16)(VarGet(VAR_0x4003) & 1) == 0) { + } + else if (VarGet(VAR_0x4003) > 2) + { + if (VarGet(VAR_0x4003) % 2 == 0) StringCopy(gStringVar1, gOtherText_Mom); - } else { + else StringCopy(gStringVar1, gOtherText_Dad); - } - } else { - if ((u16)(Random() & 1) != 0) { + } + else + { + if (Random() % 2 != 0) + { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); - } else { + } + else + { StringCopy(gStringVar1, gOtherText_Dad); VarSet(VAR_0x4003, 2); } } } -#else -__attribute__((naked)) -void GetMomOrDadStringForTVMessage(void) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - ldr r1, _080BFC40 @ =gSaveBlock1\n\ - movs r0, 0x4\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x1\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC44 @ =gSaveBlock2\n\ - ldrb r0, [r0, 0x8]\n\ - cmp r0, 0\n\ - bne _080BFC54\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC48 @ =gStringVar1\n\ - ldr r1, _080BFC4C @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFC50 @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFC6C\n\ - .align 2, 0\n\ -_080BFC40: .4byte gSaveBlock1\n\ -_080BFC44: .4byte gSaveBlock2\n\ -_080BFC48: .4byte gStringVar1\n\ -_080BFC4C: .4byte gOtherText_Mom\n\ -_080BFC50: .4byte 0x00004003\n\ -_080BFC54:\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x2\n\ - bne _080BFC6C\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFCBC @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ -_080BFC6C:\n\ - ldr r4, _080BFCBC @ =0x00004003\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - beq _080BFCAA\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - beq _080BFCC0\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - bls _080BFCD4\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BFCC0\n\ -_080BFCAA:\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCB4: .4byte gStringVar1\n\ -_080BFCB8: .4byte gOtherText_Mom\n\ -_080BFCBC: .4byte 0x00004003\n\ -_080BFCC0:\n\ - ldr r0, _080BFCCC @ =gStringVar1\n\ - ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCCC: .4byte gStringVar1\n\ -_080BFCD0: .4byte gOtherText_Dad\n\ -_080BFCD4:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BFD00\n\ - ldr r0, _080BFCF8 @ =gStringVar1\n\ - ldr r1, _080BFCFC @ =gOtherText_Mom\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFD10\n\ - .align 2, 0\n\ -_080BFCF8: .4byte gStringVar1\n\ -_080BFCFC: .4byte gOtherText_Mom\n\ -_080BFD00:\n\ - ldr r0, _080BFD18 @ =gStringVar1\n\ - ldr r1, _080BFD1C @ =gOtherText_Dad\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x2\n\ - bl VarSet\n\ -_080BFD10:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BFD18: .4byte gStringVar1\n\ -_080BFD1C: .4byte gOtherText_Dad\n\ -.syntax divided\n"); -} -#endif void sub_80BFD20(void) { @@ -2201,7 +1879,8 @@ void sub_80BFD20(void) RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } -typedef union ewramStruct_02007000 { +typedef union ewramStruct_02007000 +{ TVShow tvshows[4][25]; struct UnknownSaveStruct2ABC unknown_2abc[4][16]; } ewramStruct_02007000; @@ -2216,11 +1895,12 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) { u8 i; ewramStruct_02007000 *ewramTVShows; - for (i=0; i<4; i++) { + + for (i = 0; i < 4; i++) memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); - } ewramTVShows = &gUnknown_02007000; - switch (arg2) { + switch (arg2) + { case 0: sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); break; @@ -2253,47 +1933,55 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) { u8 i, j; - TVShow ** argslist[4]; + TVShow **argslist[4]; + argslist[0] = &arg0; argslist[1] = &arg1; argslist[2] = &arg2; argslist[3] = &arg3; gUnknown_03000720 = GetLinkPlayerCount(); - while (1) { - for (i=0; i<gUnknown_03000720; i++) { + while (1) + { + for (i=0; i<gUnknown_03000720; i++) + { if (i == 0) gUnknown_020387E4 = i; gUnknown_03000722 = sub_80C019C(argslist[i][0]); - if (gUnknown_03000722 == -1) { + if (gUnknown_03000722 == -1) + { gUnknown_020387E4++; if (gUnknown_020387E4 == gUnknown_03000720) return; - } else { - for (j=0; j<gUnknown_03000720-1; j++) { + } + else + { + for (j=0; j<gUnknown_03000720-1; j++) + { gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]); - if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) { + if (gUnknown_03005D38.var0 != -1 + && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) break; - } } - if (j == gUnknown_03000720 - 1) { + if (j == gUnknown_03000720 - 1) sub_80BF55C(argslist[i][0], gUnknown_03000722); - } } } } } -#ifdef NONMATCHING -bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) +{ u8 value; u8 switchval; - TVShow tv1[25]; - TVShow tv2[25]; + TVShow *tv1; + TVShow *tv2; + tv1 = *arg1; tv2 = *arg2; value = FALSE; switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00); - switch (switchval) { + switch (switchval) + { case 2: value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; @@ -2304,140 +1992,23 @@ bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; } - if (value == TRUE) { + if (value == TRUE) + { sub_80BF55C(tv2, gUnknown_03000722); return TRUE; - } else { + } + else + { return FALSE; } } -#else -__attribute__((naked)) -bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - lsls r2, 24\n\ - lsrs r7, r2, 24\n\ - ldr r4, [r0]\n\ - ldr r6, [r1]\n\ - movs r5, 0\n\ - ldr r2, _080BFFA4 @ =gUnknown_03000722\n\ - movs r1, 0\n\ - ldrsb r1, [r2, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r6 @ this is the only mimsmatch\n\ - ldrb r0, [r0]\n\ - str r2, [sp]\n\ - bl sub_80BFB54\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r1, r0, 0\n\ - ldr r2, [sp]\n\ - cmp r0, 0x3\n\ - beq _080BFFD8\n\ - cmp r0, 0x3\n\ - bgt _080BFFA8\n\ - cmp r0, 0x2\n\ - beq _080BFFAE\n\ - b _080C0026\n\ - .align 2, 0\n\ -_080BFFA4: .4byte gUnknown_03000722\n\ -_080BFFA8:\n\ - cmp r1, 0x4\n\ - beq _080C0000\n\ - b _080C0026\n\ -_080BFFAE:\n\ - ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C004C\n\ - b _080C0022\n\ - .align 2, 0\n\ -_080BFFD4: .4byte gUnknown_03005D38\n\ -_080BFFD8:\n\ - ldr r0, _080BFFFC @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C00B4\n\ - b _080C0022\n\ - .align 2, 0\n\ -_080BFFFC: .4byte gUnknown_03005D38\n\ -_080C0000:\n\ - ldr r0, _080C0030 @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C0134\n\ -_080C0022:\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ -_080C0026:\n\ - cmp r5, 0x1\n\ - beq _080C0034\n\ - movs r0, 0\n\ - b _080C0040\n\ - .align 2, 0\n\ -_080C0030: .4byte gUnknown_03005D38\n\ -_080C0034:\n\ - ldr r0, _080C0048 @ =gUnknown_03000722\n\ - ldrb r1, [r0]\n\ - adds r0, r6, 0\n\ - bl sub_80BF55C\n\ - movs r0, 0x1\n\ -_080C0040:\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080C0048: .4byte gUnknown_03000722\n\ -.syntax divided\n"); -} -#endif -u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) { +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) +{ u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) return FALSE; - } tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; @@ -2447,14 +2018,13 @@ u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } -u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) +{ u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) { + if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) return FALSE; - } - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) return FALSE; - } tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; @@ -2464,11 +2034,11 @@ u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } -u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) +{ u32 linkTrainerId = GetLinkPlayerTrainerId(idx); - if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) return FALSE; - } tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; @@ -2479,12 +2049,13 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } -s8 sub_80C019C(TVShow tvShows[]) { +s8 sub_80C019C(TVShow tvShows[]) +{ u8 i; - for (i=0; i<24; i++) { - if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) { + for (i = 0; i < 24; i++) + { + if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) return i; - } } return -1; } @@ -2749,82 +2320,40 @@ _080C03A0:\n\ } #endif -void sub_80C03A8(u8 showidx) { +void sub_80C03A8(u8 showidx) +{ gSaveBlock1.tvShows[showidx].common.var01 = 0; } -void sub_80C03C8(u16 species, u8 showidx) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) { +void sub_80C03C8(u16 species, u8 showidx) +{ + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) gSaveBlock1.tvShows[showidx].common.var01 = 0; - } } -#ifdef NONMATCHING -void sub_80C0408(void) { +void sub_80C0408(void) +{ u16 i; - if (FlagGet(SYS_GAME_CLEAR) != 1) { - for (i=0; i<24; i++) { - if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { - gSaveBlock1.tvShows[i].common.var01 = 0; - } - } + + if (FlagGet(SYS_GAME_CLEAR) == TRUE) + return; + for (i = 0; i < 24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE) + gSaveBlock1.tvShows[i].common.var01 = 0; + else if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) + gSaveBlock1.tvShows[i].common.var01 = 0; } } -#else -__attribute__((naked)) -void sub_80C0408(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r0, _080C044C @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080C0444\n\ - movs r2, 0\n\ - ldr r6, _080C0450 @ =gSaveBlock1\n\ - ldr r4, _080C0454 @ =0x00002739\n\ - movs r3, 0\n\ - ldr r5, _080C0458 @ =0x00002738\n\ -_080C0422:\n\ - lsls r0, r2, 3\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r1, r0, r6\n\ - adds r0, r1, r5\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x7\n\ - beq _080C0436\n\ - cmp r0, 0x29\n\ - bne _080C043A\n\ -_080C0436:\n\ - adds r0, r1, r4\n\ - strb r3, [r0]\n\ -_080C043A:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x17\n\ - bls _080C0422\n\ -_080C0444:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080C044C: .4byte 0x00000804\n\ -_080C0450: .4byte gSaveBlock1\n\ -_080C0454: .4byte 0x00002739\n\ -_080C0458: .4byte 0x00002738\n\ -.syntax divided\n"); -} -#endif -void sub_80C045C(void) { +void sub_80C045C(void) +{ u8 i; - for (i=0; i<5; i++) { - if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) { + + for (i = 0; i < 5; i++) + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) gSaveBlock1.tvShows[i].common.var01 = 0; - } } } @@ -2833,17 +2362,14 @@ void sub_80C04A0(void) s8 showIdx; s8 count; count = 0; - for (showIdx=5; showIdx<24; showIdx++) + + for (showIdx = 5; showIdx < 24; showIdx++) { if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) - { - count ++; - } + count++; } - for (showIdx=0; showIdx<5-count; showIdx++) - { + for (showIdx = 0; showIdx < 5 - count; showIdx++) sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); - } } void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); @@ -2856,25 +2382,24 @@ void sub_80C0514(void *a0, u32 a1, u8 a2) { ewramStruct_02007000 *struct02007000; u8 i; - for (i=0; i<4; i++) - { + + for (i = 0; i < 4; i++) memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); - } struct02007000 = &gUnknown_02007000; switch (a2) { - case 0: - sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); - break; - case 1: - sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); - break; - case 2: - sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); - break; - case 3: - sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); - break; + case 0: + sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 1: + sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 2: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); + break; + case 3: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); + break; } sub_80C0750(); sub_80C0788(); @@ -2886,49 +2411,51 @@ void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2A u8 j; u8 k; struct UnknownSaveStruct2ABC ** arglist[4]; + arglist[0] = &a0; arglist[1] = &a1; arglist[2] = &a2; arglist[3] = &a3; gUnknown_03000721 = GetLinkPlayerCount(); - for (i=0; i<16; i++) + for (i = 0; i < 16; i++) { - for (j=0; j<gUnknown_03000721; j++) + for (j = 0; j < gUnknown_03000721; j++) { gUnknown_03000722 = sub_80C0730(*arglist[j], i); if (gUnknown_03000722 != -1) { - for (k=0; k<gUnknown_03000721-1; k++) + for (k = 0; k < gUnknown_03000721-1; k++) { gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]); if (gUnknown_03005D38.var0 != -1) - { sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]); - } } } } } } -void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) { +void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) +{ struct UnknownSaveStruct2ABC *str0; struct UnknownSaveStruct2ABC *str1; + str0 = arg0[0]; str1 = arg1[0]; str1 += gUnknown_03000722; sub_80C06E8(str0, str1, gUnknown_03005D38.var0); } -bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) { +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) +{ u8 i; - if (arg1->val0 == 0) { + + if (arg1->val0 == 0) return FALSE; - } - for (i=0; i<16; i++) { - if (arg0[i].val0 == arg1->val0) { + for (i = 0; i < 16; i++) + { + if (arg0[i].val0 == arg1->val0) return FALSE; - } } arg0[arg2].val0 = arg1->val0; arg0[arg2].val1 = 1; @@ -2936,35 +2463,42 @@ bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2A return TRUE; } -s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) { - if (arg0[arg1].val0 == 0) { +s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) +{ + if (arg0[arg1].val0 == 0) return -1; - } return arg1; } -void sub_80C0750(void) { +void sub_80C0750(void) +{ u8 i; - for (i=0; i<16; i++) { - if (gSaveBlock1.unknown_2ABC[i].val0 > 3) { + + for (i = 0; i < 16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 > 3) sub_80BEC10(i); - } } sub_80BEC40(); } -void sub_80C0788(void) { +void sub_80C0788(void) +{ u8 i; - if (FlagGet(SYS_GAME_CLEAR) != 1) { - for (i=0; i<16; i++) { + + if (FlagGet(SYS_GAME_CLEAR) != 1) + { + for (i = 0; i < 16; i++) gSaveBlock1.unknown_2ABC[i].val1 = 0; - } } } -void DoTVShow(void) { - if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) { - switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) { +void DoTVShow(void) +{ + if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) + { + switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) + { case TVSHOW_FAN_CLUB_LETTER: DoTVShowPokemonFanClubLetter(); break; @@ -3008,328 +2542,275 @@ void DoTVShow(void) { } } -void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { +void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) +{ StringCopy(dest, src); - if (language < LANGUAGE_ENGLISH) { + if (language < LANGUAGE_ENGLISH) ConvertInternationalString(dest, LANGUAGE_JAPANESE); - } } void DoTVShowBravoTrainerPokemonProfile(void) { - TVShow *tvShow; - u8 switchval; + struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; + u8 state; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) - { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); - sub_80BEF10(2, tvShow->bravoTrainer.contestRank); - if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname)) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 1; - } - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f); - CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory); - gUnknown_020387E8 = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - if (tvShow->bravoTrainer.contestResult == 0) // placed first - { - gUnknown_020387E8 = 3; - } else - { - gUnknown_020387E8 = 4; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); - sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); - gUnknown_020387E8 = 5; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); - sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); - gUnknown_020387E8 = 5; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); - sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); - if (tvShow->bravoTrainer.var14) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 7; - } - break; - case 6: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]); - sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + state = gUnknown_020387E8; + switch(state) + { + case 0: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); + sub_80BEF10(2, bravoTrainer->contestRank); + if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[bravoTrainer->species], bravoTrainer->pokemonNickname)) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + TVShowConvertInternationalString(gStringVar2, bravoTrainer->pokemonNickname, bravoTrainer->var1f); + CopyContestCategoryToStringVar(2, bravoTrainer->contestCategory); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + if (bravoTrainer->contestResult == 0) // placed first + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 4; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]); + sub_80BF088(2, bravoTrainer->contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]); + sub_80BF088(2, bravoTrainer->contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory); + sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]); + if (bravoTrainer->var14) + gUnknown_020387E8 = 6; + else gUnknown_020387E8 = 7; - break; - case 7: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]); - TVShowDone(); - break; - case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); - gUnknown_020387E8 = 2; - break; + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]); + sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]); + gUnknown_020387E8 = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainer->species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]); + gUnknown_020387E8 = 2; + break; } - ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]); + ShowFieldMessage(gTVBravoTrainerTextGroup[state]); } void DoTVShowBravoTrainerBattleTowerProfile(void) { - TVShow *tvShow; - u8 switchval; + struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower; + u8 state; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) + state = gUnknown_020387E8; + switch(state) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); - if (tvShow->bravoTrainerTower.var16 >= 7) - { - gUnknown_020387E8 = 1; - } else - { - gUnknown_020387E8 = 2; - } - break; - case 1: - sub_80BF088(0, tvShow->bravoTrainerTower.btLevel); - sub_80BF088(1, tvShow->bravoTrainerTower.var16); - if (tvShow->bravoTrainerTower.var1c == 1) - { - gUnknown_020387E8 = 3; - } else - { - gUnknown_020387E8 = 4; - } - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 5; - } else - { - gUnknown_020387E8 = 6; - } - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 7: - gUnknown_020387E8 = 11; - break; - case 8: - case 9: - case 10: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 11; - break; - case 11: - sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); - if (tvShow->bravoTrainerTower.var1b == 0) - { - gUnknown_020387E8 = 12; - } else - { - gUnknown_020387E8 = 13; - } - break; - case 12: - case 13: - sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); - TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); - gUnknown_020387E8 = 14; - break; - case 14: - TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); + if (bravoTrainerTower->var16 >= 7) + gUnknown_020387E8 = 1; + else + gUnknown_020387E8 = 2; + break; + case 1: + sub_80BF088(0, bravoTrainerTower->btLevel); + sub_80BF088(1, bravoTrainerTower->var16); + if (bravoTrainerTower->var1c == 1) + gUnknown_020387E8 = 3; + else + gUnknown_020387E8 = 4; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + sub_80BF088(1, bravoTrainerTower->var16 + 1); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 3: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 5; + else + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 7: + gUnknown_020387E8 = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + gUnknown_020387E8 = 11; + break; + case 11: + sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]); + if (bravoTrainerTower->var1b == 0) + gUnknown_020387E8 = 12; + else + gUnknown_020387E8 = 13; + break; + case 12: + case 13: + sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]); + TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language); + TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language); + gUnknown_020387E8 = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language); + StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]); + TVShowDone(); + break; } - ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]); + ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[state]); } void DoTVShowTodaysSmartShopper(void) { - TVShow *tvShow; - u8 switchval; + struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow; + u8 state; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; - switchval = gUnknown_020387E8; - switch(switchval) + state = gUnknown_020387E8; + switch(state) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0); - if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff) - { - gUnknown_020387E8 = 11; - } else - { - gUnknown_020387E8 = 1; - } - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]); - gUnknown_020387E8 += (Random() % 4) + 1; - break; - case 2: - case 4: - case 5: - if (tvShow->smartshopperShow.itemIds[1] != 0) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 10; - } - break; - case 3: - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1); - if (tvShow->smartshopperShow.itemIds[1] != 0) - { - gUnknown_020387E8 = 6; - } else - { - gUnknown_020387E8 = 10; - } - break; - case 6: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]); - if (tvShow->smartshopperShow.itemIds[2] != 0) - { - gUnknown_020387E8 = 7; - } else if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 7: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name); - sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]); - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 8: - if (tvShow->smartshopperShow.itemAmounts[0] < 0xff) - { - gUnknown_020387E8 = 9; - } else - { - gUnknown_020387E8 = 12; - } - break; - case 9: - sub_80BF154(1, &tvShow->smartshopperShow); - TVShowDone(); - break; - case 10: - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 9; - } - break; - case 11: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); - if (tvShow->smartshopperShow.priceReduced == 1) - { - gUnknown_020387E8 = 8; - } else - { - gUnknown_020387E8 = 12; - } - break; - case 12: - TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + sub_80FBFB4(gStringVar2, smartShopper->shopLocation, 0); + if (smartShopper->itemAmounts[0] >= 0xff) + gUnknown_020387E8 = 11; + else + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + sub_80BF088(2, smartShopper->itemAmounts[0]); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 2: + case 4: + case 5: + if (smartShopper->itemIds[1] != 0) + gUnknown_020387E8 = 6; + else + gUnknown_020387E8 = 10; + break; + case 3: + sub_80BF088(2, smartShopper->itemAmounts[0] + 1); + if (smartShopper->itemIds[1] != 0) + gUnknown_020387E8 = 6; + else + gUnknown_020387E8 = 10; + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name); + sub_80BF088(2, smartShopper->itemAmounts[1]); + if (smartShopper->itemIds[2] != 0) + gUnknown_020387E8 = 7; + else if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name); + sub_80BF088(2, smartShopper->itemAmounts[2]); + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 8: + if (smartShopper->itemAmounts[0] < 0xff) + gUnknown_020387E8 = 9; + else + gUnknown_020387E8 = 12; + break; + case 9: + sub_80BF154(1, smartShopper); + TVShowDone(); + break; + case 10: + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 9; + break; + case 11: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name); + if (smartShopper->priceReduced == 1) + gUnknown_020387E8 = 8; + else + gUnknown_020387E8 = 12; + break; + case 12: + TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); + TVShowDone(); + break; } - ShowFieldMessage(gTVSmartShopperTextGroup[switchval]); + ShowFieldMessage(gTVSmartShopperTextGroup[state]); } -void DoTVShowTheNameRaterShow(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowTheNameRaterShow(void) +{ + struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); + TVShowConvertInternationalString(gStringVar3, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(nameRaterShow) + 1; break; case 1: case 3: @@ -3338,217 +2819,214 @@ void DoTVShowTheNameRaterShow(void) { case 6: case 7: case 8: - if (tvShow->nameRaterShow.random == 0) { + if (nameRaterShow->random == 0) gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { + else if (nameRaterShow->random == 1) gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { + else if (nameRaterShow->random == 2) gUnknown_020387E8 = 11; - } break; case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - if (tvShow->nameRaterShow.random == 0) { + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); + if (nameRaterShow->random == 0) gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { + else if (nameRaterShow->random == 1) gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { + else if (nameRaterShow->random == 2) gUnknown_020387E8 = 11; - } break; case 9: case 10: case 11: - sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 1, 0, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); gUnknown_020387E8 = 12; break; case 13: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->language); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); gUnknown_020387E8 = 14; break; case 14: - sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); - sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 3, 0, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->language); + sub_80BF820(0, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language); gUnknown_020387E8 = 18; break; case 15: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]); + sub_80BF820(2, 0, 3, 2, nameRaterShow->species, nameRaterShow); gUnknown_020387E8 = 16; break; case 16: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + sub_80BF820(0, 0, 3, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, nameRaterShow->species, nameRaterShow); gUnknown_020387E8 = 17; break; case 17: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); + sub_80BF820(1, 0, 2, 1, 0, nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, nameRaterShow->var1C, nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->var1C]); gUnknown_020387E8 = 18; break; case 12: - switchval = 18; + state = 18; gUnknown_020387E8 = 18; case 18: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, nameRaterShow->trainerName, nameRaterShow->language); TVShowDone(); break; } - ShowFieldMessage(gTVNameRaterTextGroup[switchval]); + ShowFieldMessage(gTVNameRaterTextGroup[state]); } -void DoTVShowPokemonTodaySuccessfulCapture(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowPokemonTodaySuccessfulCapture(void) +{ + struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); + if (pokemonToday->ball == ITEM_MASTER_BALL) gUnknown_020387E8 = 5; - } else { + else gUnknown_020387E8 = 1; - } break; case 1: gUnknown_020387E8 = 2; break; case 2: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); - sub_80BF088(2, tvShow->pokemonToday.var12); - if (tvShow->pokemonToday.var12 < 4) { + StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name); + sub_80BF088(2, pokemonToday->var12); + if (pokemonToday->var12 < 4) gUnknown_020387E8 = 3; - } else { + else gUnknown_020387E8 = 4; - } break; case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); gUnknown_020387E8 = 6; break; case 4: gUnknown_020387E8 = 6; break; case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); gUnknown_020387E8 = 6; break; case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2); gUnknown_020387E8 += (Random() % 4) + 1; break; case 7: case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - sub_80BF638(2, tvShow->pokemonToday.species); + StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); + sub_80BF638(2, pokemonToday->species); gUnknown_020387E8 = 11; break; case 9: case 10: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]); + TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2); gUnknown_020387E8 = 11; break; case 11: TVShowDone(); break; } - ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); + ShowFieldMessage(gTVPokemonTodayTextGroup[state]); } -void DoTVShowPokemonTodayFailedCapture(void) { - TVShow *tvShow; - u8 switchval; - u16 rval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowPokemonTodayFailedCapture(void) +{ + struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonTodayFailed->species]); gUnknown_020387E8 = 1; break; case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); - if (tvShow->pokemonTodayFailed.var11 == 1) { + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + sub_80FBFB4(gStringVar2, pokemonTodayFailed->var12, 0); + StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]); + if (pokemonTodayFailed->var11 == 1) gUnknown_020387E8 = 3; - } else { + else gUnknown_020387E8 = 2; - } break; case 2: case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80BF088(1, tvShow->pokemonTodayFailed.var10); - rval = (Random() % 3); - if (rval == 0) { + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); + sub_80BF088(1, pokemonTodayFailed->var10); + if ((Random() % 3) == 0) gUnknown_020387E8 = 5; - } else { + else gUnknown_020387E8 = 4; - } break; case 4: case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); gUnknown_020387E8 = 6; break; case 6: TVShowDone(); break; } - ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); + ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[state]); } -void DoTVShowPokemonFanClubLetter(void) { - TVShow *tvShow; - u8 switchval; +void DoTVShowPokemonFanClubLetter(void) +{ + struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubLetter; + u8 state; u16 rval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); + TVShowConvertInternationalString(gStringVar1, fanclubLetter->playerName, fanclubLetter->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubLetter->species]); gUnknown_020387E8 = 50; break; case 1: rval = (Random() % 4) + 1; - if (rval == 1) { + if (rval == 1) gUnknown_020387E8 = 2; - } else { + else gUnknown_020387E8 = rval + 2; - } break; case 2: gUnknown_020387E8 = 51; @@ -3559,7 +3037,7 @@ void DoTVShowPokemonFanClubLetter(void) { case 4: case 5: case 6: - sub_80BF79C(tvShow); + sub_80BF79C((TVShow *)fanclubLetter); gUnknown_020387E8 = 7; break; case 7: @@ -3568,29 +3046,31 @@ void DoTVShowPokemonFanClubLetter(void) { TVShowDone(); break; case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); ShowFieldMessage(gStringVar4); gUnknown_020387E8 = 1; return; case 51: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2); ShowFieldMessage(gStringVar4); gUnknown_020387E8 = 3; return; } - ShowFieldMessage(gTVFanClubTextGroup[switchval]); + ShowFieldMessage(gTVFanClubTextGroup[state]); } -void DoTVShowRecentHappenings(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowRecentHappenings(void) +{ + struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); - sub_80BF79C(tvShow); + TVShowConvertInternationalString(gStringVar1, recentHappenings->playerName, recentHappenings->language); + sub_80BF79C((TVShow *)recentHappenings); gUnknown_020387E8 = 50; break; case 1: @@ -3605,92 +3085,90 @@ void DoTVShowRecentHappenings(void) { TVShowDone(); break; case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); + ConvertEasyChatWordsToString(gStringVar4, recentHappenings->var04, 2, 2); ShowFieldMessage(gStringVar4); gUnknown_020387E8 = 1; return; } - ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); + ShowFieldMessage(gTVRecentHappeningsTextGroup[state]); } -void DoTVShowPokemonFanClubOpinions(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowPokemonFanClubOpinions(void) +{ + struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); - gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); + TVShowConvertInternationalString(gStringVar3, fanclubOpinions->var10, fanclubOpinions->var0E); + gUnknown_020387E8 = fanclubOpinions->var04B + 1; break; case 1: case 2: case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]); + sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[0]); gUnknown_020387E8 = 4; break; case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); + TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language); + sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[1]); TVShowDone(); break; } - ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); + ShowFieldMessage(gTVFanClubOpinionsTextGroup[state]); } -void nullsub_22(void) { - +void nullsub_22(void) +{ } void DoTVShowPokemonNewsMassOutbreak(void) { - TVShow *tvShow; - - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; - - sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); - - StringCopy(gStringVar2, gSpeciesNames[tvShow->massOutbreak.species]); + struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; + sub_80FBFB4(gStringVar1, massOutbreak->locationMapNum, 0); + StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]); TVShowDone(); StartMassOutbreak(); - ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]); } -void DoTVShowInSearchOfTrainers(void) { - u8 switchval; +void DoTVShowInSearchOfTrainers(void) +{ + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.battleNum > 1) { + if (gSaveBlock1.gabbyAndTyData.battleNum > 1) gUnknown_020387E8 = 1; - } else { + else gUnknown_020387E8 = 2; - } break; case 1: gUnknown_020387E8 = 2; break; case 2: - if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) gUnknown_020387E8 = 4; - } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { + else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) gUnknown_020387E8 = 5; - } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { + else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) gUnknown_020387E8 = 6; - } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { + else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) gUnknown_020387E8 = 7; - } else { + else gUnknown_020387E8 = 3; - } break; case 3: StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); @@ -3713,71 +3191,73 @@ void DoTVShowInSearchOfTrainers(void) { TakeTVShowInSearchOfTrainersOffTheAir(); break; } - ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); + ShowFieldMessage(gTVGabbyAndTyTextGroup[state]); } -void DoTVShowPokemonAngler(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowPokemonAngler(void) +{ + struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler; + u8 state; + gScriptResult = 0; - if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { + if (pokemonAngler->var02 < pokemonAngler->var03) gUnknown_020387E8 = 0; - } else { + else gUnknown_020387E8 = 1; - } - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var03); + TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); + sub_80BF088(2, pokemonAngler->var03); TVShowDone(); break; case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var02); + TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language); + StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]); + sub_80BF088(2, pokemonAngler->var02); TVShowDone(); break; } - ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); + ShowFieldMessage(gTVFishingGuruAdviceTextGroup[state]); } -void DoTVShowTheWorldOfMasters(void) { - TVShow *tvShow; - u8 switchval; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; +void DoTVShowTheWorldOfMasters(void) +{ + struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters; + u8 state; + gScriptResult = 0; - switchval = gUnknown_020387E8; - switch (switchval) { + state = gUnknown_020387E8; + switch (state) + { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80BF088(1, tvShow->worldOfMasters.var06); - sub_80BF088(2, tvShow->worldOfMasters.var02); + TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, + worldOfMasters->language); + sub_80BF088(1, worldOfMasters->var06); + sub_80BF088(2, worldOfMasters->var02); gUnknown_020387E8 = 1; break; case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); + StringCopy(gStringVar1, gSpeciesNames[worldOfMasters->var08]); gUnknown_020387E8 = 2; break; case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); + TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, + worldOfMasters->language); + sub_80FBFB4(gStringVar2, worldOfMasters->var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]); TVShowDone(); break; } - ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); + ShowFieldMessage(gTVWorldOfMastersTextGroup[state]); } void TVShowDone(void) { gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index ce83bc1c2..ce83bc1c2 100755..100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c diff --git a/src/util.c b/src/util.c index c83fe8c8a..582b9f806 100644 --- a/src/util.c +++ b/src/util.c @@ -1,27 +1,140 @@ #include "global.h" #include "util.h" -extern const struct SpriteTemplate gInvisibleSpriteTemplate; -extern const u8 gSpriteDimensions[3][4][2]; -extern const u16 gCrc16Table[]; +const u32 gBitTable[] = +{ + 1 << 0, + 1 << 1, + 1 << 2, + 1 << 3, + 1 << 4, + 1 << 5, + 1 << 6, + 1 << 7, + 1 << 8, + 1 << 9, + 1 << 10, + 1 << 11, + 1 << 12, + 1 << 13, + 1 << 14, + 1 << 15, + 1 << 16, + 1 << 17, + 1 << 18, + 1 << 19, + 1 << 20, + 1 << 21, + 1 << 22, + 1 << 23, + 1 << 24, + 1 << 25, + 1 << 26, + 1 << 27, + 1 << 28, + 1 << 29, + 1 << 30, + 1 << 31, +}; -u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) { +static const struct SpriteTemplate gInvisibleSpriteTemplate = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const u8 gSpriteDimensions[3][4][2] = +{ + // square + { + {1, 1}, + {2, 2}, + {4, 4}, + {8, 8}, + }, + + // horizontal rectangle + { + {2, 1}, + {4, 1}, + {4, 2}, + {8, 4}, + }, + + // vertical rectangle + { + {1, 2}, + {1, 4}, + {2, 4}, + {4, 8}, + }, +}; + +static const u16 gCrc16Table[] = +{ + 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF, + 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7, + 0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E, + 0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876, + 0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD, + 0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5, + 0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C, + 0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974, + 0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB, + 0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3, + 0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A, + 0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72, + 0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9, + 0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1, + 0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738, + 0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70, + 0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7, + 0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF, + 0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036, + 0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E, + 0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5, + 0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD, + 0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134, + 0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C, + 0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3, + 0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB, + 0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232, + 0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A, + 0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1, + 0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9, + 0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330, + 0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78, +}; + +const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp"); + + +u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) +{ u8 sprite = CreateSprite(&gInvisibleSpriteTemplate, 248, 168, 14); gSprites[sprite].invisible = TRUE; gSprites[sprite].callback = callback; return sprite; } -void StoreWordInTwoHalfwords(u16 *h, u32 w) { +void StoreWordInTwoHalfwords(u16 *h, u32 w) +{ h[0] = (u16)(w); h[1] = (u16)(w >> 16); } -void LoadWordFromTwoHalfwords(u16 *h, u32 *w) { +void LoadWordFromTwoHalfwords(u16 *h, u32 *w) +{ *w = h[0] | (s16)h[1] << 16; } -void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { +void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) +{ src->texX = texX; src->texY = texY; src->scrX = scrX; @@ -31,15 +144,11 @@ void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX src->alpha = alpha; } -void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { +void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) +{ struct BgAffineSrcData src; - SetBgAffineStruct( - &src, - texX, texY, - scrX, scrY, - sx, sy, - alpha - ); + + SetBgAffineStruct(&src, texX, texY, scrX, scrY, sx, sy, alpha); BgAffineSet(&src, dest, 1); } @@ -47,24 +156,34 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s // Functionally equivalent. // Only the two yflip loops don't match. -void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { +void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +{ u8 x, y; s8 i, j; u8 xflip[32]; u8 h = gSpriteDimensions[shape][size][1]; u8 w = gSpriteDimensions[shape][size][0]; - for (y = 0; y < h; y++) { + + for (y = 0; y < h; y++) + { int filler = 32 - w; - for (x = 0; x < w; x++) { + + for (x = 0; x < w; x++) + { int tile = (*tilemap & 0x3ff) * 32; int attr = *tilemap & 0xc00; - if (attr == 0) { + + if (attr == 0) + { void *src = tiles + tile; void *dest = output; int length = 32; DmaCopy32(3, src, dest, length); - } else if (attr == 0x800) { // yflip - for (i = 0; i < 8; i++) { + } + else if (attr == 0x800) // yflip + { + for (i = 0; i < 8; i++) + { void *src = tiles; void *dest = output; int length = 4; @@ -73,22 +192,30 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { dest += i * 4; DmaCopy32(3, src, dest, length); } - } else { // xflip - for (i = 0; i < 8; i++) { - for (j = 0; j < 4; j++) { + } + else // xflip + { + for (i = 0; i < 8; i++) + { + for (j = 0; j < 4; j++) + { u8 i2 = i * 4; xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4; xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4; } } - if (*tilemap & 0x800) { // yflip - for (i = 0; i < 8; i++) { + if (*tilemap & 0x800) // yflip + { + for (i = 0; i < 8; i++) + { void *src = xflip + (7-i) * 4; void *dest = output + i*4; int length = 4; DmaCopy32(3, src, dest, length); } - } else { + } + else + { void *src = xflip; void *dest = output; int length = 32; @@ -104,7 +231,8 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { #else -__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { +__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +{ asm("\n" " .syntax unified\n" " push {r4-r7,lr}\n" @@ -348,39 +476,47 @@ __attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *t #endif -int CountTrailingZeroBits(u32 value) { +int CountTrailingZeroBits(u32 value) +{ u8 i; - for (i = 0; i < 32; i++) { - if ((value & 1) == 0) { + + for (i = 0; i < 32; i++) + { + if ((value & 1) == 0) value >>= 1; - } else { + else return i; - } } return 0; } -u16 CalcCRC16(u8 *data, int length) { +u16 CalcCRC16(u8 *data, int length) +{ u16 i, j; u16 crc = 0x1121; - for (i = 0; i < length; i++) { + + for (i = 0; i < length; i++) + { crc ^= data[i]; - for (j = 0; j < 8; j++) { - if (crc & 1) { + for (j = 0; j < 8; j++) + { + if (crc & 1) crc = (crc >> 1) ^ 0x8408; - } else { + else crc >>= 1; - } } } return ~crc; } -u16 CalcCRC16WithTable(u8 *data, int length) { +u16 CalcCRC16WithTable(u8 *data, int length) +{ u16 i; u16 crc = 0x1121; u8 byte; - for (i = 0; i < length; i++) { + + for (i = 0; i < length; i++) + { byte = crc >> 8; crc ^= data[i]; crc = byte ^ gCrc16Table[(u8)crc]; |