summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/agb_flash_mx.c4
-rw-r--r--src/battle_setup.c20
-rw-r--r--src/berry_tag_screen.c31
-rw-r--r--src/credits.c311
-rw-r--r--src/data/item_descriptions_de.h1392
-rw-r--r--src/data/item_descriptions_en.h1392
-rw-r--r--src/data/items_de.h5587
-rw-r--r--src/data/items_en.h5587
-rw-r--r--src/data/pokedex_entries_de.h3030
-rw-r--r--[-rwxr-xr-x]src/decoration.c0
-rw-r--r--src/easy_chat.c186
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_map_obj_helpers.c2
-rw-r--r--[-rwxr-xr-x]src/field_specials.c0
-rw-r--r--[-rwxr-xr-x]src/field_tasks.c0
-rw-r--r--src/item.c187
-rw-r--r--src/item_menu.c4583
-rw-r--r--src/item_use.c6
-rw-r--r--src/menu_cursor.c4
-rw-r--r--src/new_game.c2
-rw-r--r--src/option_menu.c5
-rw-r--r--src/player_pc.c31
-rw-r--r--[-rwxr-xr-x]src/pokeblock.c0
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/script.c10
-rw-r--r--src/script_menu.c2
-rw-r--r--[-rwxr-xr-x]src/sound_check_menu.c0
-rw-r--r--src/strings.c4
-rw-r--r--src/task.c3
-rw-r--r--src/title_screen.c10
-rw-r--r--src/tv.c2860
-rw-r--r--[-rwxr-xr-x]src/use_pokeblock.c0
-rw-r--r--src/util.c218
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
diff --git a/src/tv.c b/src/tv.c
index 27fe9b84c..7be33fc4f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -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];