summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/agb_flash.h12
-rw-r--r--include/bard_music.h4
-rw-r--r--include/battle.h135
-rw-r--r--include/battle_anim.h4
-rw-r--r--include/battle_frontier_1.h1
-rw-r--r--include/battle_frontier_2.h2
-rw-r--r--include/battle_link_817C95C.h11
-rw-r--r--include/battle_main.h30
-rw-r--r--include/battle_message.h57
-rw-r--r--include/battle_records.h12
-rw-r--r--include/battle_script_commands.h8
-rw-r--r--include/battle_tv.h11
-rw-r--r--include/battle_util.h28
-rw-r--r--include/bg.h2
-rw-r--r--include/bike.h4
-rw-r--r--include/blit.h10
-rw-r--r--include/braille_puzzles.h11
-rw-r--r--include/calculate_base_damage.h6
-rw-r--r--include/clock.h2
-rw-r--r--include/constants/battle_move_effects.h2
-rw-r--r--include/constants/battle_script_commands.h2
-rw-r--r--include/constants/decorations.h1
-rw-r--r--include/constants/flags.h13
-rw-r--r--include/constants/game_stat.h5
-rw-r--r--include/constants/items.h13
-rw-r--r--include/constants/rgb.h1
-rw-r--r--include/constants/trainers.h32
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/credits.h11
-rw-r--r--include/crt0.h11
-rw-r--r--include/data/battle_moves.h3913
-rw-r--r--include/data/item_icon_table.h414
-rw-r--r--include/data/items.h6079
-rw-r--r--include/data/pokemon/trainer_class_lookups.h64
-rw-r--r--include/data/text/abilities.h247
-rw-r--r--include/data/text/item_descriptions.h329
-rw-r--r--include/data2.h6
-rw-r--r--include/decoration.h4
-rw-r--r--include/easy_chat.h33
-rw-r--r--include/event_scripts.h144
-rw-r--r--include/field_camera.h16
-rw-r--r--include/field_control_avatar.h41
-rw-r--r--include/field_effect.h154
-rw-r--r--include/field_effect_helpers.h1
-rw-r--r--include/field_ground_effect.h2
-rw-r--r--include/field_map_obj.h7
-rw-r--r--include/field_map_obj_helpers.h4
-rw-r--r--include/field_player_avatar.h13
-rw-r--r--include/field_screen.h5
-rw-r--r--include/field_specials.h1
-rw-r--r--include/fieldmap.h30
-rw-r--r--include/fldeff_80F9BCC.h1
-rw-r--r--include/fldeff_cut.h7
-rw-r--r--include/fldeff_groundshake.h6
-rw-r--r--include/gba/io_reg.h35
-rw-r--r--include/global.fieldmap.h8
-rw-r--r--include/global.h213
-rw-r--r--include/global.tv.h4
-rw-r--r--include/graphics.h644
-rw-r--r--include/gym_leader_rematch.h87
-rw-r--r--include/international_string_util.h4
-rw-r--r--include/intro.h6
-rw-r--r--include/intro_credits_graphics.h30
-rw-r--r--include/item.h56
-rw-r--r--include/item_menu.h46
-rw-r--r--include/item_menu_icons.h15
-rw-r--r--include/item_use.h5
-rw-r--r--include/libgcnmultiboot.h17
-rw-r--r--include/librfu.h143
-rw-r--r--include/link.h172
-rw-r--r--include/link_rfu.h235
-rw-r--r--include/list_menu.h63
-rw-r--r--include/load_save.h26
-rw-r--r--include/m4a.h5
-rw-r--r--include/main.h16
-rw-r--r--include/malloc.h1
-rw-r--r--include/map_name_popup.h2
-rw-r--r--include/match_call.h13
-rw-r--r--include/mauville_old_man.h18
-rw-r--r--include/menu.h27
-rw-r--r--include/menu_helpers.h28
-rw-r--r--include/menu_indicators.h25
-rw-r--r--include/mon_markings.h24
-rw-r--r--include/multiboot_pokemon_colosseum.h6
-rw-r--r--include/overworld.h176
-rw-r--r--include/palette.h2
-rw-r--r--include/party_menu.h22
-rw-r--r--include/player_pc.h78
-rw-r--r--include/pokedex.h3
-rw-r--r--include/pokemon.h219
-rw-r--r--include/pokemon_3.h1
-rw-r--r--include/pokemon_icon.h15
-rw-r--r--include/pokemon_item_effects.h62
-rwxr-xr-xinclude/pokemon_summary_screen.h6
-rw-r--r--include/pokenav.h9
-rw-r--r--include/reset_save_heap.h12
-rw-r--r--include/rom6.h2
-rw-r--r--include/rom_8011DC0.h12
-rw-r--r--include/rotating_gate.h8
-rw-r--r--include/roulette_util.h17
-rw-r--r--include/save.h18
-rw-r--r--include/script_menu.h3
-rw-r--r--include/secret_base.h3
-rw-r--r--include/shop.h1
-rw-r--r--include/start_menu.h10
-rw-r--r--include/starter_choose.h5
-rw-r--r--include/strings.h211
-rw-r--r--include/text.h7
-rw-r--r--include/text_window.h4
-rw-r--r--include/trade.h12
-rw-r--r--include/trader.h2
-rw-r--r--include/trainer_card.h35
-rw-r--r--include/tv.h40
-rw-r--r--include/window.h6
114 files changed, 14346 insertions, 593 deletions
diff --git a/include/agb_flash.h b/include/agb_flash.h
new file mode 100644
index 000000000..27e45e8fa
--- /dev/null
+++ b/include/agb_flash.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_AGB_FLASH_H
+#define GUARD_AGB_FLASH_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
+
+#endif //GUARD_AGB_FLASH_H
diff --git a/include/bard_music.h b/include/bard_music.h
index 7d9ca633e..9d3d0ad22 100644
--- a/include/bard_music.h
+++ b/include/bard_music.h
@@ -9,7 +9,7 @@ struct BardSound
/*0x00*/ u8 var00;
/*0x01*/ s8 var01;
/*0x02*/ u16 var02;
- /*0x04*/ u16 volume;
+ /*0x04*/ s16 volume;
/*0x06*/ u16 var06;
};
@@ -39,5 +39,7 @@ struct BardSong
// Exported ROM declarations
extern const u16 gUnknown_085F5490;
+const struct BardSound *GetWordSounds(u16 word);
+void GetWordPhonemes(struct BardSong *song, u16 word);
#endif //GUARD_BARD_MUSIC_H
diff --git a/include/battle.h b/include/battle.h
index 5225b72e3..ae8a1c98a 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -3,9 +3,9 @@
// should they be included here or included individually by every file?
#include "constants/battle.h"
+#include "battle_main.h"
#include "battle_util.h"
#include "battle_script_commands.h"
-#include "battle_main.h"
#include "battle_ai_switch_items.h"
#include "battle_gfx_sfx_util.h"
#include "battle_util2.h"
@@ -66,29 +66,14 @@
#define MSG_DISPLAY 0x7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
-#define MOVE_TARGET_SELECTED 0x0
-#define MOVE_TARGET_DEPENDS 0x1
-#define MOVE_TARGET_USER 0x2
-#define MOVE_TARGET_RANDOM 0x4
-#define MOVE_TARGET_x10 0x10
-#define MOVE_TARGET_BOTH 0x8
-#define MOVE_TARGET_FOES_AND_ALLY 0x20
-#define MOVE_TARGET_OPPONENTS_FIELD 0x40
-
-// defines for the u8 array gTypeEffectiveness
-#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
-#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
-#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
-
-// defines for the gTypeEffectiveness multipliers
-#define TYPE_MUL_NO_EFFECT 0
-#define TYPE_MUL_NOT_EFFECTIVE 5
-#define TYPE_MUL_NORMAL 10
-#define TYPE_MUL_SUPER_EFFECTIVE 20
-
-// special type table Ids
-#define TYPE_FORESIGHT 0xFE
-#define TYPE_ENDTABLE 0xFF
+#define MOVE_TARGET_SELECTED 0x0
+#define MOVE_TARGET_DEPENDS 0x1
+#define MOVE_TARGET_USER_OR_SELECTED 0x2
+#define MOVE_TARGET_RANDOM 0x4
+#define MOVE_TARGET_BOTH 0x8
+#define MOVE_TARGET_USER 0x10
+#define MOVE_TARGET_FOES_AND_ALLY 0x20
+#define MOVE_TARGET_OPPONENTS_FIELD 0x40
#define BATTLE_BUFFER_LINK_SIZE 0x1000
@@ -368,6 +353,91 @@ struct BattleResults
u8 catchAttempts[11]; // 0x36
};
+struct BattleTv_Side
+{
+ u32 spikesMonId:3;
+ u32 reflectMonId:3;
+ u32 lightScreenMonId:3;
+ u32 safeguardMonId:3;
+ u32 mistMonId:3;
+ u32 futureSightMonId:3;
+ u32 doomDesireMonId:3;
+ u32 perishSongMonId:3;
+ u32 wishMonId:3;
+ u32 grudgeMonId:3;
+ u32 usedMoveSlot:2;
+ u32 spikesMoveSlot:2;
+ u32 reflectMoveSlot:2;
+ u32 lightScreenMoveSlot:2;
+ u32 safeguardMoveSlot:2;
+ u32 mistMoveSlot:2;
+ u32 futureSightMoveSlot:2;
+ u32 doomDesireMoveSlot:2;
+ u32 perishSongMoveSlot:2;
+ u32 wishMoveSlot:2;
+ u32 grudgeMoveSlot:2;
+ u32 destinyBondMonId:3;
+ u32 destinyBondMoveSlot:2;
+ u32 faintCause:4;
+ u32 faintCauseMonId:3;
+ u32 explosion:1;
+ u32 explosionMoveSlot:2;
+ u32 explosionMonId:3;
+ u32 perishSong:1;
+};
+
+struct BattleTv_Position
+{
+ u32 curseMonId:3;
+ u32 leechSeedMonId:3;
+ u32 nightmareMonId:3;
+ u32 wrapMonId:3;
+ u32 attractMonId:3;
+ u32 confusionMonId:3;
+ u32 curseMoveSlot:2;
+ u32 leechSeedMoveSlot:2;
+ u32 nightmareMoveSlot:2;
+ u32 wrapMoveSlot:2;
+ u32 attractMoveSlot:2;
+ u32 confusionMoveSlot:2;
+ u32 waterSportMoveSlot:2;
+ u32 waterSportMonId:3;
+ u32 mudSportMonId:3;
+ u32 mudSportMoveSlot:2;
+ u32 ingrainMonId:3;
+ u32 ingrainMoveSlot:2;
+ u32 attackedByMonId:3;
+ u32 attackedByMoveSlot:2;
+};
+
+struct BattleTv_Mon
+{
+ u32 psnMonId:3;
+ u32 badPsnMonId:3;
+ u32 brnMonId:3;
+ u32 prlzMonId:3;
+ u32 slpMonId:3;
+ u32 frzMonId:3;
+ u32 psnMoveSlot:2;
+ u32 badPsnMoveSlot:2;
+ u32 brnMoveSlot:2;
+ u32 prlzMoveSlot:2;
+ u32 slpMoveSlot:2;
+ u32 frzMoveSlot:2;
+};
+
+struct BattleTv
+{
+ struct BattleTv_Mon mon[2][6]; // [side][partyId]
+ struct BattleTv_Position pos[2][2]; // [side][flank]
+ struct BattleTv_Side side[2]; // [side]
+};
+
+struct BattleTvMovePoints
+{
+ s16 points[2][PARTY_SIZE * 4];
+};
+
struct BattleStruct
{
u8 turnEffectsTracker;
@@ -447,7 +517,7 @@ struct BattleStruct
u8 field_B0;
u8 hpScale;
u8 synchronizeMoveEffect;
- u8 field_B3;
+ bool8 anyMonHasTransformed;
void (*savedCallback)(void);
u16 usedHeldItems[MAX_BATTLERS_COUNT];
u8 chosenItem[4]; // why is this an u8?
@@ -472,9 +542,9 @@ struct BattleStruct
u8 wishPerishSongBattlerId;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
- u8 field_1A4[96];
- u8 field_204[104];
- u8 field_26C[40];
+ struct BattleTvMovePoints tvMovePoints;
+ struct BattleTv tv;
+ u8 notSureWhatFieldLol[0x28];
u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_298[8];
u8 field_2A0;
@@ -493,6 +563,15 @@ struct BattleStruct
#define IS_MOVE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_MOVE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
+#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
+
+#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
+#define SET_BATTLER_TYPE(battlerId, type) \
+{ \
+ gBattleMons[battlerId].type1 = type; \
+ gBattleMons[battlerId].type2 = type; \
+}
+
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
diff --git a/include/battle_anim.h b/include/battle_anim.h
index aa62db46d..d6d4c05d6 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -47,7 +47,7 @@ extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
-extern u16 gAnimSpeciesByBanks[MAX_BATTLERS_COUNT];
+extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT];
extern u8 gUnknown_02038440;
void ClearBattleAnimationVars(void);
@@ -61,7 +61,7 @@ void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
-s16 sub_80A52EC(s16 a);
+s16 KeepPanInRange(s16 a);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
// battle_anim_80FE840.s
diff --git a/include/battle_frontier_1.h b/include/battle_frontier_1.h
index 5483b28ef..b9c633efc 100644
--- a/include/battle_frontier_1.h
+++ b/include/battle_frontier_1.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_FRONTIER_1_H
bool32 sub_8196094(void);
+void sub_8197080(u8 *);
void sub_8196080(const u8 *str);
#endif // GUARD_BATTLE_FRONTIER_1_H
diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h
index 801c3f3ec..3f8f8049d 100644
--- a/include/battle_frontier_2.h
+++ b/include/battle_frontier_2.h
@@ -6,5 +6,7 @@ void sub_81A895C(void);
u16 sub_81A89A0(u8);
void sub_81A8AF8(void);
bool8 InBattlePike(void);
+void sub_819FA50(void);
+void sub_81AA078(u16*, u8);
#endif // GUARD_BATTLE_FRONTIER_2_H
diff --git a/include/battle_link_817C95C.h b/include/battle_link_817C95C.h
deleted file mode 100644
index cb2cb0b27..000000000
--- a/include/battle_link_817C95C.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_BATTLE_LINK_817C95C_H
-#define GUARD_BATTLE_LINK_817C95C_H
-
-void sub_817C95C(u16 stringId);
-void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
-void sub_817E32C(u8 animationId);
-void sub_817E3F4(void);
-void sub_817F2A8(void);
-u8 GetBattlerMoveSlotId(u8 bank, u16 move);
-
-#endif // GUARD_BATTLE_LINK_817C95C_H
diff --git a/include/battle_main.h b/include/battle_main.h
index d7a522f17..a725b631f 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -1,6 +1,30 @@
#ifndef GUARD_BATTLE_MAIN_H
#define GUARD_BATTLE_MAIN_H
+struct TrainerMoney
+{
+ u8 classId;
+ u8 value;
+};
+
+#define TYPE_NAME_LENGTH 6
+#define ABILITY_NAME_LENGTH 12
+
+// defines for the u8 array gTypeEffectiveness
+#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
+#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
+#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
+
+// defines for the gTypeEffectiveness multipliers
+#define TYPE_MUL_NO_EFFECT 0
+#define TYPE_MUL_NOT_EFFECTIVE 5
+#define TYPE_MUL_NORMAL 10
+#define TYPE_MUL_SUPER_EFFECTIVE 20
+
+// special type table Ids
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
void CB2_InitBattle(void);
void BattleMainCB2(void);
void CB2_QuitRecordedBattle(void);
@@ -42,6 +66,12 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
+extern const u8 gTypeEffectiveness[336];
+extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
+extern const struct TrainerMoney gTrainerMoneyTable[];
+extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1];
+extern const u8 *const gAbilityDescriptionPointers[];
+
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
extern const u8 gStatusConditionString_ParalysisJpn[8];
diff --git a/include/battle_message.h b/include/battle_message.h
index 30ddca469..bf9b590af 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -229,6 +229,63 @@ extern const u8* const gPokeblockWasTooXStringTable[];
extern const u8* const gRefereeStringsTable[];
extern const u8* const gStatNamesTable2[];
+extern const u8 gText_PkmnIsEvolving[];
+extern const u8 gText_CongratsPkmnEvolved[];
+extern const u8 gText_PkmnStoppedEvolving[];
+extern const u8 gText_EllipsisQuestionMark[];
+extern const u8 gText_WhatWillPkmnDo[];
+extern const u8 gText_WhatWillPkmnDo2[];
+extern const u8 gText_WhatWillWallyDo[];
+extern const u8 gText_LinkStandby[];
+extern const u8 gText_BattleMenu[];
+extern const u8 gText_SafariZoneMenu[];
+extern const u8 gText_MoveInterfacePP[];
+extern const u8 gText_MoveInterfaceType[];
+extern const u8 gText_MoveInterfacePpType[];
+extern const u8 gText_MoveInterfaceDynamicColors[];
+extern const u8 gText_WhichMoveToForget4[];
+extern const u8 gText_BattleYesNoChoice[];
+extern const u8 gText_BattleSwitchWhich[];
+extern const u8 gText_BattleSwitchWhich2[];
+extern const u8 gText_BattleSwitchWhich3[];
+extern const u8 gText_BattleSwitchWhich4[];
+extern const u8 gText_BattleSwitchWhich5[];
+extern const u8 gText_SafariBalls[];
+extern const u8 gText_SafariBallLeft[];
+extern const u8 gText_SpaceAndSpace[];
+extern const u8 gText_CommaSpace[];
+extern const u8 gText_Space2[];
+extern const u8 gText_ScrollTextUp[];
+extern const u8 gText_NewLine[];
+extern const u8 gText_Are[];
+extern const u8 gText_Are2[];
+extern const u8 gText_BadEgg[];
+extern const u8 gText_BattleWallyName[];
+extern const u8 gText_Win[];
+extern const u8 gText_Loss[];
+extern const u8 gText_Draw[];
+extern const u8 gText_StatRose[];
+extern const u8 gText_PkmnsStatChanged2[];
+extern const u8 gText_PkmnGettingPumped[];
+extern const u8 gText_PkmnShroudedInMist[];
+extern const u8 gText_PkmnsXPreventsSwitching[];
+extern const u8 gText_TheGreatNewHope[];
+extern const u8 gText_WillChampinshipDreamComeTrue[];
+extern const u8 gText_AFormerChampion[];
+extern const u8 gText_ThePreviousChampion[];
+extern const u8 gText_TheUnbeatenChampion[];
+extern const u8 gText_PlayerMon1Name[];
+extern const u8 gText_Vs[];
+extern const u8 gText_OpponentMon1Name[];
+extern const u8 gText_Mind[];
+extern const u8 gText_Skill[];
+extern const u8 gText_Body[];
+extern const u8 gText_Judgement[];
+extern const u8 gText_EmptyString3[];
+extern const u8 gText_RecordBattleToPass[];
+extern const u8 gText_BattleRecordedOnPass[];
+extern const u8 gText_BattleTourney[];
+
extern const u16 gMissStringIds[];
extern const u16 gTrappingMoves[];
diff --git a/include/battle_records.h b/include/battle_records.h
new file mode 100644
index 000000000..88ff6adc9
--- /dev/null
+++ b/include/battle_records.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_BATTLE_RECORDS_H
+#define GUARD_BATTLE_RECORDS_H
+
+extern u8 gRecordsWindowId;
+
+void ClearPlayerLinkBattleRecords(void);
+void UpdatePlayerLinkBattleRecords(s32 battlerId);
+void ShowLinkBattleRecords(void);
+void RemoveRecordsWindow(void);
+void ShowTrainerHillRecords(void);
+
+#endif // GUARD_BATTLE_RECORDS_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 6c84d1f0f..142ac1f7b 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -4,16 +4,16 @@
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
-void AI_CalcDmg(u8 bankAtk, u8 bankDef);
-u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
+void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
+u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
-u8 GetBattlerTurnOrderNum(u8 bank);
+u8 GetBattlerTurnOrderNum(u8 battlerId);
void SetMoveEffect(bool8 primary, u8 certain);
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
-bool8 UproarWakeUpCheck(u8 bank);
+bool8 UproarWakeUpCheck(u8 battlerId);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const u8 gUnknown_0831C494[][4];
diff --git a/include/battle_tv.h b/include/battle_tv.h
new file mode 100644
index 000000000..72466d73b
--- /dev/null
+++ b/include/battle_tv.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_BATTLE_TV_H
+#define GUARD_BATTLE_TV_H
+
+void BattleTv_SetDataBasedOnString(u16 stringId);
+void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
+void BattleTv_SetDataBasedOnAnimation(u8 animationId);
+void TryPutLinkBattleTvShowOnAir(void);
+void BattleTv_ClearExplosionFaintCause(void);
+u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId);
+
+#endif // GUARD_BATTLE_TV_H
diff --git a/include/battle_util.h b/include/battle_util.h
index d992faa47..e5c1aaf18 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -49,36 +49,36 @@ void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
void MarkAllBattlersForControllerExec(void); // unused
-void MarkBattlerForControllerExec(u8 bank);
+void MarkBattlerForControllerExec(u8 battlerId);
void sub_803F850(u8 arg0);
-void CancelMultiTurnMoves(u8 bank);
-bool8 WasUnableToUseMove(u8 bank);
-void PrepareStringBattle(u16 stringId, u8 bank);
+void CancelMultiTurnMoves(u8 battlerId);
+bool8 WasUnableToUseMove(u8 battlerId);
+void PrepareStringBattle(u16 stringId, u8 battlerId);
void ResetSentPokesToOpponentValue(void);
-void sub_803F9EC(u8 bank);
-void sub_803FA70(u8 bank);
+void sub_803F9EC(u8 battlerId);
+void sub_803FA70(u8 battlerId);
void BattleScriptPush(const u8* bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
u8 TrySetCantSelectMoveBattleScript(void);
-u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
+u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check);
bool8 AreAllMovesUnusable(void);
-u8 GetImprisonedMovesCount(u8 bank, u16 move);
+u8 GetImprisonedMovesCount(u8 battlerId, u16 move);
u8 UpdateTurnCounters(void);
u8 TurnBasedEffects(void);
bool8 HandleWishPerishSongOnTurnEnd(void);
bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
-bool8 sub_80423F4(u8 bank, u8 r1, u8 r2);
-u8 CastformDataTypeChange(u8 bank);
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
+bool8 sub_80423F4(u8 battlerId, u8 r1, u8 r2);
+u8 CastformDataTypeChange(u8 battlerId);
+u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u8 ability, u8 special, u16 moveArg);
void BattleScriptExecute(const u8* BS_ptr);
void BattleScriptPushCursorAndCallback(const u8* BS_ptr);
-u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
-void ClearFuryCutterDestinyBondGrudge(u8 bank);
+u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn);
+void ClearFuryCutterDestinyBondGrudge(u8 battlerId);
void HandleAction_RunBattleScript(void);
-u8 GetMoveTarget(u16 move, u8 useMoveTarget);
+u8 GetMoveTarget(u16 move, u8 setTarget);
u8 IsMonDisobedient(void);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/bg.h b/include/bg.h
index de3897fa4..ea84c1573 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -68,7 +68,7 @@ void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
-void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height);
+void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
diff --git a/include/bike.h b/include/bike.h
index e625ad438..46b668169 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -63,6 +63,10 @@ enum
ACRO_TRANS_WHEELIE_LOWERING_MOVING,
};
+// Exported RAM declarations
+extern bool8 gUnusedBikeCameraAheadPanback;
+
+// Exported ROM declarations
void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys);
void Bike_TryAcroBikeHistoryUpdate(u16 newKeys, u16 heldKeys);
bool8 RS_IsRunningDisallowed(u8 tile);
diff --git a/include/blit.h b/include/blit.h
new file mode 100644
index 000000000..e7f384cc8
--- /dev/null
+++ b/include/blit.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_BLIT_H
+#define GUARD_BLIT_H
+
+void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
+void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
+void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
+void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
+void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
+
+#endif // GUARD_BLIT_H
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
new file mode 100644
index 000000000..d4c5a24d8
--- /dev/null
+++ b/include/braille_puzzles.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_BRAILLE_PUZZLES_H
+#define GUARD_BRAILLE_PUZZLES_H
+
+bool8 ShouldDoBrailleFlyEffect(void);
+bool8 ShouldDoBrailleStrengthEffect(void);
+bool8 ShouldDoBrailleDigEffect(void);
+void DoBrailleDigEffect(void);
+void sub_8179918(void);
+void sub_8179834(void);
+
+#endif // GUARD_BRAILLE_PUZZLES_H
diff --git a/include/calculate_base_damage.h b/include/calculate_base_damage.h
deleted file mode 100644
index e9146c188..000000000
--- a/include/calculate_base_damage.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GUARD_CALCULATE_BASE_DAMAGE_H
-#define GUARD_CALCULATE_BASE_DAMAGE_H
-
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
-
-#endif // GUARD_CALCULATE_BASE_DAMAGE_H
diff --git a/include/clock.h b/include/clock.h
index 4e6560c91..aa179bf6f 100644
--- a/include/clock.h
+++ b/include/clock.h
@@ -5,4 +5,4 @@
void DoTimeBasedEvents(void);
-#endif
+#endif // GUARD_CLOCK_H
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
index 1b59f2f64..b54f01353 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -151,7 +151,7 @@
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
-#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLARBEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
index 0390f17f4..a1a4ed50a 100644
--- a/include/constants/battle_script_commands.h
+++ b/include/constants/battle_script_commands.h
@@ -92,6 +92,6 @@
#define ATK48_STAT_NEGATIVE 0x1
#define ATK48_STAT_BY_TWO 0x2
#define ATK48_BIT_x4 0x4
-#define ATK48_LOWER_FAIL_CHECK 0x8
+#define ATK48_DONT_CHECK_LOWER 0x8
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/constants/decorations.h b/include/constants/decorations.h
index 2e3558721..b9f626d24 100644
--- a/include/constants/decorations.h
+++ b/include/constants/decorations.h
@@ -122,5 +122,6 @@
#define DECOR_REGIROCK_DOLL 118
#define DECOR_REGICE_DOLL 119
#define DECOR_REGISTEEL_DOLL 120
+#define NUM_DECORATIONS DECOR_REGISTEEL_DOLL
#endif // GUARD_CONSTANTS_DECORATIONS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 63e053cbd..641d74f19 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -91,7 +91,7 @@
#define FLAG_0x058 0x58
#define FLAG_0x059 0x59
#define FLAG_0x05A 0x5A
-#define FLAG_0x05B 0x5B
+#define FLAG_WATTSON_REMATCH_AVAILABLE 0x5B
#define FLAG_0x05C 0x5C
#define FLAG_0x05D 0x5D
#define FLAG_0x05E 0x5E
@@ -208,8 +208,8 @@
#define FLAG_0x0CD 0xCD
#define FLAG_0x0CE 0xCE
#define FLAG_0x0CF 0xCF
-#define FLAG_0x0D0 0xD0
-#define FLAG_0x0D1 0xD1
+#define FLAG_GOT_BASEMENT_KEY_FROM_WATTSON 0xD0
+#define FLAG_GOT_TM24_FROM_WATTSON 0xD1
#define FLAG_0x0D2 0xD2
#define FLAG_0x0D3 0xD3
#define FLAG_0x0D4 0xD4
@@ -348,6 +348,7 @@
#define FLAG_0x159 0x159
#define FLAG_0x15A 0x15A
#define FLAG_0x15B 0x15B
+
#define FLAG_MATCH_CALL_REGISTERED 0x15C
#define FLAG_0x15D 0x15D
#define FLAG_0x15E 0x15E
@@ -912,8 +913,8 @@
#define FLAG_0x38D 0x38D
#define FLAG_0x38E 0x38E
#define FLAG_0x38F 0x38F
-#define FLAG_0x390 0x390
-#define FLAG_0x391 0x391
+#define FLAG_SPRITEVIS_MAUVILLE_CITY_WATTSON 0x390
+#define FLAG_SPRITEVIS_MAUVILLE_GYM_WATTSON 0x391
#define FLAG_0x392 0x392
#define FLAG_0x393 0x393
#define FLAG_0x394 0x394
@@ -961,7 +962,7 @@
#define FLAG_0x3BE 0x3BE
#define FLAG_0x3BF 0x3BF
#define FLAG_0x3C0 0x3C0
-#define FLAG_0x3C1 0x3C1
+#define FLAG_SPRITEVIS_SLATEPORT_MUSEUM_POPULATION 0x3C1
#define FLAG_0x3C2 0x3C2
#define FLAG_0x3C3 0x3C3
#define FLAG_0x3C4 0x3C4
diff --git a/include/constants/game_stat.h b/include/constants/game_stat.h
index b1f3d4197..7ebf3501b 100644
--- a/include/constants/game_stat.h
+++ b/include/constants/game_stat.h
@@ -51,9 +51,10 @@
#define GAME_STAT_USED_DAYCARE 47
#define GAME_STAT_RODE_CABLE_CAR 48
#define GAME_STAT_ENTERED_HOT_SPRINGS 49
+#define GAME_STAT_50 50
+#define GAME_STAT_51 51
-/*TODO: add new stats added in Emerald*/
-
+#define NUM_USED_GAME_STATS 52
#define NUM_GAME_STATS 64
#endif // GUARD_CONSTANTS_GAME_STAT_H
diff --git a/include/constants/items.h b/include/constants/items.h
index ca6fdbf64..4ca5cb7df 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -108,6 +108,8 @@
#define ITEM_064 100
#define ITEM_065 101
#define ITEM_066 102
+
+// Unusable
#define ITEM_TINY_MUSHROOM 103
#define ITEM_BIG_MUSHROOM 104
#define ITEM_069 105
@@ -126,6 +128,8 @@
#define ITEM_076 118
#define ITEM_077 119
#define ITEM_078 120
+
+// Mails
#define ITEM_ORANGE_MAIL 121
#define ITEM_HARBOR_MAIL 122
#define ITEM_GLITTER_MAIL 123
@@ -138,6 +142,8 @@
#define ITEM_DREAM_MAIL 130
#define ITEM_FAB_MAIL 131
#define ITEM_RETRO_MAIL 132
+
+// Berries
#define ITEM_CHERI_BERRY 133
#define ITEM_CHESTO_BERRY 134
#define ITEM_PECHA_BERRY 135
@@ -185,7 +191,7 @@
#define ITEM_0B1 177
#define ITEM_0B2 178
-// hold items
+// Battle Held items
#define ITEM_BRIGHT_POWDER 179
#define ITEM_WHITE_HERB 180
#define ITEM_MACHO_BRACE 181
@@ -261,6 +267,8 @@
#define ITEM_0FB 251
#define ITEM_0FC 252
#define ITEM_0FD 253
+
+// Contest held items
#define ITEM_RED_SCARF 254
#define ITEM_BLUE_SCARF 255
#define ITEM_PINK_SCARF 256
@@ -464,4 +472,7 @@
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
+// Check if the item is one that can be used on a Pokemon.
+#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/rgb.h b/include/constants/rgb.h
index 8b323799f..fd9c5c5a7 100644
--- a/include/constants/rgb.h
+++ b/include/constants/rgb.h
@@ -12,5 +12,6 @@
#define RGB_YELLOW RGB(31, 31, 0)
#define RGB_MAGENTA RGB(31, 0, 31)
#define RGB_CYAN RGB(0, 31, 31)
+#define RGB_WHITEALPHA RGB_WHITE | 0x8000
#endif // GUARD_RGB_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
index 48d4f081e..a017b6975 100644
--- a/include/constants/trainers.h
+++ b/include/constants/trainers.h
@@ -956,13 +956,13 @@
#define FACILITY_CLASS_HIKER 0x0
#define FACILITY_CLASS_TEAM_AQUA_1 0x1
#define FACILITY_CLASS_PKMN_BREEDER_1 0x2
-#define FACILITY_CLASS_COOLTRAINER_1 0x3
+#define FACILITY_CLASS_COOLTRAINER_M 0x3
#define FACILITY_CLASS_BIRD_KEEPER 0x4
#define FACILITY_CLASS_COLLECTOR 0x5
#define FACILITY_CLASS_TEAM_AQUA_2 0x6
#define FACILITY_CLASS_SWIMMER_M 0x7
#define FACILITY_CLASS_TEAM_MAGMA_1 0x8
-#define FACILITY_CLASS_EXPERT_1 0x9
+#define FACILITY_CLASS_EXPERT_M 0x9
#define FACILITY_CLASS_BLACK_BELT 0xa
#define FACILITY_CLASS_AQUA_LEADER 0xb
#define FACILITY_CLASS_HEX_MANIAC 0xc
@@ -971,7 +971,7 @@
#define FACILITY_CLASS_INTERVIEWER 0xf
#define FACILITY_CLASS_TUBER_1 0x10
#define FACILITY_CLASS_TUBER_2 0x11
-#define FACILITY_CLASS_COOLTRAINER_2 0x12
+#define FACILITY_CLASS_COOLTRAINER_F 0x12
#define FACILITY_CLASS_LADY 0x13
#define FACILITY_CLASS_BEAUTY 0x14
#define FACILITY_CLASS_RICH_BOY 0x15
@@ -983,16 +983,16 @@
#define FACILITY_CLASS_CAMPER 0x1b
#define FACILITY_CLASS_PICNICKER 0x1c
#define FACILITY_CLASS_BUG_MANIAC 0x1d
-#define FACILITY_CLASS_PSYCHIC_1 0x1e
-#define FACILITY_CLASS_PSYCHIC_2 0x1f
+#define FACILITY_CLASS_PSYCHIC_M 0x1e
+#define FACILITY_CLASS_PSYCHIC_F 0x1f
#define FACILITY_CLASS_GENTLEMAN 0x20
#define FACILITY_CLASS_ELITE_FOUR_1 0x21
#define FACILITY_CLASS_ELITE_FOUR_2 0x22
#define FACILITY_CLASS_LEADER_1 0x23
#define FACILITY_CLASS_LEADER_2 0x24
#define FACILITY_CLASS_LEADER_3 0x25
-#define FACILITY_CLASS_SCHOOL_KID_1 0x26
-#define FACILITY_CLASS_SCHOOL_KID_2 0x27
+#define FACILITY_CLASS_SCHOOL_KID_M 0x26
+#define FACILITY_CLASS_SCHOOL_KID_F 0x27
#define FACILITY_CLASS_SR_AND_JR 0x28
#define FACILITY_CLASS_POKEFAN_1 0x29
#define FACILITY_CLASS_POKEFAN_2 0x2a
@@ -1013,28 +1013,28 @@
#define FACILITY_CLASS_TWINS 0x39
#define FACILITY_CLASS_SAILOR 0x3a
#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b
-#define FACILITY_CLASS_PKMN_TRAINER_2 0x3c
+#define FACILITY_CLASS_PKMN_TRAINER_MAY 0x3c
#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d
#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e
-#define FACILITY_CLASS_PKMN_TRAINER_5 0x3f
+#define FACILITY_CLASS_PKMN_TRAINER_BRENDAN 0x3f
#define FACILITY_CLASS_PKMN_TRAINER_6 0x40
#define FACILITY_CLASS_PKMN_TRAINER_7 0x41
#define FACILITY_CLASS_PKMN_BREEDER_2 0x42
#define FACILITY_CLASS_BUG_CATCHER 0x43
-#define FACILITY_CLASS_PKMN_RANGER_1 0x44
-#define FACILITY_CLASS_PKMN_RANGER_2 0x45
+#define FACILITY_CLASS_PKMN_RANGER_M 0x44
+#define FACILITY_CLASS_PKMN_RANGER_F 0x45
#define FACILITY_CLASS_MAGMA_LEADER 0x46
#define FACILITY_CLASS_LASS 0x47
#define FACILITY_CLASS_YOUNG_COUPLE 0x48
#define FACILITY_CLASS_OLD_COUPLE 0x49
#define FACILITY_CLASS_SIS_AND_BRO 0x4a
-#define FACILITY_CLASS_PKMN_TRAINER_8 0x4b
+#define FACILITY_CLASS_PKMN_TRAINER_STEVEN 0x4b
#define FACILITY_CLASS_SALON_MAIDEN 0x4c
#define FACILITY_CLASS_DOME_ACE 0x4d
-#define FACILITY_CLASS_PKMN_TRAINER_9 0x4e
-#define FACILITY_CLASS_PKMN_TRAINER_10 0x4f
-#define FACILITY_CLASS_PKMN_TRAINER_11 0x50
-#define FACILITY_CLASS_PKMN_TRAINER_12 0x51
+#define FACILITY_CLASS_PKMN_TRAINER_RED 0x4e
+#define FACILITY_CLASS_PKMN_TRAINER_LEAF 0x4f
+#define FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN 0x50
+#define FACILITY_CLASS_PKMN_TRAINER_RS_MAY 0x51
#define TRAINER_CLASS_PKMN_TRAINER_1 0x0
#define TRAINER_CLASS_PKMN_TRAINER_2 0x1
diff --git a/include/constants/vars.h b/include/constants/vars.h
index c0e3313b6..be21f1730 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -184,7 +184,7 @@
#define VAR_0x40B0 0x40B0
#define VAR_0x40B1 0x40B1
#define VAR_0x40B2 0x40B2
-#define VAR_0x40B3 0x40B3
+#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
#define VAR_PORTHOLE 0x40B4
#define VAR_0x40B5 0x40B5
#define VAR_0x40B6 0x40B6
diff --git a/include/credits.h b/include/credits.h
new file mode 100644
index 000000000..faad1058a
--- /dev/null
+++ b/include/credits.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_CREDITS_H
+#define GUARD_CREDITS_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+extern EWRAM_DATA bool8 gHasHallOfFameRecords;
+
+// Exported ROM declarations
+
+#endif //GUARD_CREDITS_H
diff --git a/include/crt0.h b/include/crt0.h
new file mode 100644
index 000000000..3121eeaed
--- /dev/null
+++ b/include/crt0.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_CRT0_H
+#define GUARD_CRT0_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+extern u32 IntrMain[];
+
+#endif //GUARD_CRT0_H
diff --git a/include/data/battle_moves.h b/include/data/battle_moves.h
new file mode 100644
index 000000000..6489fe07f
--- /dev/null
+++ b/include/data/battle_moves.h
@@ -0,0 +1,3913 @@
+#ifndef GUARD_DATA_BATTLE_MOVES
+#define GUARD_DATA_BATTLE_MOVES
+
+const struct BattleMove gBattleMoves[LAST_MOVE_INDEX + 1] =
+{
+ { // MOVE_NONE
+ .effect = EFFECT_HIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 0,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_POUND
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_KARATE_CHOP
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 50,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DOUBLE_SLAP
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_COMET_PUNCH
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MEGA_PUNCH
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_PAY_DAY
+ .effect = EFFECT_PAY_DAY,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FIRE_PUNCH
+ .effect = EFFECT_BURN_HIT,
+ .power = 75,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ICE_PUNCH
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 75,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_THUNDER_PUNCH
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 75,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SCRATCH
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_VICE_GRIP
+ .effect = EFFECT_HIT,
+ .power = 55,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_GUILLOTINE
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_RAZOR_WIND
+ .effect = EFFECT_RAZOR_WIND,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWORDS_DANCE
+ .effect = EFFECT_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_CUT
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_GUST
+ .effect = EFFECT_GUST,
+ .power = 40,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_WING_ATTACK
+ .effect = EFFECT_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_WHIRLWIND
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FLY
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 70,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BIND
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SLAM
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_VINE_WHIP
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_STOMP
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DOUBLE_KICK
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 30,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MEGA_KICK
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_JUMP_KICK
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ROLLING_KICK
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SAND_ATTACK
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HEADBUTT
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HORN_ATTACK
+ .effect = EFFECT_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FURY_ATTACK
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_HORN_DRILL
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_TACKLE
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BODY_SLAM
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 85,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WRAP
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TAKE_DOWN
+ .effect = EFFECT_RECOIL,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_THRASH
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DOUBLE_EDGE
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TAIL_WHIP
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_POISON_STING
+ .effect = EFFECT_POISON_HIT,
+ .power = 15,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_TWINEEDLE
+ .effect = EFFECT_TWINEEDLE,
+ .power = 25,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PIN_MISSILE
+ .effect = EFFECT_MULTI_HIT,
+ .power = 14,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_LEER
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BITE
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_GROWL
+ .effect = EFFECT_ATTACK_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ROAR
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SING
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SUPERSONIC
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SONIC_BOOM
+ .effect = EFFECT_SONICBOOM,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DISABLE
+ .effect = EFFECT_DISABLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ACID
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 40,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_EMBER
+ .effect = EFFECT_BURN_HIT,
+ .power = 40,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FLAMETHROWER
+ .effect = EFFECT_BURN_HIT,
+ .power = 95,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MIST
+ .effect = EFFECT_MIST,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_WATER_GUN
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_HYDRO_PUMP
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_WATER,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SURF
+ .effect = EFFECT_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ICE_BEAM
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 95,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BLIZZARD
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 120,
+ .type = TYPE_ICE,
+ .accuracy = 70,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PSYBEAM
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 65,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BUBBLE_BEAM
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_AURORA_BEAM
+ .effect = EFFECT_ATTACK_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HYPER_BEAM
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_PECK
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DRILL_PECK
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SUBMISSION
+ .effect = EFFECT_RECOIL,
+ .power = 80,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_LOW_KICK
+ .effect = EFFECT_LOW_KICK,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_COUNTER
+ .effect = EFFECT_COUNTER,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SEISMIC_TOSS
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_STRENGTH
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ABSORB
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MEGA_DRAIN
+ .effect = EFFECT_ABSORB,
+ .power = 40,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_LEECH_SEED
+ .effect = EFFECT_LEECH_SEED,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_GROWTH
+ .effect = EFFECT_SPECIAL_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_RAZOR_LEAF
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_GRASS,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SOLAR_BEAM
+ .effect = EFFECT_SOLARBEAM,
+ .power = 120,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_POISON_POWDER
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 75,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_STUN_SPORE
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SLEEP_POWDER
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PETAL_DANCE
+ .effect = EFFECT_RAMPAGE,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_STRING_SHOT
+ .effect = EFFECT_SPEED_DOWN,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DRAGON_RAGE
+ .effect = EFFECT_DRAGON_RAGE,
+ .power = 1,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FIRE_SPIN
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_FIRE,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_THUNDER_SHOCK
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 40,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_THUNDERBOLT
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 95,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_THUNDER_WAVE
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_THUNDER
+ .effect = EFFECT_THUNDER,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 70,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ROCK_THROW
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_EARTHQUAKE
+ .effect = EFFECT_EARTHQUAKE,
+ .power = 100,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FISSURE
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DIG
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TOXIC
+ .effect = EFFECT_TOXIC,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_CONFUSION
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 50,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PSYCHIC
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 90,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HYPNOSIS
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 60,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MEDITATE
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_AGILITY
+ .effect = EFFECT_SPEED_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_QUICK_ATTACK
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_RAGE
+ .effect = EFFECT_RAGE,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TELEPORT
+ .effect = EFFECT_TELEPORT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_NIGHT_SHADE
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MIMIC
+ .effect = EFFECT_MIMIC,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_SCREECH
+ .effect = EFFECT_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DOUBLE_TEAM
+ .effect = EFFECT_EVASION_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_RECOVER
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_HARDEN
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_MINIMIZE
+ .effect = EFFECT_MINIMIZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SMOKESCREEN
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_CONFUSE_RAY
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WITHDRAW
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_DEFENSE_CURL
+ .effect = EFFECT_DEFENSE_CURL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_BARRIER
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_LIGHT_SCREEN
+ .effect = EFFECT_LIGHT_SCREEN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_HAZE
+ .effect = EFFECT_HAZE,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_REFLECT
+ .effect = EFFECT_REFLECT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_FOCUS_ENERGY
+ .effect = EFFECT_FOCUS_ENERGY,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_BIDE
+ .effect = EFFECT_BIDE,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_METRONOME
+ .effect = EFFECT_METRONOME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_MIRROR_MOVE
+ .effect = EFFECT_MIRROR_MOVE,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_SELF_DESTRUCT
+ .effect = EFFECT_EXPLOSION,
+ .power = 200,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_EGG_BOMB
+ .effect = EFFECT_HIT,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_LICK
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 20,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SMOG
+ .effect = EFFECT_POISON_HIT,
+ .power = 20,
+ .type = TYPE_POISON,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 40,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SLUDGE
+ .effect = EFFECT_POISON_HIT,
+ .power = 65,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BONE_CLUB
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 65,
+ .type = TYPE_GROUND,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FIRE_BLAST
+ .effect = EFFECT_BURN_HIT,
+ .power = 120,
+ .type = TYPE_FIRE,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WATERFALL
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CLAMP
+ .effect = EFFECT_TRAP,
+ .power = 35,
+ .type = TYPE_WATER,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWIFT
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SKULL_BASH
+ .effect = EFFECT_SKULL_BASH,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SPIKE_CANNON
+ .effect = EFFECT_MULTI_HIT,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CONSTRICT
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 10,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_AMNESIA
+ .effect = EFFECT_SPECIAL_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_KINESIS
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SOFT_BOILED
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HI_JUMP_KICK
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_GLARE
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DREAM_EATER
+ .effect = EFFECT_DREAM_EATER,
+ .power = 100,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_POISON_GAS
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 55,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BARRAGE
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_LEECH_LIFE
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_LOVELY_KISS
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SKY_ATTACK
+ .effect = EFFECT_SKY_ATTACK,
+ .power = 140,
+ .type = TYPE_FLYING,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TRANSFORM
+ .effect = EFFECT_TRANSFORM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_BUBBLE
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DIZZY_PUNCH
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SPORE
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FLASH
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PSYWAVE
+ .effect = EFFECT_PSYWAVE,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SPLASH
+ .effect = EFFECT_SPLASH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ACID_ARMOR
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_CRABHAMMER
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 90,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_EXPLOSION
+ .effect = EFFECT_EXPLOSION,
+ .power = 250,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FURY_SWIPES
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BONEMERANG
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 50,
+ .type = TYPE_GROUND,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_REST
+ .effect = EFFECT_REST,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_ROCK_SLIDE
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 75,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HYPER_FANG
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SHARPEN
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_CONVERSION
+ .effect = EFFECT_CONVERSION,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_TRI_ATTACK
+ .effect = EFFECT_TRI_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SUPER_FANG
+ .effect = EFFECT_SUPER_FANG,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SLASH
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SUBSTITUTE
+ .effect = EFFECT_SUBSTITUTE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_STRUGGLE
+ .effect = EFFECT_RECOIL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SKETCH
+ .effect = EFFECT_SKETCH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_TRIPLE_KICK
+ .effect = EFFECT_TRIPLE_KICK,
+ .power = 10,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_THIEF
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SPIDER_WEB
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MIND_READER
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_NIGHTMARE
+ .effect = EFFECT_NIGHTMARE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FLAME_WHEEL
+ .effect = EFFECT_THAW_HIT,
+ .power = 60,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SNORE
+ .effect = EFFECT_SNORE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CURSE
+ .effect = EFFECT_CURSE,
+ .power = 0,
+ .type = TYPE_MYSTERY,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_FLAIL
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CONVERSION_2
+ .effect = EFFECT_CONVERSION_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_AEROBLAST
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_COTTON_SPORE
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_REVERSAL
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SPITE
+ .effect = EFFECT_SPITE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_POWDER_SNOW
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 40,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PROTECT
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+ { // MOVE_MACH_PUNCH
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SCARY_FACE
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FAINT_ATTACK
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWEET_KISS
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BELLY_DRUM
+ .effect = EFFECT_BELLY_DRUM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SLUDGE_BOMB
+ .effect = EFFECT_POISON_HIT,
+ .power = 90,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MUD_SLAP
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_OCTAZOOKA
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SPIKES
+ .effect = EFFECT_SPIKES,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_OPPONENTS_FIELD,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ZAP_CANNON
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 100,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FORESIGHT
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DESTINY_BOND
+ .effect = EFFECT_DESTINY_BOND,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_PERISH_SONG
+ .effect = EFFECT_PERISH_SONG,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ICY_WIND
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_ICE,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DETECT
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+ { // MOVE_BONE_RUSH
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_GROUND,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_LOCK_ON
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_OUTRAGE
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SANDSTORM
+ .effect = EFFECT_SANDSTORM,
+ .power = 0,
+ .type = TYPE_ROCK,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_GIGA_DRAIN
+ .effect = EFFECT_ABSORB,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ENDURE
+ .effect = EFFECT_ENDURE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+ { // MOVE_CHARM
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ROLLOUT
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FALSE_SWIPE
+ .effect = EFFECT_FALSE_SWIPE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWAGGER
+ .effect = EFFECT_SWAGGER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MILK_DRINK
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SPARK
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 65,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FURY_CUTTER
+ .effect = EFFECT_FURY_CUTTER,
+ .power = 10,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_STEEL_WING
+ .effect = EFFECT_DEFENSE_UP_HIT,
+ .power = 70,
+ .type = TYPE_STEEL,
+ .accuracy = 90,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MEAN_LOOK
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ATTRACT
+ .effect = EFFECT_ATTRACT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SLEEP_TALK
+ .effect = EFFECT_SLEEP_TALK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_HEAL_BELL
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_RETURN
+ .effect = EFFECT_RETURN,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_PRESENT
+ .effect = EFFECT_PRESENT,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FRUSTRATION
+ .effect = EFFECT_FRUSTRATION,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SAFEGUARD
+ .effect = EFFECT_SAFEGUARD,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_PAIN_SPLIT
+ .effect = EFFECT_PAIN_SPLIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SACRED_FIRE
+ .effect = EFFECT_THAW_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MAGNITUDE
+ .effect = EFFECT_MAGNITUDE,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DYNAMIC_PUNCH
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MEGAHORN
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DRAGON_BREATH
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 60,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BATON_PASS
+ .effect = EFFECT_BATON_PASS,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ENCORE
+ .effect = EFFECT_ENCORE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PURSUIT
+ .effect = EFFECT_PURSUIT,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_RAPID_SPIN
+ .effect = EFFECT_RAPID_SPIN,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWEET_SCENT
+ .effect = EFFECT_EVASION_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_IRON_TAIL
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_METAL_CLAW
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 50,
+ .type = TYPE_STEEL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_VITAL_THROW
+ .effect = EFFECT_VITAL_THROW,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MORNING_SUN
+ .effect = EFFECT_MORNING_SUN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SYNTHESIS
+ .effect = EFFECT_SYNTHESIS,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_MOONLIGHT
+ .effect = EFFECT_MOONLIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_HIDDEN_POWER
+ .effect = EFFECT_HIDDEN_POWER,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CROSS_CHOP
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_TWISTER
+ .effect = EFFECT_TWISTER,
+ .power = 40,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_RAIN_DANCE
+ .effect = EFFECT_RAIN_DANCE,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_SUNNY_DAY
+ .effect = EFFECT_SUNNY_DAY,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_CRUNCH
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MIRROR_COAT
+ .effect = EFFECT_MIRROR_COAT,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_PSYCH_UP
+ .effect = EFFECT_PSYCH_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_EXTREME_SPEED
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ANCIENT_POWER
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_ROCK,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SHADOW_BALL
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FUTURE_SIGHT
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ROCK_SMASH
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WHIRLPOOL
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_WATER,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BEAT_UP
+ .effect = EFFECT_BEAT_UP,
+ .power = 10,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FAKE_OUT
+ .effect = EFFECT_FAKE_OUT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_UPROAR
+ .effect = EFFECT_UPROAR,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_STOCKPILE
+ .effect = EFFECT_STOCKPILE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SPIT_UP
+ .effect = EFFECT_SPIT_UP,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SWALLOW
+ .effect = EFFECT_SWALLOW,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_HEAT_WAVE
+ .effect = EFFECT_BURN_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HAIL
+ .effect = EFFECT_HAIL,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_TORMENT
+ .effect = EFFECT_TORMENT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FLATTER
+ .effect = EFFECT_FLATTER,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WILL_O_WISP
+ .effect = EFFECT_WILL_O_WISP,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MEMENTO
+ .effect = EFFECT_MEMENTO,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FACADE
+ .effect = EFFECT_FACADE,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FOCUS_PUNCH
+ .effect = EFFECT_FOCUS_PUNCH,
+ .power = 150,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -3,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_SMELLING_SALT
+ .effect = EFFECT_SMELLINGSALT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FOLLOW_ME
+ .effect = EFFECT_FOLLOW_ME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 3,
+ .flags = 0,
+ },
+ { // MOVE_NATURE_POWER
+ .effect = EFFECT_NATURE_POWER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_CHARGE
+ .effect = EFFECT_CHARGE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_TAUNT
+ .effect = EFFECT_TAUNT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_HELPING_HAND
+ .effect = EFFECT_HELPING_HAND,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 5,
+ .flags = 0,
+ },
+ { // MOVE_TRICK
+ .effect = EFFECT_TRICK,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ROLE_PLAY
+ .effect = EFFECT_ROLE_PLAY,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_WISH
+ .effect = EFFECT_WISH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_ASSIST
+ .effect = EFFECT_ASSIST,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_INGRAIN
+ .effect = EFFECT_INGRAIN,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_SUPERPOWER
+ .effect = EFFECT_SUPERPOWER,
+ .power = 120,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MAGIC_COAT
+ .effect = EFFECT_MAGIC_COAT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = 0,
+ },
+ { // MOVE_RECYCLE
+ .effect = EFFECT_RECYCLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_REVENGE
+ .effect = EFFECT_REVENGE,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -4,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BRICK_BREAK
+ .effect = EFFECT_BRICK_BREAK,
+ .power = 75,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_YAWN
+ .effect = EFFECT_YAWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_KNOCK_OFF
+ .effect = EFFECT_KNOCK_OFF,
+ .power = 20,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ENDEAVOR
+ .effect = EFFECT_ENDEAVOR,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ERUPTION
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SKILL_SWAP
+ .effect = EFFECT_SKILL_SWAP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_IMPRISON
+ .effect = EFFECT_IMPRISON,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_REFRESH
+ .effect = EFFECT_REFRESH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_GRUDGE
+ .effect = EFFECT_GRUDGE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SNATCH
+ .effect = EFFECT_SNATCH,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SECRET_POWER
+ .effect = EFFECT_SECRET_POWER,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_DIVE
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ARM_THRUST
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_CAMOUFLAGE
+ .effect = EFFECT_CAMOUFLAGE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_TAIL_GLOW
+ .effect = EFFECT_SPECIAL_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_LUSTER_PURGE
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MIST_BALL
+ .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_FEATHER_DANCE
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_TEETER_DANCE
+ .effect = EFFECT_TEETER_DANCE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+ { // MOVE_BLAZE_KICK
+ .effect = EFFECT_BLAZE_KICK,
+ .power = 85,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MUD_SPORT
+ .effect = EFFECT_MUD_SPORT,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_ICE_BALL
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ICE,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_NEEDLE_ARM
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SLACK_OFF
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_HYPER_VOICE
+ .effect = EFFECT_HIT,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_POISON_FANG
+ .effect = EFFECT_POISON_FANG,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_CRUSH_CLAW
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 75,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_BLAST_BURN
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_HYDRO_CANNON
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_METEOR_MASH
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ASTONISH
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 30,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_WEATHER_BALL
+ .effect = EFFECT_WEATHER_BALL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_AROMATHERAPY
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_FAKE_TEARS
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_AIR_CUTTER
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_OVERHEAT
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ODOR_SLEUTH
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_ROCK_TOMB
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SILVER_WIND
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_METAL_SOUND
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_GRASS_WHISTLE
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_TICKLE
+ .effect = EFFECT_TICKLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_COSMIC_POWER
+ .effect = EFFECT_COSMIC_POWER,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_WATER_SPOUT
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SIGNAL_BEAM
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 75,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SHADOW_PUNCH
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_EXTRASENSORY
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_SKY_UPPERCUT
+ .effect = EFFECT_SKY_UPPERCUT,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SAND_TOMB
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_GROUND,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SHEER_COLD
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_ICE,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_MUDDY_WATER
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BULLET_SEED
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_AERIAL_ACE
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_ICICLE_SPEAR
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_IRON_DEFENSE
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_BLOCK
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_HOWL
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_DRAGON_CLAW
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_FRENZY_PLANT
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_BULK_UP
+ .effect = EFFECT_BULK_UP,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_BOUNCE
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 85,
+ .type = TYPE_FLYING,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MUD_SHOT
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_GROUND,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_POISON_TAIL
+ .effect = EFFECT_POISON_TAIL,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_COVET
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+ { // MOVE_VOLT_TACKLE
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_MAGICAL_LEAF
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_WATER_SPORT
+ .effect = EFFECT_WATER_SPORT,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_CALM_MIND
+ .effect = EFFECT_CALM_MIND,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_LEAF_BLADE
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DRAGON_DANCE
+ .effect = EFFECT_DRAGON_DANCE,
+ .power = 0,
+ .type = TYPE_DRAGON,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+ { // MOVE_ROCK_BLAST
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_SHOCK_WAVE
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_WATER_PULSE
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+ { // MOVE_DOOM_DESIRE
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 120,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+ { // MOVE_PSYCHO_BOOST
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+};
+
+#endif // GUARD_DATA_BATTLE_MOVES
diff --git a/include/data/item_icon_table.h b/include/data/item_icon_table.h
new file mode 100644
index 000000000..0a24c0572
--- /dev/null
+++ b/include/data/item_icon_table.h
@@ -0,0 +1,414 @@
+#ifndef GUARD_DATA_ITEM_ICON_TABLE_H
+#define GUARD_DATA_ITEM_ICON_TABLE_H
+
+#include "global.h"
+#include "graphics.h"
+
+const u8 * const gItemIconTable[][2] =
+{
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Pokeballs
+ gItemIcon_MasterBall, gItemIconPalette_MasterBall,
+ gItemIcon_UltraBall, gItemIconPalette_UltraBall,
+ gItemIcon_GreatBall, gItemIconPalette_GreatBall,
+ gItemIcon_PokeBall, gItemIconPalette_PokeBall,
+ gItemIcon_SafariBall, gItemIconPalette_SafariBall,
+ gItemIcon_NetBall, gItemIconPalette_NetBall,
+ gItemIcon_DiveBall, gItemIconPalette_DiveBall,
+ gItemIcon_NestBall, gItemIconPalette_NestBall,
+ gItemIcon_RepeatBall, gItemIconPalette_RepeatBall,
+ gItemIcon_TimerBall, gItemIconPalette_RepeatBall,
+ gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall,
+ gItemIcon_PremierBall, gItemIconPalette_LuxuryBall,
+// Medicine
+ gItemIcon_Potion, gItemIconPalette_Potion,
+ gItemIcon_Antidote, gItemIconPalette_Antidote,
+ gItemIcon_StatusHeal, gItemIconPalette_BurnHeal,
+ gItemIcon_StatusHeal, gItemIconPalette_IceHeal,
+ gItemIcon_StatusHeal, gItemIconPalette_Awakening,
+ gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal,
+ gItemIcon_LargePotion, gItemIconPalette_FullRestore,
+ gItemIcon_LargePotion, gItemIconPalette_MaxPotion,
+ gItemIcon_Potion, gItemIconPalette_HyperPotion,
+ gItemIcon_Potion, gItemIconPalette_SuperPotion,
+ gItemIcon_FullHeal, gItemIconPalette_FullHeal,
+ gItemIcon_Revive, gItemIconPalette_Revive,
+ gItemIcon_MaxRevive, gItemIconPalette_Revive,
+ gItemIcon_FreshWater, gItemIconPalette_FreshWater,
+ gItemIcon_SodaPop, gItemIconPalette_SodaPop,
+ gItemIcon_Lemonade, gItemIconPalette_Lemonade,
+ gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk,
+ gItemIcon_Powder, gItemIconPalette_EnergyPowder,
+ gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot,
+ gItemIcon_Powder, gItemIconPalette_HealPowder,
+ gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb,
+ gItemIcon_Ether, gItemIconPalette_Ether,
+ gItemIcon_Ether, gItemIconPalette_MaxEther,
+ gItemIcon_Ether, gItemIconPalette_Elixir,
+ gItemIcon_Ether, gItemIconPalette_MaxElixir,
+ gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter,
+ gItemIcon_Flute, gItemIconPalette_BlueFlute,
+ gItemIcon_Flute, gItemIconPalette_YellowFlute,
+ gItemIcon_Flute, gItemIconPalette_RedFlute,
+ gItemIcon_Flute, gItemIconPalette_BlackFlute,
+ gItemIcon_Flute, gItemIconPalette_WhiteFlute,
+ gItemIcon_BerryJuice, gItemIconPalette_BerryJuice,
+ gItemIcon_SacredAsh, gItemIconPalette_SacredAsh,
+// Collectibles
+ gItemIcon_Powder, gItemIconPalette_ShoalSalt,
+ gItemIcon_ShoalShell, gItemIconPalette_Shell,
+ gItemIcon_Shard, gItemIconPalette_RedShard,
+ gItemIcon_Shard, gItemIconPalette_BlueShard,
+ gItemIcon_Shard, gItemIconPalette_YellowShard,
+ gItemIcon_Shard, gItemIconPalette_GreenShard,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Vitamins
+ gItemIcon_HPUp, gItemIconPalette_HPUp,
+ gItemIcon_Vitamin, gItemIconPalette_Protein,
+ gItemIcon_Vitamin, gItemIconPalette_Iron,
+ gItemIcon_Vitamin, gItemIconPalette_Carbos,
+ gItemIcon_Vitamin, gItemIconPalette_Calcium,
+ gItemIcon_RareCandy, gItemIconPalette_RareCandy,
+ gItemIcon_PPUp, gItemIconPalette_PPUp,
+ gItemIcon_Vitamin, gItemIconPalette_Zinc,
+ gItemIcon_PPMax, gItemIconPalette_PPMax,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Battle items
+ gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec,
+ gItemIcon_BattleStatItem, gItemIconPalette_DireHit,
+ gItemIcon_BattleStatItem, gItemIconPalette_XAttack,
+ gItemIcon_BattleStatItem, gItemIconPalette_XDefend,
+ gItemIcon_BattleStatItem, gItemIconPalette_XSpeed,
+ gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy,
+ gItemIcon_BattleStatItem, gItemIconPalette_XSpecial,
+ gItemIcon_PokeDoll, gItemIconPalette_PokeDoll,
+ gItemIcon_FluffyTail, gItemIconPalette_FluffyTail,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Field items
+ gItemIcon_Repel, gItemIconPalette_SuperRepel,
+ gItemIcon_Repel, gItemIconPalette_MaxRepel,
+ gItemIcon_EscapeRope, gItemIconPalette_EscapeRope,
+ gItemIcon_Repel, gItemIconPalette_Repel,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Evolution stones
+ gItemIcon_SunStone, gItemIconPalette_SunStone,
+ gItemIcon_MoonStone, gItemIconPalette_MoonStone,
+ gItemIcon_FireStone, gItemIconPalette_FireStone,
+ gItemIcon_ThunderStone, gItemIconPalette_ThunderStone,
+ gItemIcon_WaterStone, gItemIconPalette_WaterStone,
+ gItemIcon_LeafStone, gItemIconPalette_LeafStone,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Valuables
+ gItemIcon_TinyMushroom, gItemIconPalette_Mushroom,
+ gItemIcon_BigMushroom, gItemIconPalette_Mushroom,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_Pearl, gItemIconPalette_Pearl,
+ gItemIcon_BigPearl, gItemIconPalette_Pearl,
+ gItemIcon_Stardust, gItemIconPalette_Star,
+ gItemIcon_StarPiece, gItemIconPalette_Star,
+ gItemIcon_Nugget, gItemIconPalette_Nugget,
+ gItemIcon_HeartScale, gItemIconPalette_HeartScale,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Mail
+ gItemIcon_OrangeMail, gItemIconPalette_OrangeMail,
+ gItemIcon_HarborMail, gItemIconPalette_HarborMail,
+ gItemIcon_GlitterMail, gItemIconPalette_GlitterMail,
+ gItemIcon_MechMail, gItemIconPalette_MechMail,
+ gItemIcon_WoodMail, gItemIconPalette_WoodMail,
+ gItemIcon_WaveMail, gItemIconPalette_WaveMail,
+ gItemIcon_BeadMail, gItemIconPalette_BeadMail,
+ gItemIcon_ShadowMail, gItemIconPalette_ShadowMail,
+ gItemIcon_TropicMail, gItemIconPalette_TropicMail,
+ gItemIcon_DreamMail, gItemIconPalette_DreamMail,
+ gItemIcon_FabMail, gItemIconPalette_FabMail,
+ gItemIcon_RetroMail, gItemIconPalette_RetroMail,
+// Berries
+ gItemIcon_CheriBerry, gItemIconPalette_CheriBerry,
+ gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry,
+ gItemIcon_PechaBerry, gItemIconPalette_PechaBerry,
+ gItemIcon_RawstBerry, gItemIconPalette_RawstBerry,
+ gItemIcon_AspearBerry, gItemIconPalette_AspearBerry,
+ gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry,
+ gItemIcon_OranBerry, gItemIconPalette_OranBerry,
+ gItemIcon_PersimBerry, gItemIconPalette_PersimBerry,
+ gItemIcon_LumBerry, gItemIconPalette_LumBerry,
+ gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry,
+ gItemIcon_FigyBerry, gItemIconPalette_FigyBerry,
+ gItemIcon_WikiBerry, gItemIconPalette_WikiBerry,
+ gItemIcon_MagoBerry, gItemIconPalette_MagoBerry,
+ gItemIcon_AguavBerry, gItemIconPalette_AguavBerry,
+ gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry,
+ gItemIcon_RazzBerry, gItemIconPalette_RazzBerry,
+ gItemIcon_BlukBerry, gItemIconPalette_BlukBerry,
+ gItemIcon_NanabBerry, gItemIconPalette_NanabBerry,
+ gItemIcon_WepearBerry, gItemIconPalette_WepearBerry,
+ gItemIcon_PinapBerry, gItemIconPalette_PinapBerry,
+ gItemIcon_PomegBerry, gItemIconPalette_PomegBerry,
+ gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry,
+ gItemIcon_QualotBerry, gItemIconPalette_QualotBerry,
+ gItemIcon_HondewBerry, gItemIconPalette_HondewBerry,
+ gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry,
+ gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry,
+ gItemIcon_CornnBerry, gItemIconPalette_CornnBerry,
+ gItemIcon_MagostBerry, gItemIconPalette_MagostBerry,
+ gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry,
+ gItemIcon_NomelBerry, gItemIconPalette_NomelBerry,
+ gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry,
+ gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry,
+ gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry,
+ gItemIcon_DurinBerry, gItemIconPalette_DurinBerry,
+ gItemIcon_BelueBerry, gItemIconPalette_BelueBerry,
+ gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry,
+ gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry,
+ gItemIcon_SalacBerry, gItemIconPalette_SalacBerry,
+ gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry,
+ gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry,
+ gItemIcon_LansatBerry, gItemIconPalette_LansatBerry,
+ gItemIcon_StarfBerry, gItemIconPalette_StarfBerry,
+ gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Hold items
+ gItemIcon_BrightPowder, gItemIconPalette_BrightPowder,
+ gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb,
+ gItemIcon_MachoBrace, gItemIconPalette_MachoBrace,
+ gItemIcon_ExpShare, gItemIconPalette_ExpShare,
+ gItemIcon_QuickClaw, gItemIconPalette_QuickClaw,
+ gItemIcon_SootheBell, gItemIconPalette_SootheBell,
+ gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb,
+ gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand,
+ gItemIcon_KingsRock, gItemIconPalette_KingsRock,
+ gItemIcon_SilverPowder, gItemIconPalette_SilverPowder,
+ gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin,
+ gItemIcon_CleanseTag, gItemIconPalette_CleanseTag,
+ gItemIcon_SoulDew, gItemIconPalette_SoulDew,
+ gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth,
+ gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale,
+ gItemIcon_SmokeBall, gItemIconPalette_SmokeBall,
+ gItemIcon_Everstone, gItemIconPalette_Everstone,
+ gItemIcon_FocusBand, gItemIconPalette_FocusBand,
+ gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg,
+ gItemIcon_ScopeLens, gItemIconPalette_ScopeLens,
+ gItemIcon_MetalCoat, gItemIconPalette_MetalCoat,
+ gItemIcon_Leftovers, gItemIconPalette_Leftovers,
+ gItemIcon_DragonScale, gItemIconPalette_DragonScale,
+ gItemIcon_LightBall, gItemIconPalette_LightBall,
+ gItemIcon_SoftSand, gItemIconPalette_SoftSand,
+ gItemIcon_HardStone, gItemIconPalette_HardStone,
+ gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed,
+ gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem,
+ gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem,
+ gItemIcon_Magnet, gItemIconPalette_Magnet,
+ gItemIcon_MysticWater, gItemIconPalette_MysticWater,
+ gItemIcon_SharpBeak, gItemIconPalette_SharpBeak,
+ gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb,
+ gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce,
+ gItemIcon_SpellTag, gItemIconPalette_SpellTag,
+ gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon,
+ gItemIcon_Charcoal, gItemIconPalette_Charcoal,
+ gItemIcon_DragonFang, gItemIconPalette_DragonFang,
+ gItemIcon_SilkScarf, gItemIconPalette_SilkScarf,
+ gItemIcon_UpGrade, gItemIconPalette_UpGrade,
+ gItemIcon_ShellBell, gItemIconPalette_Shell,
+ gItemIcon_SeaIncense, gItemIconPalette_SeaIncense,
+ gItemIcon_LaxIncense, gItemIconPalette_LaxIncense,
+ gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch,
+ gItemIcon_MetalPowder, gItemIconPalette_MetalPowder,
+ gItemIcon_ThickClub, gItemIconPalette_ThickClub,
+ gItemIcon_Stick, gItemIconPalette_Stick,
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// Contest hold items
+ gItemIcon_Scarf, gItemIconPalette_RedScarf,
+ gItemIcon_Scarf, gItemIconPalette_BlueScarf,
+ gItemIcon_Scarf, gItemIconPalette_PinkScarf,
+ gItemIcon_Scarf, gItemIconPalette_GreenScarf,
+ gItemIcon_Scarf, gItemIconPalette_YellowScarf,
+// Key items
+ gItemIcon_MachBike, gItemIconPalette_MachBike,
+ gItemIcon_CoinCase, gItemIconPalette_CoinCase,
+ gItemIcon_Itemfinder, gItemIconPalette_Itemfinder,
+ gItemIcon_OldRod, gItemIconPalette_OldRod,
+ gItemIcon_GoodRod, gItemIconPalette_GoodRod,
+ gItemIcon_SuperRod, gItemIconPalette_SuperRod,
+ gItemIcon_SSTicket, gItemIconPalette_SSTicket,
+ gItemIcon_ContestPass, gItemIconPalette_ContestPass,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_WailmerPail, gItemIconPalette_WailmerPail,
+ gItemIcon_DevonGoods, gItemIconPalette_DevonGoods,
+ gItemIcon_SootSack, gItemIconPalette_SootSack,
+ gItemIcon_BasementKey, gItemIconPalette_OldKey,
+ gItemIcon_AcroBike, gItemIconPalette_AcroBike,
+ gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase,
+ gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter,
+ gItemIcon_EonTicket, gItemIconPalette_EonTicket,
+ gItemIcon_Orb, gItemIconPalette_RedOrb,
+ gItemIcon_Orb, gItemIconPalette_BlueOrb,
+ gItemIcon_Scanner, gItemIconPalette_Scanner,
+ gItemIcon_GoGoggles, gItemIconPalette_GoGoggles,
+ gItemIcon_Meteorite, gItemIconPalette_Meteorite,
+ gItemIcon_Room1Key, gItemIconPalette_Key,
+ gItemIcon_Room2Key, gItemIconPalette_Key,
+ gItemIcon_Room4Key, gItemIconPalette_Key,
+ gItemIcon_Room6Key, gItemIconPalette_Key,
+ gItemIcon_StorageKey, gItemIconPalette_OldKey,
+ gItemIcon_RootFossil, gItemIconPalette_HoennFossil,
+ gItemIcon_ClawFossil, gItemIconPalette_HoennFossil,
+ gItemIcon_DevonScope, gItemIconPalette_DevonScope,
+// TMs/HMs
+ gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM01
+ gItemIcon_TM, gItemIconPalette_DragonTMHM, // TM02
+ gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM03
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM04
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM05
+ gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM06
+ gItemIcon_TM, gItemIconPalette_IceTMHM, // TM07
+ gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM08
+ gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM09
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM10
+ gItemIcon_TM, gItemIconPalette_FireTMHM, // TM11
+ gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM12
+ gItemIcon_TM, gItemIconPalette_IceTMHM, // TM13
+ gItemIcon_TM, gItemIconPalette_IceTMHM, // TM14
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM15
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM16
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM17
+ gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM18
+ gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM19
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM20
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM21
+ gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM22
+ gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM23
+ gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM24
+ gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM25
+ gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM26
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM27
+ gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM28
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM29
+ gItemIcon_TM, gItemIconPalette_GhostTMHM, // TM30
+ gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM31
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM32
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM33
+ gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM34
+ gItemIcon_TM, gItemIconPalette_FireTMHM, // TM35
+ gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM36
+ gItemIcon_TM, gItemIconPalette_RockTMHM, // TM37
+ gItemIcon_TM, gItemIconPalette_FireTMHM, // TM38
+ gItemIcon_TM, gItemIconPalette_RockTMHM, // TM39
+ gItemIcon_TM, gItemIconPalette_FlyingTMHM, // TM40
+ gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM41
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM42
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM43
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM44
+ gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM45
+ gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM46
+ gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM47
+ gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM48
+ gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM49
+ gItemIcon_TM, gItemIconPalette_FireTMHM, // TM50
+ gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM01
+ gItemIcon_HM, gItemIconPalette_FlyingTMHM, // HM02
+ gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM03
+ gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM04
+ gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM05
+ gItemIcon_HM, gItemIconPalette_FightingTMHM, // HM06
+ gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM07
+ gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM08
+// ????????
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+ gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
+// FireRed/LeafGreen key items
+ gItemIcon_OaksParcel, gItemIconPalette_OaksParcel,
+ gItemIcon_PokeFlute, gItemIconPalette_PokeFlute,
+ gItemIcon_SecretKey, gItemIconPalette_SecretKey,
+ gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher,
+ gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth,
+ gItemIcon_OldAmber, gItemIconPalette_OldAmber,
+ gItemIcon_CardKey, gItemIconPalette_CardKey,
+ gItemIcon_LiftKey, gItemIconPalette_Key,
+ gItemIcon_HelixFossil, gItemIconPalette_KantoFossil,
+ gItemIcon_DomeFossil, gItemIconPalette_KantoFossil,
+ gItemIcon_SilphScope, gItemIconPalette_SilphScope,
+ gItemIcon_Bicycle, gItemIconPalette_Bicycle,
+ gItemIcon_TownMap, gItemIconPalette_TownMap,
+ gItemIcon_VSSeeker, gItemIconPalette_VSSeeker,
+ gItemIcon_FameChecker, gItemIconPalette_FameChecker,
+ gItemIcon_TMCase, gItemIconPalette_TMCase,
+ gItemIcon_BerryPouch, gItemIconPalette_BerryPouch,
+ gItemIcon_TeachyTV, gItemIconPalette_TeachyTV,
+ gItemIcon_TriPass, gItemIconPalette_TriPass,
+ gItemIcon_RainbowPass, gItemIconPalette_RainbowPass,
+ gItemIcon_Tea, gItemIconPalette_Tea,
+ gItemIcon_MysticTicket, gItemIconPalette_MysticTicket,
+ gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket,
+ gItemIcon_PowderJar, gItemIconPalette_PowderJar,
+ gItemIcon_Gem, gItemIconPalette_Ruby,
+ gItemIcon_Gem, gItemIconPalette_Sapphire,
+// Emerald-only key items
+ gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem,
+ gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap,
+// Return to field arrow
+ gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow,
+};
+#endif // GUARD_DATA_ITEM_ICON_TABLE_H
diff --git a/include/data/items.h b/include/data/items.h
new file mode 100644
index 000000000..49f981faf
--- /dev/null
+++ b/include/data/items.h
@@ -0,0 +1,6079 @@
+const struct Item gItems[] =
+{
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Pokeballs
+
+ {
+ .name = _("MASTER BALL"),
+ .itemId = ITEM_MASTER_BALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gMasterBallItemDescription,
+ .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 = gUltraBallItemDescription,
+ .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 = gGreatBallItemDescription,
+ .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 = gPokeBallItemDescription,
+ .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 = gSafariBallItemDescription,
+ .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 = gNetBallItemDescription,
+ .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 = gDiveBallItemDescription,
+ .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 = gNestBallItemDescription,
+ .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 = gRepeatBallItemDescription,
+ .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 = gTimerBallItemDescription,
+ .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 = gLuxuryBallItemDescription,
+ .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 = gPremierBallItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 11,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 11,
+ },
+
+//Medicine
+
+ {
+ .name = _("POTION"),
+ .itemId = ITEM_POTION,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 20,
+ .description = gPotionItemDescription,
+ .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 = gAntidoteItemDescription,
+ .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 = gBurnHealItemDescription,
+ .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 = gIceHealItemDescription,
+ .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 = gAwakeningItemDescription,
+ .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 = gParalyzeHealItemDescription,
+ .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 = gFullRestoreItemDescription,
+ .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 = gMaxPotionItemDescription,
+ .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 = gHyperPotionItemDescription,
+ .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 = gSuperPotionItemDescription,
+ .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 = gFullHealItemDescription,
+ .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 = gReviveItemDescription,
+ .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 = gMaxReviveItemDescription,
+ .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 = gFreshWaterItemDescription,
+ .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 = gSodaPopItemDescription,
+ .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 = gLemonadeItemDescription,
+ .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 = gMoomooMilkItemDescription,
+ .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 = gEnergyPowderItemDescription,
+ .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 = gEnergyRootItemDescription,
+ .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 = gHealPowderItemDescription,
+ .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 = gRevivalHerbItemDescription,
+ .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 = gEtherItemDescription,
+ .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 = gMaxEtherItemDescription,
+ .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 = gElixirItemDescription,
+ .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 = gMaxElixirItemDescription,
+ .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 = gLavaCookieItemDescription,
+ .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 = gBlueFluteItemDescription,
+ .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 = gYellowFluteItemDescription,
+ .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 = gRedFluteItemDescription,
+ .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 = gBlackFluteItemDescription,
+ .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 = gWhiteFluteItemDescription,
+ .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 = gBerryJuiceItemDescription,
+ .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 = gSacredAshItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Collectibles
+
+ {
+ .name = _("SHOAL SALT"),
+ .itemId = ITEM_SHOAL_SALT,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gShoalSaltItemDescription,
+ .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 = gShoalShellItemDescription,
+ .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 = gRedShardItemDescription,
+ .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 = gBlueShardItemDescription,
+ .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 = gYellowShardItemDescription,
+ .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 = gGreenShardItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Vitamins
+
+ {
+ .name = _("HP UP"),
+ .itemId = ITEM_HP_UP,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHPUpItemDescription,
+ .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 = gProteinItemDescription,
+ .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 = gIronItemDescription,
+ .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 = gCarbosItemDescription,
+ .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 = gCalciumItemDescription,
+ .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 = gRareCandyItemDescription,
+ .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 = gPPUpItemDescription,
+ .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 = gZincItemDescription,
+ .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 = gPPMaxItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Battle items
+
+ {
+ .name = _("GUARD SPEC."),
+ .itemId = ITEM_GUARD_SPEC,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gGuardSpecItemDescription,
+ .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 = gDireHitItemDescription,
+ .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 = gXAttackItemDescription,
+ .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 = gXDefendItemDescription,
+ .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 = gXSpeedItemDescription,
+ .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 = gXAccuracyItemDescription,
+ .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 = gXSpecialItemDescription,
+ .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 = gPokeDollItemDescription,
+ .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 = gFluffyTailItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Field items
+
+ {
+ .name = _("SUPER REPEL"),
+ .itemId = ITEM_SUPER_REPEL,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 200,
+ .description = gSuperRepelItemDescription,
+ .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 = gMaxRepelItemDescription,
+ .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 = gEscapeRopeItemDescription,
+ .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 = gRepelItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Evolution stones
+
+ {
+ .name = _("SUN STONE"),
+ .itemId = ITEM_SUN_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gSunStoneItemDescription,
+ .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 = gMoonStoneItemDescription,
+ .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 = gFireStoneItemDescription,
+ .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 = gThunderStoneItemDescription,
+ .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 = gWaterStoneItemDescription,
+ .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 = gLeafStoneItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Valuable items
+
+ {
+ .name = _("TINYMUSHROOM"),
+ .itemId = ITEM_TINY_MUSHROOM,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTinyMushroomItemDescription,
+ .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 = gBigMushroomItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gPearlItemDescription,
+ .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 = gBigPearlItemDescription,
+ .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 = gStardustItemDescription,
+ .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 = gStarPieceItemDescription,
+ .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 = gNuggetItemDescription,
+ .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 = gHeartScaleItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Mail
+ {
+ .name = _("ORANGE MAIL"),
+ .itemId = ITEM_ORANGE_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gOrangeMailItemDescription,
+ .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 = gHarborMailItemDescription,
+ .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 = gGlitterMailItemDescription,
+ .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 = gMechMailItemDescription,
+ .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 = gWoodMailItemDescription,
+ .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 = gWaveMailItemDescription,
+ .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 = gBeadMailItemDescription,
+ .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 = gShadowMailItemDescription,
+ .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 = gTropicMailItemDescription,
+ .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 = gDreamMailItemDescription,
+ .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 = gFabMailItemDescription,
+ .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 = gRetroMailItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 11,
+ },
+
+//Berries
+
+ {
+ .name = _("CHERI BERRY"),
+ .itemId = ITEM_CHERI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_PAR,
+ .holdEffectParam = 0,
+ .description = gCheriBerryItemDescription,
+ .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 = gChestoBerryItemDescription,
+ .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 = gPechaBerryItemDescription,
+ .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 = gRawstBerryItemDescription,
+ .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 = gAspearBerryItemDescription,
+ .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 = gLeppaBerryItemDescription,
+ .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 = gOranBerryItemDescription,
+ .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 = gPersimBerryItemDescription,
+ .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 = gLumBerryItemDescription,
+ .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 = gSitrusBerryItemDescription,
+ .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 = gFigyBerryItemDescription,
+ .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 = gWikiBerryItemDescription,
+ .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 = gMagoBerryItemDescription,
+ .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 = gAguavBerryItemDescription,
+ .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 = gIapapaBerryItemDescription,
+ .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 = gRazzBerryItemDescription,
+ .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 = gBlukBerryItemDescription,
+ .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 = gNanabBerryItemDescription,
+ .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 = gWepearBerryItemDescription,
+ .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 = gPinapBerryItemDescription,
+ .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 = gPomegBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KELPSY BERRY"),
+ .itemId = ITEM_KELPSY_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gKelpsyBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("QUALOT BERRY"),
+ .itemId = ITEM_QUALOT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gQualotBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HONDEW BERRY"),
+ .itemId = ITEM_HONDEW_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHondewBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GREPA BERRY"),
+ .itemId = ITEM_GREPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gGrepaBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TAMATO BERRY"),
+ .itemId = ITEM_TAMATO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTamatoBerryItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CORNN BERRY"),
+ .itemId = ITEM_CORNN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gCornnBerryItemDescription,
+ .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 = gMagostBerryItemDescription,
+ .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 = gRabutaBerryItemDescription,
+ .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 = gNomelBerryItemDescription,
+ .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 = gSpelonBerryItemDescription,
+ .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 = gPamtreBerryItemDescription,
+ .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 = gWatmelBerryItemDescription,
+ .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 = gDurinBerryItemDescription,
+ .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 = gBelueBerryItemDescription,
+ .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 = gLiechiBerryItemDescription,
+ .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 = gGanlonBerryItemDescription,
+ .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 = gSalacBerryItemDescription,
+ .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 = gPetayaBerryItemDescription,
+ .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 = gApicotBerryItemDescription,
+ .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 = gLansatBerryItemDescription,
+ .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 = gStarfBerryItemDescription,
+ .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 = gEnigmaBerryItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Hold items
+
+ {
+ .name = _("BRIGHTPOWDER"),
+ .itemId = ITEM_BRIGHT_POWDER,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_EVASION_UP,
+ .holdEffectParam = 10,
+ .description = gBrightPowderItemDescription,
+ .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 = gWhiteHerbItemDescription,
+ .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 = gMachoBraceItemDescription,
+ .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 = gExpShareItemDescription,
+ .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 = gQuickClawItemDescription,
+ .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 = gSootheBellItemDescription,
+ .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 = gMentalHerbItemDescription,
+ .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 = gChoiceBandItemDescription,
+ .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 = gKingsRockItemDescription,
+ .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 = gSilverPowderItemDescription,
+ .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 = gAmuletCoinItemDescription,
+ .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 = gCleanseTagItemDescription,
+ .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 = gSoulDewItemDescription,
+ .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 = gDeepSeaToothItemDescription,
+ .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 = gDeepSeaScaleItemDescription,
+ .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 = gSmokeBallItemDescription,
+ .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 = gEverstoneItemDescription,
+ .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 = gFocusBandItemDescription,
+ .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 = gLuckyEggItemDescription,
+ .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 = gScopeLensItemDescription,
+ .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 = gMetalCoatItemDescription,
+ .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 = gLeftoversItemDescription,
+ .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 = gDragonScaleItemDescription,
+ .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 = gLightBallItemDescription,
+ .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 = gSoftSandItemDescription,
+ .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 = gHardStoneItemDescription,
+ .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 = gMiracleSeedItemDescription,
+ .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 = gBlackGlassesItemDescription,
+ .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 = gBlackBeltItemDescription,
+ .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 = gMagnetItemDescription,
+ .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 = gMysticWaterItemDescription,
+ .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 = gSharpBeakItemDescription,
+ .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 = gPoisonBarbItemDescription,
+ .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 = gNeverMeltIceItemDescription,
+ .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 = gSpellTagItemDescription,
+ .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 = gTwistedSpoonItemDescription,
+ .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 = gCharcoalItemDescription,
+ .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 = gDragonFangItemDescription,
+ .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 = gSilkScarfItemDescription,
+ .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 = gUpGradeItemDescription,
+ .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 = gShellBellItemDescription,
+ .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 = gSeaIncenseItemDescription,
+ .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 = gLaxIncenseItemDescription,
+ .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 = gLuckyPunchItemDescription,
+ .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 = gMetalPowderItemDescription,
+ .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 = gThickClubItemDescription,
+ .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 = gStickItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gRedScarfItemDescription,
+ .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 = gBlueScarfItemDescription,
+ .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 = gPinkScarfItemDescription,
+ .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 = gGreenScarfItemDescription,
+ .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 = gYellowScarfItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Key items
+
+ {
+ .name = _("MACH BIKE"),
+ .itemId = ITEM_MACH_BIKE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gMachBikeItemDescription,
+ .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 = gCoinCaseItemDescription,
+ .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 = gItemfinderItemDescription,
+ .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 = gOldRodItemDescription,
+ .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 = gGoodRodItemDescription,
+ .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 = gSuperRodItemDescription,
+ .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 = gSSTicketItemDescription,
+ .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 = gContestPassItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gWailmerPailItemDescription,
+ .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 = gDevonGoodsItemDescription,
+ .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 = gSootSackItemDescription,
+ .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 = gBasementKeyItemDescription,
+ .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 = gAcroBikeItemDescription,
+ .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 = gPokeblockCaseItemDescription,
+ .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 = gLetterItemDescription,
+ .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 = gEonTicketItemDescription,
+ .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 = gRedOrbItemDescription,
+ .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 = gBlueOrbItemDescription,
+ .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 = gScannerItemDescription,
+ .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 = gGoGogglesItemDescription,
+ .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 = gMeteoriteItemDescription,
+ .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 = gRoom1KeyItemDescription,
+ .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 = gRoom2KeyItemDescription,
+ .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 = gRoom4KeyItemDescription,
+ .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 = gRoom6KeyItemDescription,
+ .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 = gStorageKeyItemDescription,
+ .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 = gRootFossilItemDescription,
+ .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 = gClawFossilItemDescription,
+ .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 = gDevonScopeItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//TMs/HMs
+
+ {
+ .name = _("TM01"),
+ .itemId = ITEM_TM01_FOCUS_PUNCH,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM01ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM02"),
+ .itemId = ITEM_TM02_DRAGON_CLAW,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM02ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM03"),
+ .itemId = ITEM_TM03_WATER_PULSE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM03ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM04"),
+ .itemId = ITEM_TM04_CALM_MIND,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM04ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM05"),
+ .itemId = ITEM_TM05_ROAR,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM05ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM06"),
+ .itemId = ITEM_TM06_TOXIC,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM06ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM07"),
+ .itemId = ITEM_TM07_HAIL,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM07ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM08"),
+ .itemId = ITEM_TM08_BULK_UP,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM08ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM09"),
+ .itemId = ITEM_TM09_BULLET_SEED,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM09ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM10"),
+ .itemId = ITEM_TM10_HIDDEN_POWER,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM10ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM11"),
+ .itemId = ITEM_TM11_SUNNY_DAY,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM11ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM12"),
+ .itemId = ITEM_TM12_TAUNT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM12ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM13"),
+ .itemId = ITEM_TM13_ICE_BEAM,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM13ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM14"),
+ .itemId = ITEM_TM14_BLIZZARD,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM14ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM15"),
+ .itemId = ITEM_TM15_HYPER_BEAM,
+ .price = 7500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM15ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM16"),
+ .itemId = ITEM_TM16_LIGHT_SCREEN,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM16ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM17"),
+ .itemId = ITEM_TM17_PROTECT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM17ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM18"),
+ .itemId = ITEM_TM18_RAIN_DANCE,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM18ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM19"),
+ .itemId = ITEM_TM19_GIGA_DRAIN,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM19ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM20"),
+ .itemId = ITEM_TM20_SAFEGUARD,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM20ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM21"),
+ .itemId = ITEM_TM21_FRUSTRATION,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM21ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM22"),
+ .itemId = ITEM_TM22_SOLARBEAM,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM22ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM23"),
+ .itemId = ITEM_TM23_IRON_TAIL,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM23ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM24"),
+ .itemId = ITEM_TM24_THUNDERBOLT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM24ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM25"),
+ .itemId = ITEM_TM25_THUNDER,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM25ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM26"),
+ .itemId = ITEM_TM26_EARTHQUAKE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM26ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM27"),
+ .itemId = ITEM_TM27_RETURN,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM27ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM28"),
+ .itemId = ITEM_TM28_DIG,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM28ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM29"),
+ .itemId = ITEM_TM29_PSYCHIC,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM29ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM30"),
+ .itemId = ITEM_TM30_SHADOW_BALL,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM30ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM31"),
+ .itemId = ITEM_TM31_BRICK_BREAK,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM31ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM32"),
+ .itemId = ITEM_TM32_DOUBLE_TEAM,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM32ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM33"),
+ .itemId = ITEM_TM33_REFLECT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM33ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM34"),
+ .itemId = ITEM_TM34_SHOCK_WAVE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM34ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM35"),
+ .itemId = ITEM_TM35_FLAMETHROWER,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM35ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM36"),
+ .itemId = ITEM_TM36_SLUDGE_BOMB,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM36ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM37"),
+ .itemId = ITEM_TM37_SANDSTORM,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM37ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM38"),
+ .itemId = ITEM_TM38_FIRE_BLAST,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM38ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM39"),
+ .itemId = ITEM_TM39_ROCK_TOMB,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM39ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM40"),
+ .itemId = ITEM_TM40_AERIAL_ACE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM40ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM41"),
+ .itemId = ITEM_TM41_TORMENT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM41ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM42"),
+ .itemId = ITEM_TM42_FACADE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM42ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM43"),
+ .itemId = ITEM_TM43_SECRET_POWER,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM43ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM44"),
+ .itemId = ITEM_TM44_REST,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM44ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM45"),
+ .itemId = ITEM_TM45_ATTRACT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM45ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM46"),
+ .itemId = ITEM_TM46_THIEF,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM46ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM47"),
+ .itemId = ITEM_TM47_STEEL_WING,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM47ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM48"),
+ .itemId = ITEM_TM48_SKILL_SWAP,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM48ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM49"),
+ .itemId = ITEM_TM49_SNATCH,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM49ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM50"),
+ .itemId = ITEM_TM50_OVERHEAT,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTM50ItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM01"),
+ .itemId = ITEM_HM01_CUT,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM01ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM02"),
+ .itemId = ITEM_HM02_FLY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM02ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM03"),
+ .itemId = ITEM_HM03_SURF,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM03ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM04"),
+ .itemId = ITEM_HM04_STRENGTH,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM04ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM05"),
+ .itemId = ITEM_HM05_FLASH,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM05ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM06"),
+ .itemId = ITEM_HM06_ROCK_SMASH,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM06ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM07"),
+ .itemId = ITEM_HM07_WATERFALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM07ItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM08"),
+ .itemId = ITEM_HM08_DIVE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHM08ItemDescription,
+ .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 = gDummyItemDescription,
+ .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 = gDummyItemDescription,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//FireRed/LeafGreen key items
+
+ {
+ .name = _("OAK’S PARCEL"),
+ .itemId = ITEM_OAKS_PARCEL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gOaksParcelItemDescription,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POKé FLUTE"),
+ .itemId = ITEM_POKE_FLUTE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gPokeFluteItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SECRET KEY"),
+ .itemId = ITEM_SECRET_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gSecretKeyItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BIKE VOUCHER"),
+ .itemId = ITEM_BIKE_VOUCHER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gBikeVoucherItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GOLD TEETH"),
+ .itemId = ITEM_GOLD_TEETH,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gGoldTeethItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("OLD AMBER"),
+ .itemId = ITEM_OLD_AMBER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gOldAmberItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CARD KEY"),
+ .itemId = ITEM_CARD_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gCardKeyItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LIFT KEY"),
+ .itemId = ITEM_LIFT_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gLiftKeyItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HELIX FOSSIL"),
+ .itemId = ITEM_HELIX_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gHelixFossilItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DOME FOSSIL"),
+ .itemId = ITEM_DOME_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gDomeFossilItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SILPH SCOPE"),
+ .itemId = ITEM_SILPH_SCOPE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gSilphScopeItemDescription,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BICYCLE"),
+ .itemId = ITEM_BICYCLE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gBicycleItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOWN MAP"),
+ .itemId = ITEM_TOWN_MAP,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTownMapItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VS SEEKER"),
+ .itemId = ITEM_VS_SEEKER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gVSSeekerItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FAME CHECKER"),
+ .itemId = ITEM_FAME_CHECKER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gFameCheckerItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM CASE"),
+ .itemId = ITEM_TM_CASE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTMCaseItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BERRY POUCH"),
+ .itemId = ITEM_BERRY_POUCH,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gBerryPouchItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TEACHY TV"),
+ .itemId = ITEM_TEACHY_TV,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTeachyTVItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TRI-PASS"),
+ .itemId = ITEM_TRI_PASS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTriPassItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RAINBOW PASS"),
+ .itemId = ITEM_RAINBOW_PASS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gRainbowPassItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TEA"),
+ .itemId = ITEM_TEA,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gTeaItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MYSTICTICKET"),
+ .itemId = ITEM_MYSTIC_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gMysticTicketItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AURORATICKET"),
+ .itemId = ITEM_AURORA_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gAuroraTicketItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POWDER JAR"),
+ .itemId = ITEM_POWDER_JAR,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gPowderJarItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_PowderJar,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RUBY"),
+ .itemId = ITEM_RUBY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gRubyItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SAPPHIRE"),
+ .itemId = ITEM_SAPPHIRE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gSapphireItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+
+//Emerald-specific key items
+
+ {
+ .name = _("MAGMA EMBLEM"),
+ .itemId = ITEM_MAGMA_EMBLEM,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gMagmaEmblemItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("OLD SEA MAP"),
+ .itemId = ITEM_OLD_SEA_MAP,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gOldSeaMapItemDescription,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+};
diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h
index 2ffe9cd85..ec4dbf0fb 100644
--- a/include/data/pokemon/trainer_class_lookups.h
+++ b/include/data/pokemon/trainer_class_lookups.h
@@ -6,13 +6,13 @@ const u8 gFacilityClassToPicIndex[] =
TRAINER_PIC_HIKER, // FACILITY_CLASS_HIKER
TRAINER_PIC_AQUA_GRUNT_M, // FACILITY_CLASS_TEAM_AQUA_1
TRAINER_PIC_POKEMON_BREEDER_F, // FACILITY_CLASS_PKMN_BREEDER_1
- TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_1
+ TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_M
TRAINER_PIC_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
TRAINER_PIC_COLLECTOR, // FACILITY_CLASS_COLLECTOR
TRAINER_PIC_AQUA_GRUNT_F, // FACILITY_CLASS_TEAM_AQUA_2
TRAINER_PIC_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
TRAINER_PIC_MAGMA_GRUNT_M, // FACILITY_CLASS_TEAM_MAGMA_1
- TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_1
+ TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_M
TRAINER_PIC_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
TRAINER_PIC_AQUA_LEADER_ARCHIE, // FACILITY_CLASS_AQUA_LEADER
TRAINER_PIC_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
@@ -21,7 +21,7 @@ const u8 gFacilityClassToPicIndex[] =
TRAINER_PIC_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
TRAINER_PIC_TUBER_F, // FACILITY_CLASS_TUBER_1
TRAINER_PIC_TUBER_M, // FACILITY_CLASS_TUBER_2
- TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_2
+ TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_F
TRAINER_PIC_LADY, // FACILITY_CLASS_LADY
TRAINER_PIC_BEAUTY, // FACILITY_CLASS_BEAUTY
TRAINER_PIC_RICH_BOY, // FACILITY_CLASS_RICH_BOY
@@ -33,16 +33,16 @@ const u8 gFacilityClassToPicIndex[] =
TRAINER_PIC_CAMPER, // FACILITY_CLASS_CAMPER
TRAINER_PIC_PICNICKER, // FACILITY_CLASS_PICNICKER
TRAINER_PIC_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
- TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_1
- TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_2
+ TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_M
+ TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_F
TRAINER_PIC_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
TRAINER_PIC_ELITE_FOUR_SIDNEY, // FACILITY_CLASS_ELITE_FOUR_1
TRAINER_PIC_ELITE_FOUR_PHOEBE, // FACILITY_CLASS_ELITE_FOUR_2
TRAINER_PIC_LEADER_ROXANNE, // FACILITY_CLASS_LEADER_1
TRAINER_PIC_LEADER_BRAWLY, // FACILITY_CLASS_LEADER_2
TRAINER_PIC_LEADER_TATE_AND_LIZA, // FACILITY_CLASS_LEADER_3
- TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_1
- TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_2
+ TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_M
+ TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_F
TRAINER_PIC_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
TRAINER_PIC_WINSTRATE_M, // FACILITY_CLASS_POKEFAN_1
TRAINER_PIC_WINSTRATE_F, // FACILITY_CLASS_POKEFAN_2
@@ -63,28 +63,28 @@ const u8 gFacilityClassToPicIndex[] =
TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS
TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR
TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1
- TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_2
+ TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_MAY
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3
TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4
- TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_5
+ TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6
TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7
TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2
TRAINER_PIC_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
- TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_1
- TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_2
+ TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_M
+ TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_F
TRAINER_PIC_MAGMA_LEADER_MAXIE, // FACILITY_CLASS_MAGMA_LEADER
TRAINER_PIC_LASS, // FACILITY_CLASS_LASS
TRAINER_PIC_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
TRAINER_PIC_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
TRAINER_PIC_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
- TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_8
+ TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_STEVEN
TRAINER_PIC_SALON_MAIDEN_ANABEL, // FACILITY_CLASS_SALON_MAIDEN
TRAINER_PIC_DOME_ACE_TUCKER, // FACILITY_CLASS_DOME_ACE
- TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_9
- TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_10
- TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_11
- TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_12
+ TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_RED
+ TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_LEAF
+ TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN
+ TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY
};
const u8 gFacilityClassToTrainerClass[] =
@@ -92,13 +92,13 @@ const u8 gFacilityClassToTrainerClass[] =
TRAINER_CLASS_HIKER, // FACILITY_CLASS_HIKER
TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_1
TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_1
- TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_1
+ TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_M
TRAINER_CLASS_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
TRAINER_CLASS_COLLECTOR, // FACILITY_CLASS_COLLECTOR
TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_2
TRAINER_CLASS_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_1
- TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_1
+ TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_M
TRAINER_CLASS_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
TRAINER_CLASS_AQUA_LEADER, // FACILITY_CLASS_AQUA_LEADER
TRAINER_CLASS_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
@@ -107,7 +107,7 @@ const u8 gFacilityClassToTrainerClass[] =
TRAINER_CLASS_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
TRAINER_CLASS_TUBER_1, // FACILITY_CLASS_TUBER_1
TRAINER_CLASS_TUBER_2, // FACILITY_CLASS_TUBER_2
- TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_2
+ TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_F
TRAINER_CLASS_LADY, // FACILITY_CLASS_LADY
TRAINER_CLASS_BEAUTY, // FACILITY_CLASS_BEAUTY
TRAINER_CLASS_RICH_BOY, // FACILITY_CLASS_RICH_BOY
@@ -119,16 +119,16 @@ const u8 gFacilityClassToTrainerClass[] =
TRAINER_CLASS_CAMPER, // FACILITY_CLASS_CAMPER
TRAINER_CLASS_PICNICKER, // FACILITY_CLASS_PICNICKER
TRAINER_CLASS_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
- TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_1
- TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_2
+ TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_M
+ TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_F
TRAINER_CLASS_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_1
TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_2
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_1
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_2
TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_3
- TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_1
- TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_2
+ TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_M
+ TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_F
TRAINER_CLASS_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_1
TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_2
@@ -149,28 +149,28 @@ const u8 gFacilityClassToTrainerClass[] =
TRAINER_CLASS_TWINS, // FACILITY_CLASS_TWINS
TRAINER_CLASS_SAILOR, // FACILITY_CLASS_SAILOR
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_1
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_2
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_MAY
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_3
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_4
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_5
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_6
TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_7
TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_2
TRAINER_CLASS_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
- TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_1
- TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_2
+ TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_M
+ TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_F
TRAINER_CLASS_MAGMA_LEADER, // FACILITY_CLASS_MAGMA_LEADER
TRAINER_CLASS_LASS, // FACILITY_CLASS_LASS
TRAINER_CLASS_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
TRAINER_CLASS_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
TRAINER_CLASS_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_8
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_STEVEN
TRAINER_CLASS_SALON_MAIDEN, // FACILITY_CLASS_SALON_MAIDEN
TRAINER_CLASS_DOME_ACE, // FACILITY_CLASS_DOME_ACE
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_9
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_10
- TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_11
- TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_12
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_RED
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_LEAF
+ TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN
+ TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY
};
#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
diff --git a/include/data/text/abilities.h b/include/data/text/abilities.h
new file mode 100644
index 000000000..2efd76afc
--- /dev/null
+++ b/include/data/text/abilities.h
@@ -0,0 +1,247 @@
+#ifndef POKEEMERALD_DATA_TEXT_ABILITIES_H
+#define POKEEMERALD_DATA_TEXT_ABILITIES_H
+
+static const u8 gNoneAbilityDescription[] = _("No special ability.");
+static const u8 gStenchAbilityDescription[] = _("Helps repel wild POKéMON.");
+static const u8 gDrizzleAbilityDescription[] = _("Summons rain in battle.");
+static const u8 gSpeedBoostAbilityDescription[] = _("Gradually boosts SPEED.");
+static const u8 gBattleArmorAbilityDescription[] = _("Blocks critical hits.");
+static const u8 gSturdyAbilityDescription[] = _("Negates 1-hit KO attacks.");
+static const u8 gDampAbilityDescription[] = _("Prevents self-destruction.");
+static const u8 gLimberAbilityDescription[] = _("Prevents paralysis.");
+static const u8 gSandVeilAbilityDescription[] = _("Ups evasion in a sandstorm.");
+static const u8 gStaticAbilityDescription[] = _("Paralyzes on contact.");
+static const u8 gVoltAbsorbAbilityDescription[] = _("Turns electricity into HP.");
+static const u8 gWaterAbsorbAbilityDescription[] = _("Changes water into HP.");
+static const u8 gObliviousAbilityDescription[] = _("Prevents attraction.");
+static const u8 gCloudNineAbilityDescription[] = _("Negates weather effects.");
+static const u8 gCompoundEyesAbilityDescription[] = _("Raises accuracy.");
+static const u8 gInsomniaAbilityDescription[] = _("Prevents sleep.");
+static const u8 gColorChangeAbilityDescription[] = _("Changes type to foe’s move.");
+static const u8 gImmunityAbilityDescription[] = _("Prevents poisoning.");
+static const u8 gFlashFireAbilityDescription[] = _("Powers up if hit by fire.");
+static const u8 gShieldDustAbilityDescription[] = _("Prevents added effects.");
+static const u8 gOwnTempoAbilityDescription[] = _("Prevents confusion.");
+static const u8 gSuctionCupsAbilityDescription[] = _("Firmly anchors the body.");
+static const u8 gIntimidateAbilityDescription[] = _("Lowers the foe’s ATTACK.");
+static const u8 gShadowTagAbilityDescription[] = _("Prevents the foe’s escape.");
+static const u8 gRoughSkinAbilityDescription[] = _("Hurts to touch.");
+static const u8 gWonderGuardAbilityDescription[] = _("“Super effective” hits.");
+static const u8 gLevitateAbilityDescription[] = _("Not hit by GROUND attacks.");
+static const u8 gEffectSporeAbilityDescription[] = _("Leaves spores on contact.");
+static const u8 gSynchronizeAbilityDescription[] = _("Passes on status problems.");
+static const u8 gClearBodyAbilityDescription[] = _("Prevents ability reduction.");
+static const u8 gNaturalCureAbilityDescription[] = _("Heals upon switching out.");
+static const u8 gLightningRodAbilityDescription[] = _("Draws electrical moves.");
+static const u8 gSereneGraceAbilityDescription[] = _("Promotes added effects.");
+static const u8 gSwiftSwimAbilityDescription[] = _("Raises SPEED in rain.");
+static const u8 gChlorophyllAbilityDescription[] = _("Raises SPEED in sunshine.");
+static const u8 gIlluminateAbilityDescription[] = _("Encounter rate increases.");
+static const u8 gTraceAbilityDescription[] = _("Copies special ability.");
+static const u8 gHugePowerAbilityDescription[] = _("Raises ATTACK.");
+static const u8 gPoisonPointAbilityDescription[] = _("Poisons foe on contact.");
+static const u8 gInnerFocusAbilityDescription[] = _("Prevents flinching.");
+static const u8 gMagmaArmorAbilityDescription[] = _("Prevents freezing.");
+static const u8 gWaterVeilAbilityDescription[] = _("Prevents burns.");
+static const u8 gMagnetPullAbilityDescription[] = _("Traps STEEL-type POKéMON.");
+static const u8 gSoundproofAbilityDescription[] = _("Avoids sound-based moves.");
+static const u8 gRainDishAbilityDescription[] = _("Slight HP recovery in rain.");
+static const u8 gSandStreamAbilityDescription[] = _("Summons a sandstorm.");
+static const u8 gPressureAbilityDescription[] = _("Raises foe’s PP usage.");
+static const u8 gThickFatAbilityDescription[] = _("Heat-and-cold protection.");
+static const u8 gEarlyBirdAbilityDescription[] = _("Awakens quickly from sleep.");
+static const u8 gFlameBodyAbilityDescription[] = _("Burns the foe on contact.");
+static const u8 gRunAwayAbilityDescription[] = _("Makes escaping easier.");
+static const u8 gKeenEyeAbilityDescription[] = _("Prevents loss of accuracy.");
+static const u8 gHyperCutterAbilityDescription[] = _("Prevents ATTACK reduction.");
+static const u8 gPickupAbilityDescription[] = _("May pick up items.");
+static const u8 gTruantAbilityDescription[] = _("Moves only every two turns.");
+static const u8 gHustleAbilityDescription[] = _("Trades accuracy for power.");
+static const u8 gCuteCharmAbilityDescription[] = _("Infatuates on contact.");
+static const u8 gPlusAbilityDescription[] = _("Powers up with MINUS.");
+static const u8 gMinusAbilityDescription[] = _("Powers up with PLUS.");
+static const u8 gForecastAbilityDescription[] = _("Changes with the weather.");
+static const u8 gStickyHoldAbilityDescription[] = _("Prevents item theft.");
+static const u8 gShedSkinAbilityDescription[] = _("Heals the body by shedding.");
+static const u8 gGutsAbilityDescription[] = _("Ups ATTACK if suffering.");
+static const u8 gMarvelScaleAbilityDescription[] = _("Ups DEFENSE if suffering.");
+static const u8 gLiquidOozeAbilityDescription[] = _("Draining causes injury.");
+static const u8 gOvergrowAbilityDescription[] = _("Ups GRASS moves in a pinch.");
+static const u8 gBlazeAbilityDescription[] = _("Ups FIRE moves in a pinch.");
+static const u8 gTorrentAbilityDescription[] = _("Ups WATER moves in a pinch.");
+static const u8 gSwarmAbilityDescription[] = _("Ups BUG moves in a pinch.");
+static const u8 gRockHeadAbilityDescription[] = _("Prevents recoil damage.");
+static const u8 gDroughtAbilityDescription[] = _("Summons sunlight in battle.");
+static const u8 gArenaTrapAbilityDescription[] = _("Prevents fleeing.");
+static const u8 gVitalSpiritAbilityDescription[] = _("Prevents sleep.");
+static const u8 gWhiteSmokeAbilityDescription[] = _("Prevents ability reduction.");
+static const u8 gPurePowerAbilityDescription[] = _("Raises ATTACK.");
+static const u8 gShellArmorAbilityDescription[] = _("Blocks critical hits.");
+static const u8 gCacophonyAbilityDescription[] = _("Avoids sound-based moves.");
+static const u8 gAirLockAbilityDescription[] = _("Negates weather effects.");
+
+const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1] =
+{
+ _("-------"),
+ _("STENCH"),
+ _("DRIZZLE"),
+ _("SPEED BOOST"),
+ _("BATTLE ARMOR"),
+ _("STURDY"),
+ _("DAMP"),
+ _("LIMBER"),
+ _("SAND VEIL"),
+ _("STATIC"),
+ _("VOLT ABSORB"),
+ _("WATER ABSORB"),
+ _("OBLIVIOUS"),
+ _("CLOUD NINE"),
+ _("COMPOUNDEYES"),
+ _("INSOMNIA"),
+ _("COLOR CHANGE"),
+ _("IMMUNITY"),
+ _("FLASH FIRE"),
+ _("SHIELD DUST"),
+ _("OWN TEMPO"),
+ _("SUCTION CUPS"),
+ _("INTIMIDATE"),
+ _("SHADOW TAG"),
+ _("ROUGH SKIN"),
+ _("WONDER GUARD"),
+ _("LEVITATE"),
+ _("EFFECT SPORE"),
+ _("SYNCHRONIZE"),
+ _("CLEAR BODY"),
+ _("NATURAL CURE"),
+ _("LIGHTNINGROD"),
+ _("SERENE GRACE"),
+ _("SWIFT SWIM"),
+ _("CHLOROPHYLL"),
+ _("ILLUMINATE"),
+ _("TRACE"),
+ _("HUGE POWER"),
+ _("POISON POINT"),
+ _("INNER FOCUS"),
+ _("MAGMA ARMOR"),
+ _("WATER VEIL"),
+ _("MAGNET PULL"),
+ _("SOUNDPROOF"),
+ _("RAIN DISH"),
+ _("SAND STREAM"),
+ _("PRESSURE"),
+ _("THICK FAT"),
+ _("EARLY BIRD"),
+ _("FLAME BODY"),
+ _("RUN AWAY"),
+ _("KEEN EYE"),
+ _("HYPER CUTTER"),
+ _("PICKUP"),
+ _("TRUANT"),
+ _("HUSTLE"),
+ _("CUTE CHARM"),
+ _("PLUS"),
+ _("MINUS"),
+ _("FORECAST"),
+ _("STICKY HOLD"),
+ _("SHED SKIN"),
+ _("GUTS"),
+ _("MARVEL SCALE"),
+ _("LIQUID OOZE"),
+ _("OVERGROW"),
+ _("BLAZE"),
+ _("TORRENT"),
+ _("SWARM"),
+ _("ROCK HEAD"),
+ _("DROUGHT"),
+ _("ARENA TRAP"),
+ _("VITAL SPIRIT"),
+ _("WHITE SMOKE"),
+ _("PURE POWER"),
+ _("SHELL ARMOR"),
+ _("CACOPHONY"),
+ _("AIR LOCK"),
+};
+
+const u8 *const gAbilityDescriptionPointers[] =
+{
+ gNoneAbilityDescription,
+ gStenchAbilityDescription,
+ gDrizzleAbilityDescription,
+ gSpeedBoostAbilityDescription,
+ gBattleArmorAbilityDescription,
+ gSturdyAbilityDescription,
+ gDampAbilityDescription,
+ gLimberAbilityDescription,
+ gSandVeilAbilityDescription,
+ gStaticAbilityDescription,
+ gVoltAbsorbAbilityDescription,
+ gWaterAbsorbAbilityDescription,
+ gObliviousAbilityDescription,
+ gCloudNineAbilityDescription,
+ gCompoundEyesAbilityDescription,
+ gInsomniaAbilityDescription,
+ gColorChangeAbilityDescription,
+ gImmunityAbilityDescription,
+ gFlashFireAbilityDescription,
+ gShieldDustAbilityDescription,
+ gOwnTempoAbilityDescription,
+ gSuctionCupsAbilityDescription,
+ gIntimidateAbilityDescription,
+ gShadowTagAbilityDescription,
+ gRoughSkinAbilityDescription,
+ gWonderGuardAbilityDescription,
+ gLevitateAbilityDescription,
+ gEffectSporeAbilityDescription,
+ gSynchronizeAbilityDescription,
+ gClearBodyAbilityDescription,
+ gNaturalCureAbilityDescription,
+ gLightningRodAbilityDescription,
+ gSereneGraceAbilityDescription,
+ gSwiftSwimAbilityDescription,
+ gChlorophyllAbilityDescription,
+ gIlluminateAbilityDescription,
+ gTraceAbilityDescription,
+ gHugePowerAbilityDescription,
+ gPoisonPointAbilityDescription,
+ gInnerFocusAbilityDescription,
+ gMagmaArmorAbilityDescription,
+ gWaterVeilAbilityDescription,
+ gMagnetPullAbilityDescription,
+ gSoundproofAbilityDescription,
+ gRainDishAbilityDescription,
+ gSandStreamAbilityDescription,
+ gPressureAbilityDescription,
+ gThickFatAbilityDescription,
+ gEarlyBirdAbilityDescription,
+ gFlameBodyAbilityDescription,
+ gRunAwayAbilityDescription,
+ gKeenEyeAbilityDescription,
+ gHyperCutterAbilityDescription,
+ gPickupAbilityDescription,
+ gTruantAbilityDescription,
+ gHustleAbilityDescription,
+ gCuteCharmAbilityDescription,
+ gPlusAbilityDescription,
+ gMinusAbilityDescription,
+ gForecastAbilityDescription,
+ gStickyHoldAbilityDescription,
+ gShedSkinAbilityDescription,
+ gGutsAbilityDescription,
+ gMarvelScaleAbilityDescription,
+ gLiquidOozeAbilityDescription,
+ gOvergrowAbilityDescription,
+ gBlazeAbilityDescription,
+ gTorrentAbilityDescription,
+ gSwarmAbilityDescription,
+ gRockHeadAbilityDescription,
+ gDroughtAbilityDescription,
+ gArenaTrapAbilityDescription,
+ gVitalSpiritAbilityDescription,
+ gWhiteSmokeAbilityDescription,
+ gPurePowerAbilityDescription,
+ gShellArmorAbilityDescription,
+ gCacophonyAbilityDescription,
+ gAirLockAbilityDescription,
+};
+
+#endif // POKEEMERALD_DATA_TEXT_ABILITIES_H
diff --git a/include/data/text/item_descriptions.h b/include/data/text/item_descriptions.h
new file mode 100644
index 000000000..8683978d7
--- /dev/null
+++ b/include/data/text/item_descriptions.h
@@ -0,0 +1,329 @@
+#ifndef POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
+#define POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
+const u8 gDummyItemDescription[] = _("?????");
+//Pokeballs
+const u8 gMasterBallItemDescription[] = _("The best BALL that\ncatches a POKéMON\nwithout fail.");
+const u8 gUltraBallItemDescription[] = _("A better BALL with\na higher catch rate\nthan a GREAT BALL.");
+const u8 gGreatBallItemDescription[] = _("A good BALL with a\nhigher catch rate\nthan a POKé BALL.");
+const u8 gPokeBallItemDescription[] = _("A tool used for\ncatching wild\nPOKéMON.");
+const u8 gSafariBallItemDescription[] = _("A special BALL that\nis used only in the\nSAFARI ZONE.");
+const u8 gNetBallItemDescription[] = _("A BALL that works\nwell on WATER- and\nBUG-type POKéMON.");
+const u8 gDiveBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\non the ocean floor.");
+const u8 gNestBallItemDescription[] = _("A BALL that works\nbetter on weaker\nPOKéMON.");
+const u8 gRepeatBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\ncaught before.");
+const u8 gTimerBallItemDescription[] = _("A BALL that gains\npower in battles\ntaking many turns.");
+const u8 gLuxuryBallItemDescription[] = _("A cozy BALL that\nmakes POKéMON\nmore friendly.");
+const u8 gPremierBallItemDescription[] = _("A rare BALL made\nin commemoration\nof some event.");
+//Medicine
+const u8 gPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n20 points.");
+const u8 gAntidoteItemDescription[] = _("Heals a poisoned\nPOKéMON.");
+const u8 gBurnHealItemDescription[] = _("Heals POKéMON\nof a burn.");
+const u8 gIceHealItemDescription[] = _("Defrosts a frozen\nPOKéMON.");
+const u8 gAwakeningItemDescription[] = _("Awakens a sleeping\nPOKéMON.");
+const u8 gParalyzeHealItemDescription[] = _("Heals a paralyzed\nPOKéMON.");
+const u8 gFullRestoreItemDescription[] = _("Fully restores the\nHP and status of a\nPOKéMON.");
+const u8 gMaxPotionItemDescription[] = _("Fully restores the\nHP of a POKéMON.");
+const u8 gHyperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n200 points.");
+const u8 gSuperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n50 points.");
+const u8 gFullHealItemDescription[] = _("Heals all the\nstatus problems of\none POKéMON.");
+const u8 gReviveItemDescription[] = _("Revives a fainted\nPOKéMON with half\nits HP.");
+const u8 gMaxReviveItemDescription[] = _("Revives a fainted\nPOKéMON with all\nits HP.");
+const u8 gFreshWaterItemDescription[] = _("A mineral water\nthat restores HP\nby 50 points.");
+const u8 gSodaPopItemDescription[] = _("A fizzy soda drink\nthat restores HP\nby 60 points.");
+const u8 gLemonadeItemDescription[] = _("A very sweet drink\nthat restores HP\nby 80 points.");
+const u8 gMoomooMilkItemDescription[] = _("A nutritious milk\nthat restores HP\nby 100 points.");
+const u8 gEnergyPowderItemDescription[] = _("A bitter powder\nthat restores HP\nby 50 points.");
+const u8 gEnergyRootItemDescription[] = _("A bitter root\nthat restores HP\nby 200 points.");
+const u8 gHealPowderItemDescription[] = _("A bitter powder\nthat heals all\nstatus problems.");
+const u8 gRevivalHerbItemDescription[] = _("A very bitter herb\nthat revives a\nfainted POKéMON.");
+const u8 gEtherItemDescription[] = _("Restores the PP\nof a selected move\nby 10.");
+const u8 gMaxEtherItemDescription[] = _("Fully restores the\nPP of a selected\nmove.");
+const u8 gElixirItemDescription[] = _("Restores the PP\nof all moves by 10.");
+const u8 gMaxElixirItemDescription[] = _("Fully restores the\nPP of a POKéMON’s\nmoves.");
+const u8 gLavaCookieItemDescription[] = _("A local specialty\nthat heals all\nstatus problems.");
+const u8 gBlueFluteItemDescription[] = _("A glass flute that\nawakens sleeping\nPOKéMON.");
+const u8 gYellowFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of confusion.");
+const u8 gRedFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of attraction.");
+const u8 gBlackFluteItemDescription[] = _("A glass flute that\nkeeps away wild\nPOKéMON.");
+const u8 gWhiteFluteItemDescription[] = _("A glass flute that\nlures wild POKéMON.");
+const u8 gBerryJuiceItemDescription[] = _("A 100% pure juice\nthat restores HP\nby 20 points.");
+const u8 gSacredAshItemDescription[] = _("Fully revives and\nrestores all\nfainted POKéMON.");
+//Collectibles
+const u8 gShoalSaltItemDescription[] = _("Salt obtained from\ndeep inside the\nSHOAL CAVE.");
+const u8 gShoalShellItemDescription[] = _("A seashell found\ndeep inside the\nSHOAL CAVE.");
+const u8 gRedShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
+const u8 gBlueShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
+const u8 gYellowShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
+const u8 gGreenShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
+//Vitamins
+const u8 gHPUpItemDescription[] = _("Raises the base HP\nof one POKéMON.");
+const u8 gProteinItemDescription[] = _("Raises the base\nATTACK stat of one\nPOKéMON.");
+const u8 gIronItemDescription[] = _("Raises the base\nDEFENSE stat of\none POKéMON.");
+const u8 gCarbosItemDescription[] = _("Raises the base\nSPEED stat of one\nPOKéMON.");
+const u8 gCalciumItemDescription[] = _("Raises the base\nSP. ATK stat of one\nPOKéMON.");
+const u8 gRareCandyItemDescription[] = _("Raises the level\nof a POKéMON by\none.");
+const u8 gPPUpItemDescription[] = _("Raises the maximum\nPP of a selected\nmove.");
+const u8 gZincItemDescription[] = _("Raises the base\nSP. DEF stat of one\nPOKéMON.");
+const u8 gPPMaxItemDescription[] = _("Raises the PP of a\nmove to its maximum\npoints.");
+//Battle items
+const u8 gGuardSpecItemDescription[] = _("Prevents stat\nreduction when\nused in battle.");
+const u8 gDireHitItemDescription[] = _("Raises the\ncritical-hit ratio\nduring one battle.");
+const u8 gXAttackItemDescription[] = _("Raises the stat\nATTACK during one\nbattle.");
+const u8 gXDefendItemDescription[] = _("Raises the stat\nDEFENSE during one\nbattle.");
+const u8 gXSpeedItemDescription[] = _("Raises the stat\nSPEED during one\nbattle.");
+const u8 gXAccuracyItemDescription[] = _("Raises accuracy\nof attack moves\nduring one battle.");
+const u8 gXSpecialItemDescription[] = _("Raises the stat\nSP. ATK during one\nbattle.");
+const u8 gPokeDollItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
+const u8 gFluffyTailItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
+//Field items
+const u8 gSuperRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 200\nsteps.");
+const u8 gMaxRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 250\nsteps.");
+const u8 gEscapeRopeItemDescription[] = _("Use to escape\ninstantly from a\ncave or a dungeon.");
+const u8 gRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 100\nsteps.");
+//Evolution stones
+const u8 gSunStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+const u8 gMoonStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+const u8 gFireStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+const u8 gThunderStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+const u8 gWaterStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+const u8 gLeafStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+//Valuable items
+const u8 gTinyMushroomItemDescription[] = _("A plain mushroom\nthat would sell\nat a cheap price.");
+const u8 gBigMushroomItemDescription[] = _("A rare mushroom\nthat would sell at a\nhigh price.");
+const u8 gPearlItemDescription[] = _("A pretty pearl\nthat would sell at a\ncheap price.");
+const u8 gBigPearlItemDescription[] = _("A lovely large pearl\nthat would sell at a\nhigh price.");
+const u8 gStardustItemDescription[] = _("Beautiful red sand.\nCan be sold at a\nhigh price.");
+const u8 gStarPieceItemDescription[] = _("A red gem shard.\nIt would sell for a\nvery high price.");
+const u8 gNuggetItemDescription[] = _("A nugget of pure\ngold. Can be sold at\na high price.");
+const u8 gHeartScaleItemDescription[] = _("A lovely scale.\nIt is coveted by\ncollectors.");
+//Mail
+const u8 gOrangeMailItemDescription[] = _("A ZIGZAGOON-print\nMAIL to be held by\na POKéMON.");
+const u8 gHarborMailItemDescription[] = _("A WINGULL-print\nMAIL to be held by\na POKéMON.");
+const u8 gGlitterMailItemDescription[] = _("A PIKACHU-print\nMAIL to be held by\na POKéMON.");
+const u8 gMechMailItemDescription[] = _("A MAGNEMITE-print\nMAIL to be held by\na POKéMON.");
+const u8 gWoodMailItemDescription[] = _("A SLAKOTH-print\nMAIL to be held by\na POKéMON.");
+const u8 gWaveMailItemDescription[] = _("A WAILMER-print\nMAIL to be held by\na POKéMON.");
+const u8 gBeadMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON.");
+const u8 gShadowMailItemDescription[] = _("A DUSKULL-print\nMAIL to be held by\na POKéMON.");
+const u8 gTropicMailItemDescription[] = _("A BELLOSSOM-print\nMAIL to be held by\na POKéMON.");
+const u8 gDreamMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON.");
+const u8 gFabMailItemDescription[] = _("A gorgeous-print\nMAIL to be held\nby a POKéMON.");
+const u8 gRetroMailItemDescription[] = _("MAIL featuring the\ndrawings of three\nPOKéMON.");
+//Berries
+const u8 gCheriBerryItemDescription[] = _("A hold item that\nheals paralysis\nin battle.");
+const u8 gChestoBerryItemDescription[] = _("A hold item that\nawakens POKéMON\nin battle.");
+const u8 gPechaBerryItemDescription[] = _("A hold item that\nheals poisoning\nin battle.");
+const u8 gRawstBerryItemDescription[] = _("A hold item that\nheals a burn in\nbattle.");
+const u8 gAspearBerryItemDescription[] = _("A hold item that\ndefrosts POKéMON\nin battle.");
+const u8 gLeppaBerryItemDescription[] = _("A hold item that\nrestores 10 PP in\nbattle.");
+const u8 gOranBerryItemDescription[] = _("A hold item that\nrestores 10 HP in\nbattle.");
+const u8 gPersimBerryItemDescription[] = _("A hold item that\nheals confusion\nin battle.");
+const u8 gLumBerryItemDescription[] = _("A hold item that\nheals any status\nproblem in battle.");
+const u8 gSitrusBerryItemDescription[] = _("A hold item that\nrestores 30 HP in\nbattle.");
+const u8 gFigyBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
+const u8 gWikiBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
+const u8 gMagoBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
+const u8 gAguavBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
+const u8 gIapapaBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
+const u8 gRazzBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RAZZ.");
+const u8 gBlukBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BLUK.");
+const u8 gNanabBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NANAB.");
+const u8 gWepearBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WEPEAR.");
+const u8 gPinapBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PINAP.");
+const u8 gPomegBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase HP.");
+const u8 gKelpsyBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase ATTACK.");
+const u8 gQualotBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase DEFENSE.");
+const u8 gHondewBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. ATK.");
+const u8 gGrepaBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. DEF.");
+const u8 gTamatoBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SPEED.");
+const u8 gCornnBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow CORNN.");
+const u8 gMagostBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow MAGOST.");
+const u8 gRabutaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RABUTA.");
+const u8 gNomelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NOMEL.");
+const u8 gSpelonBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow SPELON.");
+const u8 gPamtreBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PAMTRE.");
+const u8 gWatmelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WATMEL.");
+const u8 gDurinBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow DURIN.");
+const u8 gBelueBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BELUE.");
+const u8 gLiechiBerryItemDescription[] = _("A hold item that\nraises ATTACK in\na pinch.");
+const u8 gGanlonBerryItemDescription[] = _("A hold item that\nraises DEFENSE in\na pinch.");
+const u8 gSalacBerryItemDescription[] = _("A hold item that\nraises SPEED in\na pinch.");
+const u8 gPetayaBerryItemDescription[] = _("A hold item that\nraises SP. ATK in\na pinch.");
+const u8 gApicotBerryItemDescription[] = _("A hold item that\nraises SP. DEF in\na pinch.");
+const u8 gLansatBerryItemDescription[] = _("A hold item that\nups the critical-\nhit rate in a pinch.");
+const u8 gStarfBerryItemDescription[] = _("A hold item that\nsharply boosts a\nstat in a pinch.");
+const u8 gEnigmaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow a mystery.");
+//Hold items
+const u8 gBrightPowderItemDescription[] = _("A hold item that\ncasts a glare to\nreduce accuracy.");
+const u8 gWhiteHerbItemDescription[] = _("A hold item that\nrestores any\nlowered stat.");
+const u8 gMachoBraceItemDescription[] = _("A hold item that\npromotes growth,\nbut reduces SPEED.");
+const u8 gExpShareItemDescription[] = _("A hold item that\ngets EXP. points\nfrom battles.");
+const u8 gQuickClawItemDescription[] = _("A hold item that\noccasionally allows\nthe first strike.");
+const u8 gSootheBellItemDescription[] = _("A hold item that\ncalms spirits and\nfosters friendship.");
+const u8 gMentalHerbItemDescription[] = _("A hold item that\nsnaps POKéMON out\nof infatuation.");
+const u8 gChoiceBandItemDescription[] = _("Raises a move’s\npower, but permits\nonly that move.");
+const u8 gKingsRockItemDescription[] = _("A hold item that\nmay cause flinching\nwhen the foe is hit.");
+const u8 gSilverPowderItemDescription[] = _("A hold item that\nraises the power of\nBUG-type moves.");
+const u8 gAmuletCoinItemDescription[] = _("Doubles money in\nbattle if the\nholder takes part.");
+const u8 gCleanseTagItemDescription[] = _("A hold item that\nhelps repel wild\nPOKéMON.");
+const u8 gSoulDewItemDescription[] = _("Hold item: raises\nSP. ATK & SP. DEF of\nLATIOS & LATIAS.");
+const u8 gDeepSeaToothItemDescription[] = _("A hold item that\nraises the SP. ATK\nof CLAMPERL.");
+const u8 gDeepSeaScaleItemDescription[] = _("A hold item that\nraises the SP. DEF\nof CLAMPERL.");
+const u8 gSmokeBallItemDescription[] = _("A hold item that\nassures fleeing\nfrom wild POKéMON.");
+const u8 gEverstoneItemDescription[] = _("A wondrous hold\nitem that prevents\nevolution.");
+const u8 gFocusBandItemDescription[] = _("A hold item that\noccasionally\nprevents fainting.");
+const u8 gLuckyEggItemDescription[] = _("A hold item that\nboosts EXP. points\nearned in battle.");
+const u8 gScopeLensItemDescription[] = _("A hold item that\nimproves the\ncritical-hit rate.");
+const u8 gMetalCoatItemDescription[] = _("A hold item that\nraises the power of\nSTEEL-type moves.");
+const u8 gLeftoversItemDescription[] = _("A hold item that\ngradually restores\nHP in battle.");
+const u8 gDragonScaleItemDescription[] = _("A strange scale\nheld by DRAGON-\ntype POKéMON.");
+const u8 gLightBallItemDescription[] = _("A hold item that\nraises the SP. ATK\nof PIKACHU.");
+const u8 gSoftSandItemDescription[] = _("A hold item that\nraises the power of\nGROUND-type moves.");
+const u8 gHardStoneItemDescription[] = _("A hold item that\nraises the power of\nROCK-type moves.");
+const u8 gMiracleSeedItemDescription[] = _("A hold item that\nraises the power of\nGRASS-type moves.");
+const u8 gBlackGlassesItemDescription[] = _("A hold item that\nraises the power of\nDARK-type moves.");
+const u8 gBlackBeltItemDescription[] = _("A hold item that\nboosts FIGHTING-\ntype moves.");
+const u8 gMagnetItemDescription[] = _("A hold item that\nboosts ELECTRIC-\ntype moves.");
+const u8 gMysticWaterItemDescription[] = _("A hold item that\nraises the power of\nWATER-type moves.");
+const u8 gSharpBeakItemDescription[] = _("A hold item that\nraises the power of\nFLYING-type moves.");
+const u8 gPoisonBarbItemDescription[] = _("A hold item that\nraises the power of\nPOISON-type moves.");
+const u8 gNeverMeltIceItemDescription[] = _("A hold item that\nraises the power of\nICE-type moves.");
+const u8 gSpellTagItemDescription[] = _("A hold item that\nraises the power of\nGHOST-type moves.");
+const u8 gTwistedSpoonItemDescription[] = _("A hold item that\nboosts PSYCHIC-\ntype moves.");
+const u8 gCharcoalItemDescription[] = _("A hold item that\nraises the power of\nFIRE-type moves.");
+const u8 gDragonFangItemDescription[] = _("A hold item that\nraises the power of\nDRAGON-type moves.");
+const u8 gSilkScarfItemDescription[] = _("A hold item that\nraises the power of\nNORMAL-type moves.");
+const u8 gUpGradeItemDescription[] = _("A peculiar box made\nby SILPH CO.");
+const u8 gShellBellItemDescription[] = _("A hold item that\nrestores HP upon\nstriking the foe.");
+const u8 gSeaIncenseItemDescription[] = _("A hold item that\nslightly boosts\nWATER-type moves.");
+const u8 gLaxIncenseItemDescription[] = _("A hold item that\nslightly lowers the\nfoe’s accuracy.");
+const u8 gLuckyPunchItemDescription[] = _("A hold item that\nraises CHANSEY’s\ncritical-hit rate.");
+const u8 gMetalPowderItemDescription[] = _("A hold item that\nraises DITTO’s\nDEFENSE.");
+const u8 gThickClubItemDescription[] = _("A hold item that \nraises CUBONE or\nMAROWAK’s ATTACK.");
+const u8 gStickItemDescription[] = _("A hold item that\nraises FARFETCH’D’s\ncritical-hit ratio.");
+const u8 gRedScarfItemDescription[] = _("A hold item that\nraises COOL in\nCONTESTS.");
+const u8 gBlueScarfItemDescription[] = _("A hold item that\nraises BEAUTY in\nCONTESTS.");
+const u8 gPinkScarfItemDescription[] = _("A hold item that\nraises CUTE in\nCONTESTS.");
+const u8 gGreenScarfItemDescription[] = _("A hold item that\nraises SMART in\nCONTESTS.");
+const u8 gYellowScarfItemDescription[] = _("A hold item that\nraises TOUGH in\nCONTESTS.");
+//Key items
+const u8 gMachBikeItemDescription[] = _("A folding bicycle\nthat doubles your\nspeed or better.");
+const u8 gCoinCaseItemDescription[] = _("A case that holds\nup to 9,999 COINS.");
+const u8 gItemfinderItemDescription[] = _("A device that\nsignals an invisible\nitem by sound.");
+const u8 gOldRodItemDescription[] = _("Use by any body of\nwater to fish for\nwild POKéMON.");
+const u8 gGoodRodItemDescription[] = _("A decent fishing\nrod for catching\nwild POKéMON.");
+const u8 gSuperRodItemDescription[] = _("The best fishing\nrod for catching\nwild POKéMON.");
+const u8 gSSTicketItemDescription[] = _("The ticket required\nfor sailing on a\nferry.");
+const u8 gContestPassItemDescription[] = _("The pass required\nfor entering\nPOKéMON CONTESTS.");
+const u8 gWailmerPailItemDescription[] = _("A tool used for\nwatering BERRIES\nand plants.");
+const u8 gDevonGoodsItemDescription[] = _("A package that\ncontains DEVON’s\nmachine parts.");
+const u8 gSootSackItemDescription[] = _("A sack used to\ngather and hold\nvolcanic ash.");
+const u8 gBasementKeyItemDescription[] = _("The key for NEW\nMAUVILLE beneath\nMAUVILLE CITY.");
+const u8 gAcroBikeItemDescription[] = _("A folding bicycle\ncapable of jumps\nand wheelies.");
+const u8 gPokeblockCaseItemDescription[] = _("A case for holding\n{POKEBLOCK}S made with\na BERRY BLENDER.");
+const u8 gLetterItemDescription[] = _("A letter to STEVEN\nfrom the PRESIDENT\nof the DEVON CORP.");
+const u8 gEonTicketItemDescription[] = _("The ticket for a\nferry to a distant\nsouthern island.");
+const u8 gRedOrbItemDescription[] = _("A red, glowing orb\nsaid to contain an\nancient power.");
+const u8 gBlueOrbItemDescription[] = _("A blue, glowing orb\nsaid to contain an\nancient power.");
+const u8 gScannerItemDescription[] = _("A device found\ninside the\nABANDONED SHIP.");
+const u8 gGoGogglesItemDescription[] = _("Nifty goggles that\nprotect eyes from\ndesert sandstorms.");
+const u8 gMeteoriteItemDescription[] = _("A meteorite found\nat METEOR FALLS.");
+const u8 gRoom1KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
+const u8 gRoom2KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
+const u8 gRoom4KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
+const u8 gRoom6KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
+const u8 gStorageKeyItemDescription[] = _("The key to the\nstorage inside the\nABANDONED SHIP.");
+const u8 gRootFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
+const u8 gClawFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
+const u8 gDevonScopeItemDescription[] = _("A device by DEVON\nthat signals any\nunseeable POKéMON.");
+//TMs/HMs
+const u8 gTM01ItemDescription[] = _("Powerful, but makes\nthe user flinch if\nhit by the foe.");
+const u8 gTM02ItemDescription[] = _("Hooks and slashes\nthe foe with long,\nsharp claws.");
+const u8 gTM03ItemDescription[] = _("Generates an\nultrasonic wave\nthat may confuse.");
+const u8 gTM04ItemDescription[] = _("Raises SP. ATK and\nSP. DEF by focusing\nthe mind.");
+const u8 gTM05ItemDescription[] = _("A savage roar that\nmakes the foe flee \nto end the battle.");
+const u8 gTM06ItemDescription[] = _("Poisons the foe\nwith a toxin that\ngradually worsens.");
+const u8 gTM07ItemDescription[] = _("Creates a hailstorm\nthat damages all\ntypes except ICE.");
+const u8 gTM08ItemDescription[] = _("Bulks up the body\nto boost both\nATTACK & DEFENSE.");
+const u8 gTM09ItemDescription[] = _("Shoots 2 to 5 seeds\nin a row to strike\nthe foe.");
+const u8 gTM10ItemDescription[] = _("The attack power\nvaries among\ndifferent POKéMON.");
+const u8 gTM11ItemDescription[] = _("Raises the power of\nFIRE-type moves\nfor 5 turns.");
+const u8 gTM12ItemDescription[] = _("Enrages the foe so\nit can only use\nattack moves.");
+const u8 gTM13ItemDescription[] = _("Fires an icy cold\nbeam that may\nfreeze the foe.");
+const u8 gTM14ItemDescription[] = _("A brutal snow-and-\nwind attack that\nmay freeze the foe.");
+const u8 gTM15ItemDescription[] = _("Powerful, but needs\nrecharging the\nnext turn.");
+const u8 gTM16ItemDescription[] = _("Creates a wall of\nlight that lowers\nSP. ATK damage.");
+const u8 gTM17ItemDescription[] = _("Negates all damage,\nbut may fail if used\nin succession.");
+const u8 gTM18ItemDescription[] = _("Raises the power of\nWATER-type moves\nfor 5 turns.");
+const u8 gTM19ItemDescription[] = _("Recovers half the\nHP of the damage \nthis move inflicts.");
+const u8 gTM20ItemDescription[] = _("Prevents status\nabnormality with a\nmystical power.");
+const u8 gTM21ItemDescription[] = _("The less the user\nlikes you, the more\npowerful this move.");
+const u8 gTM22ItemDescription[] = _("Absorbs sunlight in\nthe 1st turn, then\nattacks next turn.");
+const u8 gTM23ItemDescription[] = _("Slams the foe with\na hard tail. It may\nlower DEFENSE.");
+const u8 gTM24ItemDescription[] = _("A powerful electric\nattack that may\ncause paralysis.");
+const u8 gTM25ItemDescription[] = _("Strikes the foe\nwith a thunderbolt.\nIt may paralyze.");
+const u8 gTM26ItemDescription[] = _("Causes a quake\nthat has no effect\non flying foes.");
+const u8 gTM27ItemDescription[] = _("The more the user\nlikes you, the more\npowerful this move.");
+const u8 gTM28ItemDescription[] = _("Digs underground\nthe 1st turn, then\nstrikes next turn.");
+const u8 gTM29ItemDescription[] = _("A powerful psychic\nattack that may\nlower SP. DEF.");
+const u8 gTM30ItemDescription[] = _("Hurls a dark lump\nat the foe. It may\nlower SP. DEF.");
+const u8 gTM31ItemDescription[] = _("Destroys barriers\nlike LIGHT SCREEN\nand causes damage.");
+const u8 gTM32ItemDescription[] = _("Creates illusory\ncopies to enhance\nelusiveness.");
+const u8 gTM33ItemDescription[] = _("Creates a wall of\nlight that weakens\nphysical attacks.");
+const u8 gTM34ItemDescription[] = _("Zaps the foe with a\njolt of electricity\nthat never misses.");
+const u8 gTM35ItemDescription[] = _("Looses a stream of\nfire that may burn\nthe foe.");
+const u8 gTM36ItemDescription[] = _("Hurls sludge at the\nfoe. It may poison\nthe foe.");
+const u8 gTM37ItemDescription[] = _("Causes a sandstorm\nthat hits the foe\nover several turns.");
+const u8 gTM38ItemDescription[] = _("A powerful fire\nattack that may\nburn the foe.");
+const u8 gTM39ItemDescription[] = _("Stops the foe from\nmoving with rocks.\nMay lower SPEED.");
+const u8 gTM40ItemDescription[] = _("An extremely fast\nattack that can’t\nbe avoided.");
+const u8 gTM41ItemDescription[] = _("Prevents the foe\nfrom using the same\nmove in a row.");
+const u8 gTM42ItemDescription[] = _("Raises ATTACK when\npoisoned, burned,\nor paralyzed.");
+const u8 gTM43ItemDescription[] = _("Adds an effect to\nattack depending\non the location.");
+const u8 gTM44ItemDescription[] = _("The user sleeps for\n2 turns to restore\nhealth and status.");
+const u8 gTM45ItemDescription[] = _("Makes it tough to\nattack a foe of the\nopposite gender.");
+const u8 gTM46ItemDescription[] = _("While attacking,\nit may steal the\nfoe’s held item.");
+const u8 gTM47ItemDescription[] = _("Spreads hard-\nedged wings and\nslams into the foe.");
+const u8 gTM48ItemDescription[] = _("Switches abilities\nwith the foe on the\nturn this is used.");
+const u8 gTM49ItemDescription[] = _("Steals the effects\nof the move the foe\nis trying to use.");
+const u8 gTM50ItemDescription[] = _("Enables full-power\nattack, but sharply\nlowers SP. ATK.");
+
+const u8 gHM01ItemDescription[] = _("Attacks the foe\nwith sharp blades\nor claws.");
+const u8 gHM02ItemDescription[] = _("Flies up on the\nfirst turn, then\nattacks next turn.");
+const u8 gHM03ItemDescription[] = _("Creates a huge\nwave, then crashes\nit down on the foe.");
+const u8 gHM04ItemDescription[] = _("Builds enormous\npower, then slams\nthe foe.");
+const u8 gHM05ItemDescription[] = _("Looses a powerful\nblast of light that\nreduces accuracy.");
+const u8 gHM06ItemDescription[] = _("A rock-crushingly\ntough attack that\nmay lower DEFENSE.");
+const u8 gHM07ItemDescription[] = _("Attacks the foe\nwith enough power\nto climb waterfalls.");
+const u8 gHM08ItemDescription[] = _("Dives underwater\nthe 1st turn, then\nattacks next turn.");
+//FireRed/LeafGreen key items
+const u8 gOaksParcelItemDescription[] = _("A parcel for PROF.\nOAK from a POKéMON\nMART’s clerk.");
+const u8 gPokeFluteItemDescription[] = _("A sweet-sounding\nflute that awakens\nPOKéMON.");
+const u8 gSecretKeyItemDescription[] = _("The key to the\nCINNABAR ISLAND\nGYM’s entrance.");
+const u8 gBikeVoucherItemDescription[] = _("A voucher for\nobtaining a bicycle\nfrom the BIKE SHOP.");
+const u8 gGoldTeethItemDescription[] = _("Gold dentures lost\nby the SAFARI\nZONE’s WARDEN.");
+const u8 gOldAmberItemDescription[] = _("A stone containing\nthe genes of an\nancient POKéMON.");
+const u8 gCardKeyItemDescription[] = _("A card-type door\nkey used in SILPH\nCO’s office.");
+const u8 gLiftKeyItemDescription[] = _("An elevator key\nused in TEAM\nROCKET’s HIDEOUT.");
+const u8 gHelixFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s seashell.");
+const u8 gDomeFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON’s shell.");
+const u8 gSilphScopeItemDescription[] = _("SILPH CO’s scope\nmakes unseeable\nPOKéMON visible.");
+const u8 gBicycleItemDescription[] = _("A folding bicycle\nthat is faster than\nthe RUNNING SHOES.");
+const u8 gTownMapItemDescription[] = _("Can be viewed\nanytime. Shows your\npresent location.");
+const u8 gVSSeekerItemDescription[] = _("A rechargeable unit\nthat flags battle-\nready TRAINERS.");
+const u8 gFameCheckerItemDescription[] = _("Stores information\non famous people\nfor instant recall.");
+const u8 gTMCaseItemDescription[] = _("A convenient case \nthat holds TMs and\nHMs.");
+const u8 gBerryPouchItemDescription[] = _("A convenient\ncontainer that\nholds BERRIES.");
+const u8 gTeachyTVItemDescription[] = _("A TV set tuned to\nan advice program\nfor TRAINERS.");
+const u8 gTriPassItemDescription[] = _("A pass for ferries\nbetween ONE, TWO,\nand THREE ISLAND.");
+const u8 gRainbowPassItemDescription[] = _("For ferries serving\nVERMILION and the\nSEVII ISLANDS.");
+const u8 gTeaItemDescription[] = _("A thirst-quenching\ntea prepared by an\nold lady.");
+const u8 gMysticTicketItemDescription[] = _("A ticket required\nto board the ship\nto NAVEL ROCK.");
+const u8 gAuroraTicketItemDescription[] = _("A ticket required\nto board the ship\nto BIRTH ISLAND.");
+const u8 gPowderJarItemDescription[] = _("Stores BERRY\nPOWDER made using\na BERRY CRUSHER.");
+const u8 gRubyItemDescription[] = _("An exquisite, red-\nglowing gem that\nsymbolizes passion.");
+const u8 gSapphireItemDescription[] = _("A brilliant blue gem\nthat symbolizes\nhonesty.");
+//Emerald-specific key items
+const u8 gMagmaEmblemItemDescription[] = _("A medal-like item in\nthe same shape as\nTEAM MAGMA’s mark.");
+const u8 gOldSeaMapItemDescription[] = _("A faded sea chart\nthat shows the way\nto a certain island.");
+#endif // POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
diff --git a/include/data2.h b/include/data2.h
index be0f33ab8..d71958201 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -14,7 +14,9 @@ extern struct MonCoords gTrainerFrontPicCoords[];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gMoveNames[][13];
-extern const u8 gAbilityNames[][13];
-extern const u8 gTypeNames[][7];
+extern struct CompressedSpriteSheet gUnknown_0831C620;
+extern struct CompressedSpritePalette gUnknown_0831C628;
+extern const struct SpriteTemplate gUnknown_0831C688;
+
#endif // GUARD_DATA2_H
diff --git a/include/decoration.h b/include/decoration.h
index c841bbfc1..76b2f2ec4 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -69,5 +69,9 @@ extern EWRAM_DATA u8 gCurDecorationIndex;
void sub_8126968(void);
void sub_8126AD8(u8 taskId);
void sub_8127D38(u16 mapX, u16 mapY, u16 decor);
+void sub_8126B2C(u8 taskId);
+void sub_8127208(u8 taskId);
+void sub_8127250(u8 *dest, u8 decorCat);
+bool8 IsSelectedDecorInThePC(void);
#endif //GUARD_DECORATION_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index f0ac51c22..541fa6c1b 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1,39 +1,16 @@
#ifndef GUARD_EASYCHAT_H
#define GUARD_EASYCHAT_H
-// Taken from Pokeruby, check if it's correct
-enum
-{
- EC_GROUP_POKEMON,
- EC_GROUP_TRAINER,
- EC_GROUP_STATUS,
- EC_GROUP_BATTLE,
- EC_GROUP_GREETINGS,
- EC_GROUP_PEOPLE,
- EC_GROUP_VOICES,
- EC_GROUP_SPEECH,
- EC_GROUP_ENDINGS,
- EC_GROUP_FEELINGS,
- EC_GROUP_CONDITIONS,
- EC_GROUP_ACTIONS,
- EC_GROUP_LIFESTYLE,
- EC_GROUP_HOBBIES,
- EC_GROUP_TIME,
- EC_GROUP_MISC,
- EC_GROUP_ADJECTIVES,
- EC_GROUP_EVENTS,
- EC_GROUP_MOVE_1,
- EC_GROUP_MOVE_2,
- EC_GROUP_TRENDY_SAYING,
- EC_GROUP_POKEMON_2,
-};
-
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
-void CopyEasyChatWord(u8 *dest, u16 word);
+u8 * CopyEasyChatWord(u8 *dest, u16 word);
bool32 sub_811F8D8(u16 word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
+u16 sub_811EE38(u16 group);
+u16 sub_811F01C(void);
+bool16 EasyChat_GetNumWordsInGroup(u8);
+u16 sub_811EE90(u16);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index a54e0e463..c187682b0 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -22,6 +22,7 @@ extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];
+
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
extern const u8 gTVBravoTrainerText02[];
@@ -380,4 +381,147 @@ extern const u8 SecretBase_RedCave1_Text_274E75[];
extern const u8 SecretBase_RedCave1_Text_2751E1[];
extern const u8 SecretBase_RedCave1_Text_2754F6[];
extern const u8 SecretBase_RedCave1_Text_2758CC[];
+
+extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
+
+//field effects
+extern const u8 FieryPath_EventScript_2908FD[];
+extern const u8 EventScript_290CAE[];
+extern const u8 EventScript_2926F8[];
+extern const u8 Route111_EventScript_2907F0[];
+
+//player pc
+extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
+extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
+
+//mauville_old_man
+extern const u8 gOtherText_Is[];
+extern const u8 gOtherText_DontYouAgree[];
+extern const u8 gText_SoPretty[];
+extern const u8 gText_SoDarling[];
+extern const u8 gText_SoRelaxed[];
+extern const u8 gText_SoSunny[];
+extern const u8 gText_SoDesirable[];
+extern const u8 gText_SoExciting[];
+extern const u8 gText_SoAmusing[];
+extern const u8 gText_SoMagical[];
+extern const u8 gUnknown_08294313[];
+extern const u8 gUnknown_08294359[];
+extern const u8 gUnknown_08294398[];
+extern const u8 gUnknown_082943DA[];
+extern const u8 gUnknown_0829441C[];
+extern const u8 gUnknown_08294460[];
+extern const u8 gUnknown_082944A0[];
+extern const u8 gUnknown_082944D5[];
+
+
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E947[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E956[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9D7[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9EF[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E9FE[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA7D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EA98[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EAA8[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB19[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB31[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EB3E[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBB5[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBCD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EBDD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC60[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC79[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EC81[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED04[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED21[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28ED30[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDA1[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDB5[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EDCF[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE45[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE5D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EE6A[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEDD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EEF1[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF01[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF73[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EF95[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28EFAA[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F045[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F05A[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F071[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F0F3[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F10D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F125[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1BE[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1D5[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F1DE[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F24F[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F269[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F277[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F2FC[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F314[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F32A[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3AD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3C6[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F3D2[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F44B[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F461[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F47C[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F50C[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F51B[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F538[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5BE[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5D1[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F5F2[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F678[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F694[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F6B4[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F751[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F76A[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F776[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F7F6[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F811[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F822[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F89C[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8AF[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F8BC[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F92F[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F941[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F949[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9D1[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9EA[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28F9FD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA81[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FA99[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FAA7[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB1D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB35[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FB47[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBC4[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBD9[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FBEA[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC6B[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC85[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FC98[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD1D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD35[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FD40[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDA2[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDBD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FDCE[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE57[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE72[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FE88[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF0C[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF27[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FF44[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFDD[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_28FFFA[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_29000D[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_290097[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900B5[];
+extern const u8 MauvilleCity_PokemonCenter_1F_Text_2900CB[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 6daa9a8a2..fcc19ce9a 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -6,25 +6,31 @@
struct CameraObject
{
void (*callback)(struct CameraObject *);
- u32 unk4;
+ u32 spriteId;
s32 unk8;
s32 unkC;
s32 x;
s32 y;
};
-extern struct CameraObject gUnknown_03005DD0;
-
// Exported RAM declarations
-
+extern struct CameraObject gUnknown_03005DD0;
extern u16 gUnknown_03005DEC;
extern u16 gUnknown_03005DE8;
// Exported ROM declarations
-
void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
+void move_tilemap_camera_to_upper_left_corner(void);
+void sub_8057A58(void);
+void ResetCameraUpdateInfo(void);
+u32 InitCameraUpdateCallback(u8 a);
+void CameraUpdate(void);
+void SetCameraPanningCallback(void (*a)(void));
+void SetCameraPanning(s16 a, s16 b);
+void InstallCameraPanAheadCallback(void);
+void UpdateCameraPanning(void);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
new file mode 100644
index 000000000..b915d1419
--- /dev/null
+++ b/include/field_control_avatar.h
@@ -0,0 +1,41 @@
+#ifndef GUARD_FIELDCONTROLAVATAR_H
+#define GUARD_FIELDCONTROLAVATAR_H
+
+struct FieldInput
+{
+ u8 pressedAButton:1;
+ u8 input_field_0_1:1;
+ u8 pressedStartButton:1;
+ u8 pressedSelectButton:1;
+ u8 input_field_0_4:1;
+ u8 input_field_0_5:1;
+ u8 input_field_0_6:1;
+ u8 pressedBButton:1;
+ u8 input_field_1_0:1;
+ u8 input_field_1_1:1;
+ u8 input_field_1_2:1;
+ u8 input_field_1_3:1;
+ u8 input_field_1_4:1;
+ u8 input_field_1_5:1;
+ u8 input_field_1_6:1;
+ u8 input_field_1_7:1;
+ u8 dpadDirection;
+ u8 input_field_3;
+};
+
+void FieldClearPlayerInput(struct FieldInput *pStruct);
+void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys);
+int sub_809C014(struct FieldInput *pStruct);
+u8 *sub_80682A8(struct MapPosition *, u8, u8);
+void overworld_poison_timer_set(void);
+void prev_quest_postbuffer_cursor_backup_reset(void);
+u8 *sub_8068E24(struct MapPosition *);
+u8 *GetFieldObjectScriptPointerPlayerFacing(void);
+bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *);
+bool8 sub_8068870(u16 a);
+bool8 sub_8068894(void);
+bool8 sub_8068A64(struct MapPosition *, u16);
+u8 sub_8068F18(void);
+bool8 dive_warp(struct MapPosition *position, u16 b);
+
+#endif // GUARD_FIELDCONTROLAVATAR_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 7395270f9..9cd26f6b8 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,6 +1,14 @@
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_H
+#include "task.h"
+
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2];
+extern const struct SpritePalette gNewGameBirchObjectPaletteInfo;
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2];
+extern const struct SpriteTemplate gNewGameBirchObjectTemplate;
+extern const struct OamData gNewGameBirchOamAttributes;
+
enum FieldEffectScriptIdx
{
FLDEFF_EXCLAMATION_MARK_ICON_1,
@@ -69,15 +77,157 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
-extern u32 gFieldEffectArguments[8];
+extern s32 gFieldEffectArguments[8];
+extern void (*gUnknown_0203CEEC)(void);
+extern bool8 (*gUnknown_03005DB0)(void);
u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
+u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
-void sub_80B7FC8(void);
+void CreateTeleportFieldEffectTask(void);
void FieldEffectActiveListRemove(u8 id);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
+void FieldEffectActiveListAdd(u8 id);
+void FieldEffectScript_LoadTiles(u8 **script);
+void FieldEffectScript_LoadFadedPalette(u8 **script);
+void FieldEffectScript_LoadPalette(u8 **script);
+void FieldEffectScript_CallNative(u8 **script, u32 *val);
+void FieldEffectFreeTilesIfUnused(u16 tileStart);
+void FieldEffectFreePaletteIfUnused(u8 paletteNum);
+bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadfadedpal(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadpal(u8 **script, u32 *val);
+bool8 FieldEffectCmd_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_end(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadgfx_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadtiles_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadfadedpal_callnative(u8 **script, u32 *val);
+
+void PokecenterHealEffect_0(struct Task *);
+void PokecenterHealEffect_1(struct Task *);
+void PokecenterHealEffect_2(struct Task *);
+void PokecenterHealEffect_3(struct Task *);
+
+void HallOfFameRecordEffect_0(struct Task *);
+void HallOfFameRecordEffect_1(struct Task *);
+void HallOfFameRecordEffect_2(struct Task *);
+void HallOfFameRecordEffect_3(struct Task *);
+
+void PokeballGlowEffect_0(struct Sprite *);
+void PokeballGlowEffect_1(struct Sprite *);
+void PokeballGlowEffect_2(struct Sprite *);
+void PokeballGlowEffect_3(struct Sprite *);
+void PokeballGlowEffect_4(struct Sprite *);
+void PokeballGlowEffect_5(struct Sprite *);
+void PokeballGlowEffect_6(struct Sprite *);
+void PokeballGlowEffect_7(struct Sprite *);
+
+bool8 sub_80B6BCC(struct Task *);
+bool8 sub_80B6C74(struct Task *);
+bool8 sub_80B6C90(struct Task *);
+bool8 sub_80B6D04(struct Task *);
+bool8 sub_80B6DBC(struct Task *);
+bool8 sub_80B6DD8(struct Task *);
+bool8 sub_80B6E18(struct Task *);
+
+bool8 sub_80B6EC0(struct Task *);
+bool8 sub_80B6EE0(struct Task *);
+bool8 sub_80B6F50(struct Task *);
+bool8 sub_80B6F74(struct Task *);
+bool8 sub_80B6F84(struct Task *);
+bool8 sub_80B6FA8(struct Task *);
+
+bool8 sub_80B7114(struct Task *);
+bool8 sub_80B7190(struct Task *);
+bool8 sub_80B71D0(struct Task *);
+bool8 sub_80B7230(struct Task *);
+bool8 sub_80B7270(struct Task *);
+bool8 sub_80B72D0(struct Task *);
+bool8 sub_80B72F4(struct Task *);
+
+bool8 sub_80B73D0(struct Task *, struct MapObject *);
+bool8 waterfall_1_do_anim_probably(struct Task *, struct MapObject *);
+bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct MapObject *);
+bool8 sub_80B7450(struct Task *, struct MapObject *);
+bool8 sub_80B7478(struct Task *, struct MapObject *);
+
+bool8 dive_1_lock(struct Task *);
+bool8 dive_2_unknown(struct Task *);
+bool8 dive_3_unknown(struct Task *);
+
+bool8 sub_80B764C(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7684(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B76B8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7704(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B77F8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7814(struct Task *, struct MapObject *, struct Sprite *);
+
+bool8 sub_80B78EC(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B791C(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7968(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B79BC(struct Task *, struct MapObject *, struct Sprite *);
+
+bool8 sub_80B7AE8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7B18(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7B94(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7BCC(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7BF4(struct Task *, struct MapObject *, struct Sprite *);
+
+void sub_80B7D14(struct Task *);
+void sub_80B7D34(struct Task *);
+
+void sub_80B7EC4(struct Task *);
+void sub_80B7EE8(struct Task *);
+
+void sub_80B8280(struct Task *);
+void sub_80B830C(struct Task *);
+void sub_80B8410(struct Task *);
+
+void sub_80B8584(struct Task *);
+void sub_80B85F8(struct Task *);
+void sub_80B8660(struct Task *);
+void sub_80B86EC(struct Task *);
+void sub_80B871C(struct Task *);
+void sub_80B8770(struct Task *);
+void overworld_bg_setup_2(struct Task *);
+
+void sub_80B88E4(struct Task *);
+void sub_80B8920(struct Task *);
+void sub_80B898C(struct Task *);
+void sub_80B89DC(struct Task *);
+void sub_80B8A0C(struct Task *);
+void sub_80B8A44(struct Task *);
+void sub_80B8A64(struct Task *);
+
+void sub_80B8DB4(struct Task *);
+void sub_80B8E14(struct Task *);
+void sub_80B8E60(struct Task *);
+void sub_80B8EA8(struct Task *);
+void sub_80B8F24(struct Task *);
+
+void sub_80B9204(struct Task *);
+void sub_80B925C(struct Task *);
+void sub_80B92A0(struct Task *);
+void sub_80B92F8(struct Task *);
+void sub_80B933C(struct Task *);
+void sub_80B9390(struct Task *);
+void sub_80B9418(struct Task *);
+void sub_80B9474(struct Task *);
+void sub_80B9494(struct Task *);
+
+void sub_80B9804(struct Task *);
+void sub_80B98B8(struct Task *);
+void sub_80B9924(struct Task *);
+void sub_80B9978(struct Task *);
+void sub_80B99F0(struct Task *);
+void sub_80B9A28(struct Task *);
+void sub_80B9A60(struct Task *);
+
+void sub_80B9C28(s16*, u8);
+void sub_80B9C54(s16*, u8);
+void sub_80B9CDC(s16*, u8);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index 15928eba3..9e4cca64d 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -13,5 +13,6 @@
u8 sub_8154228(void);
bool8 sub_8155DA0(struct MapObject *);
void sub_8155D78(struct MapObject *);
+void sub_81555AC(u8, u8);
#endif //GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h
index 63b67ceaf..89b14aed1 100644
--- a/include/field_ground_effect.h
+++ b/include/field_ground_effect.h
@@ -10,6 +10,8 @@
// Exported RAM declarations
// Exported ROM declarations
+u8 ZCoordToPriority(u8);
+void FieldObjectUpdateZCoord(struct MapObject *pObject);
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
void InitObjectPriorityByZCoord(struct Sprite *, u8);
bool8 IsZCoordMismatchAt(u8, s16, s16);
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 198dd9759..1bf3915e1 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -25,6 +25,7 @@ enum SpinnerRunnerFollowPatterns {
// Exported ROM declarations
void sub_808D438(void);
+u8 get_go_image_anim_num(u8);
u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetFieldObjectIdByXY(s16, s16);
@@ -88,6 +89,12 @@ bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *ma
u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject);
void sub_808F23C(const struct MapObject *mapObject, u8 movementType);
void sub_808F208(const struct MapObject *mapObject);
+void npc_coords_shift_still(struct MapObject *pObject);
+void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1);
+u8 AddCameraObject(u8 linkedSpriteId);
+void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y);
+u8 GetSimpleGoAnimId(u32);
+u8 sub_8093514(u32);
// Exported data declarations
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index 031c7a8ab..2e9f1d0cc 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -27,5 +27,9 @@ void sub_8098044(u8);
void UnfreezeMapObjects(void);
void FreezeMapObjectsExceptOne(u8 mapObjectId);
void sub_8097B78(u8, u8);
+void sub_8098074(u8 var1, u8 var2);
+void FreezeMapObjects(void);
+bool8 FreezeMapObject(struct MapObject *mapObject);
+
#endif //GUARD_FIELD_MAP_OBJ_HELPERS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index af602245b..0b9ea385c 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,10 +1,12 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
+void player_step(u8 a, u16 b, u16 c);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
bool8 TestPlayerAvatarFlags(u8);
+u8 GetPlayerAvatarObjectId(void);
void PlayerGetDestCoords(s16 *, s16 *);
u8 player_get_direction_lower_nybble(void);
u8 player_get_direction_upper_nybble(void);
@@ -31,9 +33,16 @@ u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e);
u8 PlayerGetZCoord(void);
void SetPlayerAvatarTransitionFlags(u16 a);
void sub_808BCE8(void);
-
+void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
+void sub_808B864(void);
+void sub_808BCF4(void);
void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
+void sub_808C114(void);
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void SetPlayerAvatarStateMask(u8 a);
+u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
+u8 sub_8093540(u32);
-#endif //GUARD_FIELD_PLAYER_AVATAR_H
+#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen.h b/include/field_screen.h
index 5d6240f8b..d9a2bb5fa 100644
--- a/include/field_screen.h
+++ b/include/field_screen.h
@@ -7,9 +7,12 @@
// Exported ROM declarations
void pal_fill_black(void);
-bool8 sub_80ABDFC(void);
+bool8 IsWeatherNotFadingIn(void);
void sub_80AF168(void);
void sub_80AF2B4(u8 taskId);
void UpdateWeatherPerDay(u16 days);
+void sub_80AC3D0(void);
+void sub_80AC3E4(void);
+void PreservePaletteInWeather(u8);
#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/field_specials.h b/include/field_specials.h
index dd72bdd13..c1f70a399 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -4,5 +4,6 @@
u8 GetLeadMonIndex(void);
u8 sub_813B260(void);
u16 get_unknown_box_id(void);
+bool8 InMultiBattleRoom(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 06cb7cc77..699595580 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,19 +1,35 @@
#ifndef GUARD_FIELDMAP_H
#define GUARD_FIELDMAP_H
-extern struct MapCoords {
- int width;
- int height;
-} gUnknown_03005DC0;
+extern struct BackupMapData gUnknown_03005DC0;
u32 MapGridGetMetatileIdAt(int, int);
u32 MapGridGetMetatileBehaviorAt(int, int);
void MapGridSetMetatileIdAt(int, int, u16);
void MapGridSetMetatileEntryAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
-bool8 MapGridIsImpassableAt(s16, s16);
-s32 GetMapBorderIdAt(s16, s16);
-bool32 CanCameraMoveInDirection(u8);
+bool8 MapGridIsImpassableAt(int, int);
+int GetMapBorderIdAt(int x, int y);
+int CanCameraMoveInDirection(int direction);
u16 GetBehaviorByMetatileId(u16 metatileId);
+void sav1_camera_get_focus_coords(u16 *x, u16 *y);
+u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y);
+u8 CameraMove(s32 deltaX, s32 deltaY);
+void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader);
+void map_copy_with_padding(u16 *map, u16 width, u16 height);
+void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *);
+void fillSouthConnection(struct MapHeader const *, struct MapHeader const *, s32);
+void fillNorthConnection(struct MapHeader const *, struct MapHeader const *, s32);
+void fillWestConnection(struct MapHeader const *, struct MapHeader const *, s32);
+void fillEastConnection(struct MapHeader const *, struct MapHeader const *, s32);
+void mapdata_from_sav2(void);
+bool8 sub_8088BF0(u16*, u16, u8);
+struct MapConnection *sub_8088950(u8 direction, int x, int y);
+bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection);
+bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset);
+
+void SpriteCB_PokeballGlow(struct Sprite *);
+void SpriteCB_PokecenterMonitor(struct Sprite *);
+void SpriteCB_HallOfFameMonitor(struct Sprite *);
#endif //GUARD_FIELDMAP_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
index a210b8545..4169e328d 100644
--- a/include/fldeff_80F9BCC.h
+++ b/include/fldeff_80F9BCC.h
@@ -12,5 +12,6 @@ void sub_80FA794(s16 x, s16 y);
void sub_80FB00C(void);
void sub_80FB074(void);
void overworld_poison_effect(void);
+bool8 sub_80FADE4(u16, u8);
#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h
new file mode 100644
index 000000000..f985fd82d
--- /dev/null
+++ b/include/fldeff_cut.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_FLDEFF_CUT_H
+#define GUARD_FLDEFF_CUT_H
+
+void sub_80D423C(s16, s16);
+void sub_80D42B8(s16, s16);
+
+#endif // GUARD_FLDEFF_CUT_H
diff --git a/include/fldeff_groundshake.h b/include/fldeff_groundshake.h
new file mode 100644
index 000000000..c1629f9bd
--- /dev/null
+++ b/include/fldeff_groundshake.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FLDEFF_GROUNDSHAKE_H
+#define GUARD_FLDEFF_GROUNDSHAKE_H
+
+void sub_81BE72C(void);
+
+#endif // GUARD_FLDEFF_GROUNDSHAKE_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 0364c38bc..03fe505b5 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -501,23 +501,24 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
-#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
-#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
-#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
-#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
-#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
-#define DISPCNT_OBJ_1D_MAP 0x0040
-#define DISPCNT_FORCED_BLANK 0x0080
-#define DISPCNT_BG0_ON 0x0100
-#define DISPCNT_BG1_ON 0x0200
-#define DISPCNT_BG2_ON 0x0400
-#define DISPCNT_BG3_ON 0x0800
-#define DISPCNT_BG_ALL_ON 0x0F00
-#define DISPCNT_OBJ_ON 0x1000
-#define DISPCNT_WIN0_ON 0x2000
-#define DISPCNT_WIN1_ON 0x4000
-#define DISPCNT_OBJWIN_ON 0x8000
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
+#define DISPCNT_HBLANK_INTERVAL 0x0020 // Allow access to OAM during H-Blank
+#define DISPCNT_OBJ_1D_MAP 0x0040
+#define DISPCNT_FORCED_BLANK 0x0080
+#define DISPCNT_BG0_ON 0x0100
+#define DISPCNT_BG1_ON 0x0200
+#define DISPCNT_BG2_ON 0x0400
+#define DISPCNT_BG3_ON 0x0800
+#define DISPCNT_BG_ALL_ON 0x0F00
+#define DISPCNT_OBJ_ON 0x1000
+#define DISPCNT_WIN0_ON 0x2000
+#define DISPCNT_WIN1_ON 0x4000
+#define DISPCNT_OBJWIN_ON 0x8000
// DISPSTAT
#define DISPSTAT_VBLANK 0x0001 // in V-Blank
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index b12febefd..94127c554 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -162,10 +162,10 @@ struct MapConnections
struct MapHeader
{
- /* 0x00 */ struct MapData *mapData;
- /* 0x04 */ struct MapEvents *events;
- /* 0x08 */ u8 *mapScripts;
- /* 0x0C */ struct MapConnections *connections;
+ /* 0x00 */ const struct MapData *mapData;
+ /* 0x04 */ const struct MapEvents *events;
+ /* 0x08 */ const u8 *mapScripts;
+ /* 0x0C */ const struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapDataId;
/* 0x14 */ u8 regionMapSectionId;
diff --git a/include/global.h b/include/global.h
index 308fb4d42..a117a6391 100644
--- a/include/global.h
+++ b/include/global.h
@@ -11,9 +11,10 @@
// to help in decompiling
#define asm_comment(x) asm volatile("@ -- " x " -- ")
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
+#define NAKED __attribute__((naked))
// IDE support
-#if defined (__APPLE__) || defined (__CYGWIN__)
+#if defined (__APPLE__) || defined (__CYGWIN__) || defined (_MSC_VER)
#define _(x) x
#define __(x) x
#define INCBIN_U8 {0}
@@ -22,7 +23,7 @@
#define INCBIN_S8 {0}
#define INCBIN_S16 {0}
#define INCBIN_S32 {0}
-#endif // __APPLE__
+#endif // IDE support
#define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0]))
@@ -34,10 +35,13 @@
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
-#define PARTY_SIZE 6
+// Converts a Q8.8 fixed-point format number to a regular integer
+#define Q_8_8_TO_INT(n) ((int)((n) / 256))
-#define POKEMON_NAME_LENGTH 10
-#define OT_NAME_LENGTH 7
+// Converts a Q4.12 fixed-point format number to a regular integer
+#define Q_4_12_TO_INT(n) ((int)((n) / 4096))
+
+#define PARTY_SIZE 6
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
@@ -87,8 +91,34 @@ enum LanguageId
LANGUAGE_SPANISH = 7,
};
+#define GAME_VERSION (VERSION_EMERALD)
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+// capacities of various saveblock objects
+#define DAYCARE_MON_COUNT 2
+#define POKEBLOCKS_COUNT 40
+#define MAP_OBJECTS_COUNT 16
+#define BERRY_TREES_COUNT 128
+#define FLAGS_COUNT 300
+#define VARS_COUNT 256
+#define MAIL_COUNT 16
+#define SECRET_BASES_COUNT 20
+#define PC_ITEMS_COUNT 50
+#define BAG_ITEMS_COUNT 30
+#define BAG_KEYITEMS_COUNT 30
+#define BAG_POKEBALLS_COUNT 16
+#define BAG_TMHM_COUNT 64
+#define BAG_BERRIES_COUNT 46
+
+#define PYRAMID_BAG_ITEMS_COUNT 10
+
+// string lengths
+#define ITEM_NAME_LENGTH 14
+#define POKEMON_NAME_LENGTH 10
+#define OT_NAME_LENGTH 7
+#define PLAYER_NAME_LENGTH 8
+#define MAIL_WORDS_COUNT 9
+
enum
{
MALE,
@@ -121,15 +151,6 @@ enum
OPTIONS_BATTLE_STYLE_SET
};
-enum
-{
- BAG_ITEMS = 1,
- BAG_POKEBALLS,
- BAG_TMsHMs,
- BAG_BERRIES,
- BAG_KEYITEMS
-};
-
struct Coords16
{
s16 x;
@@ -142,6 +163,18 @@ struct UCoords16
u16 y;
};
+struct Coords32
+{
+ s32 x;
+ s32 y;
+};
+
+struct UCoords32
+{
+ u32 x;
+ u32 y;
+};
+
struct Time
{
/*0x00*/ s16 days;
@@ -189,11 +222,11 @@ struct BerryPickingResults // possibly used in the game itself? Size may be wron
u8 field_F;
};
+// two arrays for lvl50 and open level
struct PyramidBag
{
- u16 items_Lvl50[10];
- u16 items_OpenLvl[10];
- u8 quantity[10];
+ u16 itemId[2][PYRAMID_BAG_ITEMS_COUNT];
+ u8 quantity[2][PYRAMID_BAG_ITEMS_COUNT];
};
struct BerryCrush
@@ -203,8 +236,6 @@ struct BerryCrush
u32 unk;
};
-#define PLAYER_NAME_LENGTH 8
-
struct UnknownSaveBlock2Struct
{
u8 field_0;
@@ -284,7 +315,7 @@ struct SaveBlock2
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
/*0xE1C*/ u8 field_E1C[16];
/*0xE2C*/ struct PyramidBag pyramidBag;
- /*0x???*/ u8 field_notSure[13];
+ /*0x???*/ u8 field_unkown[6];
/*0xE6E*/ u16 battleTentWinStreak;
/*0xE70*/ u8 field_E70[72];
/*0xEB8*/ u16 frontierBattlePoints;
@@ -398,8 +429,6 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
-#define MAIL_WORDS_COUNT 9
-
struct MailStruct
{
/*0x00*/ u16 words[MAIL_WORDS_COUNT];
@@ -409,41 +438,68 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
-struct UnkMauvilleOldManStruct
+struct MauvilleManCommon
+{
+ u8 id;
+};
+
+struct MauvilleManBard
{
- u8 unk_2D94;
- u8 unk_2D95;
- /*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
- /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
- /*0x2DAE*/ u8 playerName[8];
- /*0x2DB6*/ u8 filler_2DB6[0x3];
- /*0x2DB9*/ u8 playerTrainerId[4];
- u8 unk_2DBD;
+ /*0x00*/ u8 id;
+ /*0x02*/ u16 songLyrics[6];
+ /*0x0E*/ u16 temporaryLyrics[6];
+ /*0x1A*/ u8 playerName[8];
+ /*0x22*/ u8 filler_2DB6[0x3];
+ /*0x25*/ u8 playerTrainerId[4];
+ /*0x29*/ bool8 hasChangedSong;
+ /*0x2A*/ u8 language;
}; /*size = 0x2C*/
-struct UnkMauvilleOldManStruct2
+struct MauvilleManStoryteller
{
- u8 filler0;
- u8 unk1;
- u8 unk2;
- u16 mauvilleOldMan_ecArray[10];
- u8 mauvilleOldMan_ecArray2[12];
- u8 fillerF[0x2];
+ u8 id;
+ bool8 alreadyRecorded;
+ u8 filler2[2];
+ u8 gameStatIDs[4];
+ u8 trainerNames[4][7];
+ u8 statValues[4][4];
+ u8 language[4];
+};
+
+struct MauvilleManGiddy
+{
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 taleCounter;
+ /*0x02*/ u8 questionNum;
+ /*0x04*/ u16 randomWords[10];
+ /*0x18*/ u8 questionList[8];
+ /*0x20*/ u8 language;
}; /*size = 0x2C*/
+struct MauvilleManHipster
+{
+ u8 id;
+ bool8 alreadySpoken;
+ u8 language;
+};
+
struct MauvilleOldManTrader
{
- u8 unk0;
- u8 unk1[4];
- u8 unk5[4][11];
- u8 unk31;
+ u8 id;
+ u8 decorIds[4];
+ u8 playerNames[4][11];
+ u8 alreadyTraded;
+ u8 language[4];
};
typedef union OldMan
{
- struct UnkMauvilleOldManStruct oldMan1;
- struct UnkMauvilleOldManStruct2 oldMan2;
+ struct MauvilleManCommon common;
+ struct MauvilleManBard bard;
+ struct MauvilleManGiddy giddy;
+ struct MauvilleManHipster hipster;
struct MauvilleOldManTrader trader;
+ struct MauvilleManStoryteller storyteller;
u8 filler[0x40];
} OldMan;
@@ -461,6 +517,8 @@ struct RecordMixing_UnknownStruct
u16 unk74[0x2];
};
+#define LINK_B_RECORDS_COUNT 5
+
struct LinkBattleRecord
{
u8 name[8];
@@ -470,6 +528,12 @@ struct LinkBattleRecord
u16 draws;
};
+struct LinkBattleRecords
+{
+ struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT];
+ u8 languages[LINK_B_RECORDS_COUNT];
+};
+
struct RecordMixingGiftData
{
u8 unk0;
@@ -511,8 +575,6 @@ struct DaycareMon
u32 steps;
};
-#define DAYCARE_MON_COUNT 2
-
struct DayCare
{
struct DaycareMon mons[DAYCARE_MON_COUNT];
@@ -533,13 +595,6 @@ struct RecordMixingDayCareMail
bool16 holdsItem[DAYCARE_MON_COUNT];
};
-#define POKEBLOCKS_COUNT 40
-#define MAP_OBJECTS_COUNT 16
-#define BERRY_TREES_COUNT 128
-#define FLAGS_COUNT 300
-#define VARS_COUNT 256
-#define MAIL_COUNT 16
-
enum
{
LILYCOVE_LADY_QUIZ,
@@ -607,31 +662,36 @@ struct WaldaPhrase
bool8 patternUnlocked;
};
+struct UnkSaveSubstruct_3b98 {
+ u32 trainerId;
+ u8 trainerName[8];
+};
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
/*0x04*/ struct WarpData location;
/*0x0C*/ struct WarpData warp1;
/*0x14*/ struct WarpData warp2;
- /*0x1C*/ struct WarpData warp3;
+ /*0x1C*/ struct WarpData lastHealLocation;
/*0x24*/ struct WarpData warp4;
- /*0x2C*/ u16 battleMusic;
+ /*0x2C*/ u16 savedMusic;
/*0x2E*/ u8 weather;
/*0x2F*/ u8 filler_2F;
- /*0x30*/ u8 flashUsed;
+ /*0x30*/ u8 flashLevel;
/*0x32*/ u16 mapDataId;
/*0x34*/ u16 mapView[0x100];
/*0x234*/ u8 playerPartyCount;
- /*0x238*/ struct Pokemon playerParty[6];
+ /*0x238*/ struct Pokemon playerParty[PARTY_SIZE];
/*0x490*/ u32 money;
/*0x494*/ u16 coins;
/*0x496*/ u16 registeredItem; // registered for use with SELECT button
- /*0x498*/ struct ItemSlot pcItems[50];
- /*0x560*/ struct ItemSlot bagPocket_Items[30];
- /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[30];
- /*0x650*/ struct ItemSlot bagPocket_PokeBalls[16];
- /*0x690*/ struct ItemSlot bagPocket_TMHM[64];
- /*0x790*/ struct ItemSlot bagPocket_Berries[46];
+ /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT];
+ /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT];
+ /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT];
+ /*0x650*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT];
+ /*0x690*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT];
+ /*0x790*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT];
/*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT];
/*0x988*/ u8 seen1[52];
/*0x9BC*/ u16 berryBlenderRecords[3];
@@ -644,7 +704,7 @@ struct SaveBlock1
/*0x139C*/ u16 vars[VARS_COUNT];
/*0x159C*/ u32 gameStats[NUM_GAME_STATS];
/*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT];
- /*0x1A9C*/ struct SecretBaseRecord secretBases[20];
+ /*0x1A9C*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
/*0x271C*/ u8 playerRoomDecor[12];
/*0x2728*/ u8 playerRoomDecorPos[12];
/*0x2734*/ u8 decorDesk[10];
@@ -680,9 +740,7 @@ struct SaveBlock1
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
/*0x3030*/ struct DayCare daycare;
- /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
- /*0x31A0*/ u8 unk_31A0;
- /*0x31A1*/ u8 filler_31A1[7];
+ /*0x3150*/ struct LinkBattleRecords linkBattleRecords;
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
@@ -691,13 +749,32 @@ struct SaveBlock1
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
/*0x3B24*/ u8 seen2[52];
/*0x3B58*/ LilycoveLady lilycoveLady;
- /*0x3B98*/ u8 filler_3B88[0x1D8];
+ /*0x3B88*/ u8 filler_3B88[0x10];
+ /*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20];
+ /*0x3C88*/ u8 filler_3C88[0xE8];
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
// sizeof: 0x3D88
};
extern struct SaveBlock1* gSaveBlock1Ptr;
+struct MapPosition
+{
+ s16 x;
+ s16 y;
+ u8 height;
+};
+
+struct UnkStruct_8054FF8
+{
+ u8 a;
+ u8 b;
+ u8 c;
+ u8 d;
+ struct MapPosition sub;
+ u16 field_C;
+};
+
struct Bitmap // TODO: Find a better spot for this
{
u8* pixels;
diff --git a/include/global.tv.h b/include/global.tv.h
index 5f65aa8e0..81f181cf3 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -188,11 +188,11 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ u16 speciesOpponent;
/*0x04*/ u8 playerName[8];
/*0x0C*/ u8 linkOpponentName[8];
/*0x14*/ u16 move;
- /*0x16*/ u16 species2;
+ /*0x16*/ u16 speciesPlayer;
/*0x18*/ u8 battleType;
/*0x19*/ u8 language;
/*0x1A*/ u8 linkOpponentLanguage;
diff --git a/include/graphics.h b/include/graphics.h
index 39662c8c1..3feed6d08 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2713,10 +2713,654 @@ extern const u8 gRaySceneHushBg_Pal[];
extern const u8 gRaySceneHushBg_Gfx[];
extern const u8 gRaySceneHushRing_Gfx[];
+// Item icons
+extern const u8 gItemIcon_QuestionMark[];
+extern const u8 gItemIconPalette_QuestionMark[];
+// Pokeballs
+extern const u8 gItemIcon_MasterBall[];
+extern const u8 gItemIconPalette_MasterBall[];
+extern const u8 gItemIcon_UltraBall[];
+extern const u8 gItemIconPalette_UltraBall[];
+extern const u8 gItemIcon_GreatBall[];
+extern const u8 gItemIconPalette_GreatBall[];
+extern const u8 gItemIcon_PokeBall[];
+extern const u8 gItemIconPalette_PokeBall[];
+extern const u8 gItemIcon_SafariBall[];
+extern const u8 gItemIconPalette_SafariBall[];
+extern const u8 gItemIcon_NetBall[];
+extern const u8 gItemIconPalette_NetBall[];
+extern const u8 gItemIcon_DiveBall[];
+extern const u8 gItemIconPalette_DiveBall[];
+extern const u8 gItemIcon_NestBall[];
+extern const u8 gItemIconPalette_NestBall[];
+extern const u8 gItemIcon_RepeatBall[];
+extern const u8 gItemIconPalette_RepeatBall[];
+extern const u8 gItemIcon_TimerBall[];
+extern const u8 gItemIcon_LuxuryBall[];
+extern const u8 gItemIconPalette_LuxuryBall[];
+extern const u8 gItemIcon_PremierBall[];
+// Medicine
+extern const u8 gItemIcon_Potion[];
+extern const u8 gItemIconPalette_Potion[];
+extern const u8 gItemIcon_Antidote[];
+extern const u8 gItemIconPalette_Antidote[];
+extern const u8 gItemIcon_StatusHeal[];
+extern const u8 gItemIconPalette_BurnHeal[];
+extern const u8 gItemIconPalette_IceHeal[];
+extern const u8 gItemIconPalette_Awakening[];
+extern const u8 gItemIconPalette_ParalyzeHeal[];
+extern const u8 gItemIcon_LargePotion[];
+extern const u8 gItemIconPalette_FullRestore[];
+extern const u8 gItemIconPalette_MaxPotion[];
+extern const u8 gItemIconPalette_HyperPotion[];
+extern const u8 gItemIconPalette_SuperPotion[];
+extern const u8 gItemIcon_FullHeal[];
+extern const u8 gItemIconPalette_FullHeal[];
+extern const u8 gItemIcon_Revive[];
+extern const u8 gItemIconPalette_Revive[];
+extern const u8 gItemIcon_MaxRevive[];
+extern const u8 gItemIcon_FreshWater[];
+extern const u8 gItemIconPalette_FreshWater[];
+extern const u8 gItemIcon_SodaPop[];
+extern const u8 gItemIconPalette_SodaPop[];
+extern const u8 gItemIcon_Lemonade[];
+extern const u8 gItemIconPalette_Lemonade[];
+extern const u8 gItemIcon_MoomooMilk[];
+extern const u8 gItemIconPalette_MoomooMilk[];
+extern const u8 gItemIcon_Powder[];
+extern const u8 gItemIconPalette_EnergyPowder[];
+extern const u8 gItemIcon_EnergyRoot[];
+extern const u8 gItemIconPalette_EnergyRoot[];
+extern const u8 gItemIconPalette_HealPowder[];
+extern const u8 gItemIcon_RevivalHerb[];
+extern const u8 gItemIconPalette_RevivalHerb[];
+extern const u8 gItemIcon_Ether[];
+extern const u8 gItemIconPalette_Ether[];
+extern const u8 gItemIconPalette_MaxEther[];
+extern const u8 gItemIconPalette_Elixir[];
+extern const u8 gItemIconPalette_MaxElixir[];
+extern const u8 gItemIcon_LavaCookie[];
+extern const u8 gItemIconPalette_LavaCookieAndLetter[];
+extern const u8 gItemIcon_Flute[];
+extern const u8 gItemIconPalette_BlueFlute[];
+extern const u8 gItemIconPalette_YellowFlute[];
+extern const u8 gItemIconPalette_RedFlute[];
+extern const u8 gItemIconPalette_BlackFlute[];
+extern const u8 gItemIconPalette_WhiteFlute[];
+extern const u8 gItemIcon_BerryJuice[];
+extern const u8 gItemIconPalette_BerryJuice[];
+extern const u8 gItemIcon_SacredAsh[];
+extern const u8 gItemIconPalette_SacredAsh[];
+// Collectibles
+extern const u8 gItemIconPalette_ShoalSalt[];
+extern const u8 gItemIcon_ShoalShell[];
+extern const u8 gItemIconPalette_Shell[];
+extern const u8 gItemIcon_Shard[];
+extern const u8 gItemIconPalette_RedShard[];
+extern const u8 gItemIconPalette_BlueShard[];
+extern const u8 gItemIconPalette_YellowShard[];
+extern const u8 gItemIconPalette_GreenShard[];
+// Vitamins
+extern const u8 gItemIcon_HPUp[];
+extern const u8 gItemIconPalette_HPUp[];
+extern const u8 gItemIcon_Vitamin[];
+extern const u8 gItemIconPalette_Protein[];
+extern const u8 gItemIconPalette_Iron[];
+extern const u8 gItemIconPalette_Carbos[];
+extern const u8 gItemIconPalette_Calcium[];
+extern const u8 gItemIcon_RareCandy[];
+extern const u8 gItemIconPalette_RareCandy[];
+extern const u8 gItemIcon_PPUp[];
+extern const u8 gItemIconPalette_PPUp[];
+extern const u8 gItemIconPalette_Zinc[];
+extern const u8 gItemIcon_PPMax[];
+extern const u8 gItemIconPalette_PPMax[];
+// Battle items
+extern const u8 gItemIcon_BattleStatItem[];
+extern const u8 gItemIconPalette_GuardSpec[];
+extern const u8 gItemIconPalette_DireHit[];
+extern const u8 gItemIconPalette_XAttack[];
+extern const u8 gItemIconPalette_XDefend[];
+extern const u8 gItemIconPalette_XSpeed[];
+extern const u8 gItemIconPalette_XAccuracy[];
+extern const u8 gItemIconPalette_XSpecial[];
+extern const u8 gItemIcon_PokeDoll[];
+extern const u8 gItemIconPalette_PokeDoll[];
+extern const u8 gItemIcon_FluffyTail[];
+extern const u8 gItemIconPalette_FluffyTail[];
+// Field items
+extern const u8 gItemIcon_Repel[];
+extern const u8 gItemIconPalette_SuperRepel[];
+extern const u8 gItemIconPalette_MaxRepel[];
+extern const u8 gItemIcon_EscapeRope[];
+extern const u8 gItemIconPalette_EscapeRope[];
+extern const u8 gItemIcon_Repel[];
+extern const u8 gItemIconPalette_Repel[];
+// Evolution stones
+extern const u8 gItemIcon_SunStone[];
+extern const u8 gItemIconPalette_SunStone[];
+extern const u8 gItemIcon_MoonStone[];
+extern const u8 gItemIconPalette_MoonStone[];
+extern const u8 gItemIcon_FireStone[];
+extern const u8 gItemIconPalette_FireStone[];
+extern const u8 gItemIcon_ThunderStone[];
+extern const u8 gItemIconPalette_ThunderStone[];
+extern const u8 gItemIcon_WaterStone[];
+extern const u8 gItemIconPalette_WaterStone[];
+extern const u8 gItemIcon_LeafStone[];
+extern const u8 gItemIconPalette_LeafStone[];
+// Valuables
+extern const u8 gItemIcon_TinyMushroom[];
+extern const u8 gItemIconPalette_Mushroom[];
+extern const u8 gItemIcon_BigMushroom[];
+extern const u8 gItemIcon_Pearl[];
+extern const u8 gItemIconPalette_Pearl[];
+extern const u8 gItemIcon_BigPearl[];
+extern const u8 gItemIcon_Stardust[];
+extern const u8 gItemIconPalette_Star[];
+extern const u8 gItemIcon_StarPiece[];
+extern const u8 gItemIcon_Nugget[];
+extern const u8 gItemIconPalette_Nugget[];
+extern const u8 gItemIcon_HeartScale[];
+extern const u8 gItemIconPalette_HeartScale[];
+// Mail
+extern const u8 gItemIcon_OrangeMail[];
+extern const u8 gItemIconPalette_OrangeMail[];
+extern const u8 gItemIcon_HarborMail[];
+extern const u8 gItemIconPalette_HarborMail[];
+extern const u8 gItemIcon_GlitterMail[];
+extern const u8 gItemIconPalette_GlitterMail[];
+extern const u8 gItemIcon_MechMail[];
+extern const u8 gItemIconPalette_MechMail[];
+extern const u8 gItemIcon_WoodMail[];
+extern const u8 gItemIconPalette_WoodMail[];
+extern const u8 gItemIcon_WaveMail[];
+extern const u8 gItemIconPalette_WaveMail[];
+extern const u8 gItemIcon_BeadMail[];
+extern const u8 gItemIconPalette_BeadMail[];
+extern const u8 gItemIcon_ShadowMail[];
+extern const u8 gItemIconPalette_ShadowMail[];
+extern const u8 gItemIcon_TropicMail[];
+extern const u8 gItemIconPalette_TropicMail[];
+extern const u8 gItemIcon_DreamMail[];
+extern const u8 gItemIconPalette_DreamMail[];
+extern const u8 gItemIcon_FabMail[];
+extern const u8 gItemIconPalette_FabMail[];
+extern const u8 gItemIcon_RetroMail[];
+extern const u8 gItemIconPalette_RetroMail[];
+// Berries
+extern const u8 gItemIcon_CheriBerry[];
+extern const u8 gItemIconPalette_CheriBerry[];
+extern const u8 gItemIcon_ChestoBerry[];
+extern const u8 gItemIconPalette_ChestoBerry[];
+extern const u8 gItemIcon_PechaBerry[];
+extern const u8 gItemIconPalette_PechaBerry[];
+extern const u8 gItemIcon_RawstBerry[];
+extern const u8 gItemIconPalette_RawstBerry[];
+extern const u8 gItemIcon_AspearBerry[];
+extern const u8 gItemIconPalette_AspearBerry[];
+extern const u8 gItemIcon_LeppaBerry[];
+extern const u8 gItemIconPalette_LeppaBerry[];
+extern const u8 gItemIcon_OranBerry[];
+extern const u8 gItemIconPalette_OranBerry[];
+extern const u8 gItemIcon_PersimBerry[];
+extern const u8 gItemIconPalette_PersimBerry[];
+extern const u8 gItemIcon_LumBerry[];
+extern const u8 gItemIconPalette_LumBerry[];
+extern const u8 gItemIcon_SitrusBerry[];
+extern const u8 gItemIconPalette_SitrusBerry[];
+extern const u8 gItemIcon_FigyBerry[];
+extern const u8 gItemIconPalette_FigyBerry[];
+extern const u8 gItemIcon_WikiBerry[];
+extern const u8 gItemIconPalette_WikiBerry[];
+extern const u8 gItemIcon_MagoBerry[];
+extern const u8 gItemIconPalette_MagoBerry[];
+extern const u8 gItemIcon_AguavBerry[];
+extern const u8 gItemIconPalette_AguavBerry[];
+extern const u8 gItemIcon_IapapaBerry[];
+extern const u8 gItemIconPalette_IapapaBerry[];
+extern const u8 gItemIcon_RazzBerry[];
+extern const u8 gItemIconPalette_RazzBerry[];
+extern const u8 gItemIcon_BlukBerry[];
+extern const u8 gItemIconPalette_BlukBerry[];
+extern const u8 gItemIcon_NanabBerry[];
+extern const u8 gItemIconPalette_NanabBerry[];
+extern const u8 gItemIcon_WepearBerry[];
+extern const u8 gItemIconPalette_WepearBerry[];
+extern const u8 gItemIcon_PinapBerry[];
+extern const u8 gItemIconPalette_PinapBerry[];
+extern const u8 gItemIcon_PomegBerry[];
+extern const u8 gItemIconPalette_PomegBerry[];
+extern const u8 gItemIcon_KelpsyBerry[];
+extern const u8 gItemIconPalette_KelpsyBerry[];
+extern const u8 gItemIcon_QualotBerry[];
+extern const u8 gItemIconPalette_QualotBerry[];
+extern const u8 gItemIcon_HondewBerry[];
+extern const u8 gItemIconPalette_HondewBerry[];
+extern const u8 gItemIcon_GrepaBerry[];
+extern const u8 gItemIconPalette_GrepaBerry[];
+extern const u8 gItemIcon_TamatoBerry[];
+extern const u8 gItemIconPalette_TamatoBerry[];
+extern const u8 gItemIcon_CornnBerry[];
+extern const u8 gItemIconPalette_CornnBerry[];
+extern const u8 gItemIcon_MagostBerry[];
+extern const u8 gItemIconPalette_MagostBerry[];
+extern const u8 gItemIcon_RabutaBerry[];
+extern const u8 gItemIconPalette_RabutaBerry[];
+extern const u8 gItemIcon_NomelBerry[];
+extern const u8 gItemIconPalette_NomelBerry[];
+extern const u8 gItemIcon_SpelonBerry[];
+extern const u8 gItemIconPalette_SpelonBerry[];
+extern const u8 gItemIcon_PamtreBerry[];
+extern const u8 gItemIconPalette_PamtreBerry[];
+extern const u8 gItemIcon_WatmelBerry[];
+extern const u8 gItemIconPalette_WatmelBerry[];
+extern const u8 gItemIcon_DurinBerry[];
+extern const u8 gItemIconPalette_DurinBerry[];
+extern const u8 gItemIcon_BelueBerry[];
+extern const u8 gItemIconPalette_BelueBerry[];
+extern const u8 gItemIcon_LiechiBerry[];
+extern const u8 gItemIconPalette_LiechiBerry[];
+extern const u8 gItemIcon_GanlonBerry[];
+extern const u8 gItemIconPalette_GanlonBerry[];
+extern const u8 gItemIcon_SalacBerry[];
+extern const u8 gItemIconPalette_SalacBerry[];
+extern const u8 gItemIcon_PetayaBerry[];
+extern const u8 gItemIconPalette_PetayaBerry[];
+extern const u8 gItemIcon_ApicotBerry[];
+extern const u8 gItemIconPalette_ApicotBerry[];
+extern const u8 gItemIcon_LansatBerry[];
+extern const u8 gItemIconPalette_LansatBerry[];
+extern const u8 gItemIcon_StarfBerry[];
+extern const u8 gItemIconPalette_StarfBerry[];
+extern const u8 gItemIcon_EnigmaBerry[];
+extern const u8 gItemIconPalette_EnigmaBerry[];
+// Hold items
+extern const u8 gItemIcon_BrightPowder[];
+extern const u8 gItemIconPalette_BrightPowder[];
+extern const u8 gItemIcon_InBattleHerb[];
+extern const u8 gItemIconPalette_WhiteHerb[];
+extern const u8 gItemIcon_MachoBrace[];
+extern const u8 gItemIconPalette_MachoBrace[];
+extern const u8 gItemIcon_ExpShare[];
+extern const u8 gItemIconPalette_ExpShare[];
+extern const u8 gItemIcon_QuickClaw[];
+extern const u8 gItemIconPalette_QuickClaw[];
+extern const u8 gItemIcon_SootheBell[];
+extern const u8 gItemIconPalette_SootheBell[];
+extern const u8 gItemIcon_InBattleHerb[];
+extern const u8 gItemIconPalette_MentalHerb[];
+extern const u8 gItemIcon_ChoiceBand[];
+extern const u8 gItemIconPalette_ChoiceBand[];
+extern const u8 gItemIcon_KingsRock[];
+extern const u8 gItemIconPalette_KingsRock[];
+extern const u8 gItemIcon_SilverPowder[];
+extern const u8 gItemIconPalette_SilverPowder[];
+extern const u8 gItemIcon_AmuletCoin[];
+extern const u8 gItemIconPalette_AmuletCoin[];
+extern const u8 gItemIcon_CleanseTag[];
+extern const u8 gItemIconPalette_CleanseTag[];
+extern const u8 gItemIcon_SoulDew[];
+extern const u8 gItemIconPalette_SoulDew[];
+extern const u8 gItemIcon_DeepSeaTooth[];
+extern const u8 gItemIconPalette_DeepSeaTooth[];
+extern const u8 gItemIcon_DeepSeaScale[];
+extern const u8 gItemIconPalette_DeepSeaScale[];
+extern const u8 gItemIcon_SmokeBall[];
+extern const u8 gItemIconPalette_SmokeBall[];
+extern const u8 gItemIcon_Everstone[];
+extern const u8 gItemIconPalette_Everstone[];
+extern const u8 gItemIcon_FocusBand[];
+extern const u8 gItemIconPalette_FocusBand[];
+extern const u8 gItemIcon_LuckyEgg[];
+extern const u8 gItemIconPalette_LuckyEgg[];
+extern const u8 gItemIcon_ScopeLens[];
+extern const u8 gItemIconPalette_ScopeLens[];
+extern const u8 gItemIcon_MetalCoat[];
+extern const u8 gItemIconPalette_MetalCoat[];
+extern const u8 gItemIcon_Leftovers[];
+extern const u8 gItemIconPalette_Leftovers[];
+extern const u8 gItemIcon_DragonScale[];
+extern const u8 gItemIconPalette_DragonScale[];
+extern const u8 gItemIcon_LightBall[];
+extern const u8 gItemIconPalette_LightBall[];
+extern const u8 gItemIcon_SoftSand[];
+extern const u8 gItemIconPalette_SoftSand[];
+extern const u8 gItemIcon_HardStone[];
+extern const u8 gItemIconPalette_HardStone[];
+extern const u8 gItemIcon_MiracleSeed[];
+extern const u8 gItemIconPalette_MiracleSeed[];
+extern const u8 gItemIcon_BlackGlasses[];
+extern const u8 gItemIconPalette_BlackTypeEnhancingItem[];
+extern const u8 gItemIcon_BlackBelt[];
+extern const u8 gItemIconPalette_BlackTypeEnhancingItem[];
+extern const u8 gItemIcon_Magnet[];
+extern const u8 gItemIconPalette_Magnet[];
+extern const u8 gItemIcon_MysticWater[];
+extern const u8 gItemIconPalette_MysticWater[];
+extern const u8 gItemIcon_SharpBeak[];
+extern const u8 gItemIconPalette_SharpBeak[];
+extern const u8 gItemIcon_PoisonBarb[];
+extern const u8 gItemIconPalette_PoisonBarb[];
+extern const u8 gItemIcon_NeverMeltIce[];
+extern const u8 gItemIconPalette_NeverMeltIce[];
+extern const u8 gItemIcon_SpellTag[];
+extern const u8 gItemIconPalette_SpellTag[];
+extern const u8 gItemIcon_TwistedSpoon[];
+extern const u8 gItemIconPalette_TwistedSpoon[];
+extern const u8 gItemIcon_Charcoal[];
+extern const u8 gItemIconPalette_Charcoal[];
+extern const u8 gItemIcon_DragonFang[];
+extern const u8 gItemIconPalette_DragonFang[];
+extern const u8 gItemIcon_SilkScarf[];
+extern const u8 gItemIconPalette_SilkScarf[];
+extern const u8 gItemIcon_UpGrade[];
+extern const u8 gItemIconPalette_UpGrade[];
+extern const u8 gItemIcon_ShellBell[];
+extern const u8 gItemIconPalette_Shell[];
+extern const u8 gItemIcon_SeaIncense[];
+extern const u8 gItemIconPalette_SeaIncense[];
+extern const u8 gItemIcon_LaxIncense[];
+extern const u8 gItemIconPalette_LaxIncense[];
+extern const u8 gItemIcon_LuckyPunch[];
+extern const u8 gItemIconPalette_LuckyPunch[];
+extern const u8 gItemIcon_MetalPowder[];
+extern const u8 gItemIconPalette_MetalPowder[];
+extern const u8 gItemIcon_ThickClub[];
+extern const u8 gItemIconPalette_ThickClub[];
+extern const u8 gItemIcon_Stick[];
+extern const u8 gItemIconPalette_Stick[];
+// Contest hold items
+extern const u8 gItemIcon_Scarf[];
+extern const u8 gItemIconPalette_RedScarf[];
+extern const u8 gItemIconPalette_BlueScarf[];
+extern const u8 gItemIconPalette_PinkScarf[];
+extern const u8 gItemIconPalette_GreenScarf[];
+extern const u8 gItemIconPalette_YellowScarf[];
+// Key items
+extern const u8 gItemIcon_MachBike[];
+extern const u8 gItemIconPalette_MachBike[];
+extern const u8 gItemIcon_CoinCase[];
+extern const u8 gItemIconPalette_CoinCase[];
+extern const u8 gItemIcon_Itemfinder[];
+extern const u8 gItemIconPalette_Itemfinder[];
+extern const u8 gItemIcon_OldRod[];
+extern const u8 gItemIconPalette_OldRod[];
+extern const u8 gItemIcon_GoodRod[];
+extern const u8 gItemIconPalette_GoodRod[];
+extern const u8 gItemIcon_SuperRod[];
+extern const u8 gItemIconPalette_SuperRod[];
+extern const u8 gItemIcon_SSTicket[];
+extern const u8 gItemIconPalette_SSTicket[];
+extern const u8 gItemIcon_ContestPass[];
+extern const u8 gItemIconPalette_ContestPass[];
+extern const u8 gItemIcon_WailmerPail[];
+extern const u8 gItemIconPalette_WailmerPail[];
+extern const u8 gItemIcon_DevonGoods[];
+extern const u8 gItemIconPalette_DevonGoods[];
+extern const u8 gItemIcon_SootSack[];
+extern const u8 gItemIconPalette_SootSack[];
+extern const u8 gItemIcon_BasementKey[];
+extern const u8 gItemIconPalette_OldKey[];
+extern const u8 gItemIcon_AcroBike[];
+extern const u8 gItemIconPalette_AcroBike[];
+extern const u8 gItemIcon_PokeblockCase[];
+extern const u8 gItemIconPalette_PokeblockCase[];
+extern const u8 gItemIcon_Letter[];
+extern const u8 gItemIcon_EonTicket[];
+extern const u8 gItemIconPalette_EonTicket[];
+extern const u8 gItemIcon_Orb[];
+extern const u8 gItemIconPalette_RedOrb[];
+extern const u8 gItemIconPalette_BlueOrb[];
+extern const u8 gItemIcon_Scanner[];
+extern const u8 gItemIconPalette_Scanner[];
+extern const u8 gItemIcon_GoGoggles[];
+extern const u8 gItemIconPalette_GoGoggles[];
+extern const u8 gItemIcon_Meteorite[];
+extern const u8 gItemIconPalette_Meteorite[];
+extern const u8 gItemIcon_Room1Key[];
+extern const u8 gItemIconPalette_Key[];
+extern const u8 gItemIcon_Room2Key[];
+extern const u8 gItemIcon_Room4Key[];
+extern const u8 gItemIcon_Room6Key[];
+extern const u8 gItemIcon_StorageKey[];
+extern const u8 gItemIcon_RootFossil[];
+extern const u8 gItemIconPalette_HoennFossil[];
+extern const u8 gItemIcon_ClawFossil[];
+extern const u8 gItemIcon_DevonScope[];
+extern const u8 gItemIconPalette_DevonScope[];
+// TMs/HMs
+extern const u8 gItemIcon_TM[];
+extern const u8 gItemIconPalette_FightingTMHM[];
+extern const u8 gItemIconPalette_DragonTMHM[];
+extern const u8 gItemIconPalette_WaterTMHM[];
+extern const u8 gItemIconPalette_PsychicTMHM[];
+extern const u8 gItemIconPalette_NormalTMHM[];
+extern const u8 gItemIconPalette_PoisonTMHM[];
+extern const u8 gItemIconPalette_IceTMHM[];
+extern const u8 gItemIconPalette_GrassTMHM[];
+extern const u8 gItemIconPalette_FireTMHM[];
+extern const u8 gItemIconPalette_DarkTMHM[];
+extern const u8 gItemIconPalette_SteelTMHM[];
+extern const u8 gItemIconPalette_ElectricTMHM[];
+extern const u8 gItemIconPalette_GroundTMHM[];
+extern const u8 gItemIconPalette_GhostTMHM[];
+extern const u8 gItemIconPalette_RockTMHM[];
+extern const u8 gItemIconPalette_FlyingTMHM[];
+extern const u8 gItemIcon_HM[];
+// FireRed/LeafGreen key items
+extern const u8 gItemIcon_OaksParcel[];
+extern const u8 gItemIconPalette_OaksParcel[];
+extern const u8 gItemIcon_PokeFlute[];
+extern const u8 gItemIconPalette_PokeFlute[];
+extern const u8 gItemIcon_SecretKey[];
+extern const u8 gItemIconPalette_SecretKey[];
+extern const u8 gItemIcon_BikeVoucher[];
+extern const u8 gItemIconPalette_BikeVoucher[];
+extern const u8 gItemIcon_GoldTeeth[];
+extern const u8 gItemIconPalette_GoldTeeth[];
+extern const u8 gItemIcon_OldAmber[];
+extern const u8 gItemIconPalette_OldAmber[];
+extern const u8 gItemIcon_CardKey[];
+extern const u8 gItemIconPalette_CardKey[];
+extern const u8 gItemIcon_LiftKey[];
+extern const u8 gItemIconPalette_Key[];
+extern const u8 gItemIcon_HelixFossil[];
+extern const u8 gItemIconPalette_KantoFossil[];
+extern const u8 gItemIcon_DomeFossil[];
+extern const u8 gItemIcon_SilphScope[];
+extern const u8 gItemIconPalette_SilphScope[];
+extern const u8 gItemIcon_Bicycle[];
+extern const u8 gItemIconPalette_Bicycle[];
+extern const u8 gItemIcon_TownMap[];
+extern const u8 gItemIconPalette_TownMap[];
+extern const u8 gItemIcon_VSSeeker[];
+extern const u8 gItemIconPalette_VSSeeker[];
+extern const u8 gItemIcon_FameChecker[];
+extern const u8 gItemIconPalette_FameChecker[];
+extern const u8 gItemIcon_TMCase[];
+extern const u8 gItemIconPalette_TMCase[];
+extern const u8 gItemIcon_BerryPouch[];
+extern const u8 gItemIconPalette_BerryPouch[];
+extern const u8 gItemIcon_TeachyTV[];
+extern const u8 gItemIconPalette_TeachyTV[];
+extern const u8 gItemIcon_TriPass[];
+extern const u8 gItemIconPalette_TriPass[];
+extern const u8 gItemIcon_RainbowPass[];
+extern const u8 gItemIconPalette_RainbowPass[];
+extern const u8 gItemIcon_Tea[];
+extern const u8 gItemIconPalette_Tea[];
+extern const u8 gItemIcon_MysticTicket[];
+extern const u8 gItemIconPalette_MysticTicket[];
+extern const u8 gItemIcon_AuroraTicket[];
+extern const u8 gItemIconPalette_AuroraTicket[];
+extern const u8 gItemIcon_PowderJar[];
+extern const u8 gItemIconPalette_PowderJar[];
+extern const u8 gItemIcon_Gem[];
+extern const u8 gItemIconPalette_Ruby[];
+extern const u8 gItemIconPalette_Sapphire[];
+// Emerald-only key items
+extern const u8 gItemIcon_MagmaEmblem[];
+extern const u8 gItemIconPalette_MagmaEmblem[];
+extern const u8 gItemIcon_OldSeaMap[];
+extern const u8 gItemIconPalette_OldSeaMap[];
+
+extern const u8 gItemIcon_ReturnToFieldArrow[];
+extern const u8 gItemIconPalette_ReturnToFieldArrow[];
+
//menu graphics
extern const u16 gFireRedMenuElements1_Pal[16];
extern const u16 gFireRedMenuElements2_Pal[16];
extern const u16 gFireRedMenuElements3_Pal[16];
extern const u8 gFireRedMenuElements_Gfx[];
+// item menu graphics
+extern const u8 gBagScreen_Gfx[];
+extern const u16 gBagScreenFemale_Pal[];
+extern const u16 gBagScreenMale_Pal[];
+extern const u8 gBagMenuHMIcon_Gfx[];
+
+// item menu icons graphics
+extern const u8 gBagMaleTiles[];
+extern const u8 gBagFemaleTiles[];
+extern const u8 gBagPalette[];
+extern const u8 gBerryCheckCircle_Gfx[];
+
+//intro graphics
+extern const u8 gIntro1SparkleGfx[];
+extern const u8 gIntro1FlygonGfx[];
+extern const u16 gIntro3LightningPal[];
+extern const u8 gIntroCopyright_Gfx[];
+extern const u8 gIntroCopyright_Tilemap[];
+extern const u16 gIntroCopyright_Pal[16];
+extern const u8 gIntro2VolbeatGfx[];
+extern const u8 gIntro2TorchicGfx[];
+extern const u8 gIntro2ManectricGfx[];
+extern const u16 gIntro2VolbeatPal[];
+extern const u16 gIntro2TorchicPal[];
+extern const u16 gIntro2ManectricPal[];
+extern const u8 gIntro2BubblesGfx[];
+extern const u16 gIntro2BubblesPal[];
+extern const u8 gIntro3LightningGfx[];
+extern const u8 gIntro3GroudonGfx[];
+extern const u8 gIntro3GroudonTilemap[];
+extern const u8 gIntro3LegendBgGfx[];
+extern const u8 gIntro3GroudonBgTilemap[];
+extern const u8 gIntro3GroudonBgTilemap[];
+extern const u8 gIntro3BgPal[0x200];
+extern const u8 gIntro3KyogreGfx[];
+extern const u8 gIntro3KyogreTilemap[];
+extern const u8 gIntro3KyogreBgTilemap[];
+extern const u8 gIntro3CloudsGfx[];
+extern const u8 gIntro3Clouds1Tilemap[];
+extern const u8 gIntro3Clouds2Tilemap[];
+extern const u8 gIntro3Clouds3Tilemap[];
+extern const u8 gIntro3Clouds4Tilemap[];
+extern const u8 gIntro3RayquazaTilemap[];
+extern const u8 gIntro3RayquazaGfx[];
+extern const u8 gIntro3Clouds2Gfx[];
+extern const u16 gIntro1GameFreakTextFadePal[];
+
+//intro/credits graphics
+extern const u8 gIntro2BrendanNoTurnGfx[];
+extern const u8 gIntro2MayNoTurnGfx[];
+extern const u16 gIntro2BrendanNoTurnPal[];
+extern const u16 gIntro2FlygonPal[];
+extern const u8 gIntro2FlygonGfx[];
+
+// berry pics
+extern const u8 gBerryPic_Cheri[];
+extern const u8 gBerryPalette_Cheri[];
+extern const u8 gBerryPic_Chesto[];
+extern const u8 gBerryPalette_Chesto[];
+extern const u8 gBerryPic_Pecha[];
+extern const u8 gBerryPalette_Pecha[];
+extern const u8 gBerryPic_Rawst[];
+extern const u8 gBerryPalette_Rawst[];
+extern const u8 gBerryPic_Aspear[];
+extern const u8 gBerryPalette_Aspear[];
+extern const u8 gBerryPic_Leppa[];
+extern const u8 gBerryPalette_Leppa[];
+extern const u8 gBerryPic_Oran[];
+extern const u8 gBerryPalette_Oran[];
+extern const u8 gBerryPic_Persim[];
+extern const u8 gBerryPalette_Persim[];
+extern const u8 gBerryPic_Lum[];
+extern const u8 gBerryPalette_Lum[];
+extern const u8 gBerryPic_Sitrus[];
+extern const u8 gBerryPalette_Sitrus[];
+extern const u8 gBerryPic_Figy[];
+extern const u8 gBerryPalette_Figy[];
+extern const u8 gBerryPic_Wiki[];
+extern const u8 gBerryPalette_Wiki[];
+extern const u8 gBerryPic_Mago[];
+extern const u8 gBerryPalette_Mago[];
+extern const u8 gBerryPic_Aguav[];
+extern const u8 gBerryPalette_Aguav[];
+extern const u8 gBerryPic_Iapapa[];
+extern const u8 gBerryPalette_Iapapa[];
+extern const u8 gBerryPic_Razz[];
+extern const u8 gBerryPalette_Razz[];
+extern const u8 gBerryPic_Bluk[];
+extern const u8 gBerryPalette_Bluk[];
+extern const u8 gBerryPic_Nanab[];
+extern const u8 gBerryPalette_Nanab[];
+extern const u8 gBerryPic_Wepear[];
+extern const u8 gBerryPalette_Wepear[];
+extern const u8 gBerryPic_Pinap[];
+extern const u8 gBerryPalette_Pinap[];
+extern const u8 gBerryPic_Pomeg[];
+extern const u8 gBerryPalette_Pomeg[];
+extern const u8 gBerryPic_Kelpsy[];
+extern const u8 gBerryPalette_Kelpsy[];
+extern const u8 gBerryPic_Qualot[];
+extern const u8 gBerryPalette_Qualot[];
+extern const u8 gBerryPic_Hondew[];
+extern const u8 gBerryPalette_Hondew[];
+extern const u8 gBerryPic_Grepa[];
+extern const u8 gBerryPalette_Grepa[];
+extern const u8 gBerryPic_Tamato[];
+extern const u8 gBerryPalette_Tamato[];
+extern const u8 gBerryPic_Cornn[];
+extern const u8 gBerryPalette_Cornn[];
+extern const u8 gBerryPic_Magost[];
+extern const u8 gBerryPalette_Magost[];
+extern const u8 gBerryPic_Rabuta[];
+extern const u8 gBerryPalette_Rabuta[];
+extern const u8 gBerryPic_Nomel[];
+extern const u8 gBerryPalette_Nomel[];
+extern const u8 gBerryPic_Spelon[];
+extern const u8 gBerryPalette_Spelon[];
+extern const u8 gBerryPic_Pamtre[];
+extern const u8 gBerryPalette_Pamtre[];
+extern const u8 gBerryPic_Watmel[];
+extern const u8 gBerryPalette_Watmel[];
+extern const u8 gBerryPic_Durin[];
+extern const u8 gBerryPalette_Durin[];
+extern const u8 gBerryPic_Belue[];
+extern const u8 gBerryPalette_Belue[];
+extern const u8 gBerryPic_Liechi[];
+extern const u8 gBerryPalette_Liechi[];
+extern const u8 gBerryPic_Ganlon[];
+extern const u8 gBerryPalette_Ganlon[];
+extern const u8 gBerryPic_Salac[];
+extern const u8 gBerryPalette_Salac[];
+extern const u8 gBerryPic_Petaya[];
+extern const u8 gBerryPalette_Petaya[];
+extern const u8 gBerryPic_Apicot[];
+extern const u8 gBerryPalette_Apicot[];
+extern const u8 gBerryPic_Lansat[];
+extern const u8 gBerryPalette_Lansat[];
+extern const u8 gBerryPic_Starf[];
+extern const u8 gBerryPalette_Starf[];
+extern const u8 gBerryPic_Enigma[];
+extern const u8 gBerryPalette_Enigma[];
+
+//credits
+extern const u8 gCreditsCopyrightEnd_Gfx[];
+
+//pokenav condition marker
+extern const u8 gPokenavConditionMarker_Gfx[];
+extern const u16 gPokenavConditionMarker_Pal[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/gym_leader_rematch.h b/include/gym_leader_rematch.h
new file mode 100644
index 000000000..ef0e5fef1
--- /dev/null
+++ b/include/gym_leader_rematch.h
@@ -0,0 +1,87 @@
+#ifndef GUARD_TRAINER_REMATCH_H
+#define GUARD_TRAINER_REMATCH_H
+
+enum {
+ REMATCH_ROSE,
+ REMATCH_ANDRES,
+ REMATCH_DUSTY,
+ REMATCH_LOLA,
+ REMATCH_RICKY,
+ REMATCH_LILA_AND_ROY,
+ REMATCH_CRISTIN,
+ REMATCH_BROOKE,
+ REMATCH_WILTON,
+ REMATCH_VALERIE,
+ REMATCH_CINDY,
+ REMATCH_THALIA,
+ REMATCH_JESSICA,
+ REMATCH_WINSTON,
+ REMATCH_STEVE,
+ REMATCH_TONY,
+ REMATCH_NOB,
+ REMATCH_KOJI,
+ REMATCH_FERNANDO,
+ REMATCH_DALTON,
+ REMATCH_BERNIE,
+ REMATCH_ETHAN,
+ REMATCH_JOHN_AND_JAY,
+ REMATCH_JEFFREY,
+ REMATCH_CAMERON,
+ REMATCH_JACKI,
+ REMATCH_WALTER,
+ REMATCH_KAREN,
+ REMATCH_JERRY,
+ REMATCH_ANNA_AND_MEG,
+ REMATCH_ISABEL,
+ REMATCH_MIGUEL,
+ REMATCH_TIMOTHY,
+ REMATCH_SHELBY,
+ REMATCH_CALVIN,
+ REMATCH_ELLIOT,
+ REMATCH_ISAIAH,
+ REMATCH_MARIA,
+ REMATCH_ABIGAIL,
+ REMATCH_DYLAN,
+ REMATCH_KATELYN,
+ REMATCH_BENJAMIN,
+ REMATCH_PABLO,
+ REMATCH_NICOLAS,
+ REMATCH_ROBERT,
+ REMATCH_LAO,
+ REMATCH_CYNDY,
+ REMATCH_MADELINE,
+ REMATCH_JENNY,
+ REMATCH_DIANA,
+ REMATCH_AMY_AND_LIV,
+ REMATCH_ERNEST,
+ REMATCH_CORY,
+ REMATCH_EDWIN,
+ REMATCH_LYDIA,
+ REMATCH_ISAAC,
+ REMATCH_GABRIELLE,
+ REMATCH_CATHERINE,
+ REMATCH_JACKSON,
+ REMATCH_HALEY,
+ REMATCH_JAMES,
+ REMATCH_TRENT,
+ REMATCH_SAWYER,
+ REMATCH_KIRA_AND_DAN,
+ REMATCH_WALLY_3,
+ REMATCH_ROXANNE,
+ REMATCH_BRAWLY,
+ REMATCH_WATTSON,
+ REMATCH_FLANNERY,
+ REMATCH_NORMAN,
+ REMATCH_WINONA,
+ REMATCH_TATE_AND_LIZA,
+ REMATCH_JUAN,
+ REMATCH_SIDNEY,
+ REMATCH_PHOEBE,
+ REMATCH_GLACIA,
+ REMATCH_DRAKE,
+ REMATCH_WALLACE
+};
+
+void UpdateGymLeaderRematch(void);
+
+#endif //GUARD_TRAINER_REMATCH_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
index f4ba827e3..426a2d48c 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -10,12 +10,12 @@ s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
-s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
+s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2);
// sub_81DB41C
// CopyMonCategoryText
// sub_81DB494
void PadNameString(u8 *dst, u8 padWith);
-// sub_81DB554
+void sub_81DB554(u8 *, u8);
// sub_81DB5AC
u32 sub_81DB604(const u8 *);
// sub_81DB620
diff --git a/include/intro.h b/include/intro.h
index 53a446418..b1bfe20a4 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -1,6 +1,12 @@
#ifndef GUARD_INTRO_H
#define GUARD_INTRO_H
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void CB2_InitCopyrightScreenAfterBootup(void);
void CB2_InitCopyrightScreenAfterBootup(void);
void CB2_InitCopyrightScreenAfterTitleScreen(void);
void sub_816F2A8(u16, u16, u16, u16);
diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h
new file mode 100644
index 000000000..354d62e05
--- /dev/null
+++ b/include/intro_credits_graphics.h
@@ -0,0 +1,30 @@
+#ifndef GUARD_INTRO_CREDITS_GRAPHICS_H
+#define GUARD_INTRO_CREDITS_GRAPHICS_H
+
+extern u16 gUnknown_0203BD24;
+extern s16 gUnknown_0203BD26;
+extern s16 gUnknown_0203BD28;
+
+extern const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[];
+extern const struct CompressedSpriteSheet gIntro2MaySpriteSheet[];
+extern const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[];
+extern const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[];
+extern const struct SpritePalette gUnknown_085F530C[];
+extern const struct CompressedSpriteSheet gUnknown_085F5334[];
+extern const struct CompressedSpriteSheet gUnknown_085F5344[];
+extern const struct CompressedSpriteSheet gUnknown_085F5354[];
+extern const struct CompressedSpriteSheet gUnknown_085F53AC[];
+extern const struct CompressedSpriteSheet gUnknown_085F53BC[];
+extern const struct SpritePalette gUnknown_085F5384[];
+
+void load_intro_part2_graphics(u8 a);
+void sub_817B150(u8 a);
+void sub_817B1C8(u8);
+void sub_817B3A8(u8);
+u8 sub_817B3DC(u8 a, u16 b, u16 c, u16 d);
+void sub_817B540(u8);
+u8 intro_create_brendan_sprite(s16 a, s16 b);
+u8 intro_create_may_sprite(s16 a, s16 b);
+u8 intro_create_flygon_sprite(s16 a, s16 b);
+
+#endif // GUARD_INTRO_CREDITS_GRAPHICS_H
diff --git a/include/item.h b/include/item.h
index 06eb08046..881d3a3d4 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,11 +1,32 @@
-#ifndef ITEM_H
-#define ITEM_H
+#ifndef GUARD_ITEM_H
+#define GUARD_ITEM_H
+
+// These constants are used in gItems
+enum
+{
+ POCKET_NONE,
+ POCKET_ITEMS,
+ POCKET_POKE_BALLS,
+ POCKET_TM_HM,
+ POCKET_BERRIES,
+ POCKET_KEY_ITEMS,
+};
+
+enum
+{
+ ITEMS_POCKET,
+ BALLS_POCKET,
+ TMHM_POCKET,
+ BERRIES_POCKET,
+ KEYITEMS_POCKET,
+ POCKETS_COUNT
+};
typedef void (*ItemUseFunc)(u8);
struct Item
{
- u8 name[14];
+ u8 name[ITEM_NAME_LENGTH];
u16 itemId;
u16 price;
u8 holdEffect;
@@ -29,28 +50,41 @@ struct BagPocket
extern struct BagPocket gBagPockets[];
-void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);
-void CopyItemName(u16 itemId, u8 *string);
-void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity);
+void ApplyNewEncryptionKeyToBagItems(u32 newKey);
+void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
+void SetBagItemsPointers(void);
+void CopyItemName(u16 itemId, u8 *dst);
+void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity);
+void GetBerryCountString(u8 *dst, const u8 *berryName, u32 quantity);
bool8 IsBagPocketNonEmpty(u8 pocket);
bool8 CheckBagHasItem(u16 itemId, u16 count);
+bool8 HasAtLeastOneBerry(void);
bool8 CheckBagHasSpace(u16 itemId, u16 count);
bool8 AddBagItem(u16 itemId, u16 count);
bool8 RemoveBagItem(u16 itemId, u16 count);
u8 GetPocketByItemId(u16 itemId);
-void ClearItemSlots(struct ItemSlot *itemSlots, u8 b);
+void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount);
u8 CountUsedPCItemSlots(void);
bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
void RemovePCItem(u8 index, u16 count);
+void CompactPCItems(void);
void SwapRegisteredBike(void);
-const struct Item *ItemId_GetItem(u16 itemId);
+u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos);
+u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos);
+void CompactItemsInBagPocket(struct BagPocket *bagPocket);
+void SortBerriesOrTMHMs(struct BagPocket *bagPocket);
+void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_);
+void ClearBag(void);
+u16 CountTotalItemQuantityInBag(u16 itemId);
+bool8 AddPyramidBagItem(u16 itemId, u16 count);
+bool8 RemovePyramidBagItem(u16 itemId, u16 count);
+const u8 *ItemId_GetName(u16 itemId);
u16 ItemId_GetId(u16 itemId);
u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
u8 ItemId_GetHoldEffectParam(u16 itemId);
const u8 *ItemId_GetDescription(u16 itemId);
-bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
u8 ItemId_GetImportance(u16 itemId);
u8 ItemId_GetUnknownValue(u16 itemId);
u8 ItemId_GetPocket(u16 itemId);
@@ -59,7 +93,5 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
-u16 itemid_get_market_price(u16 itemId);
-u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos);
-#endif // ITEM_H
+#endif // GUARD_ITEM_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 0ddd6766b..40c015a8e 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -4,22 +4,58 @@
// Exported type declarations
struct BagStruct
{
- void *func;
- u8 unk4;
+ void (*bagCallback)(void);
+ u8 location;
u8 pocket;
u8 unk6[2];
- u16 unk8[5];
- u16 unk12[5];
- void *unk1C;
+ u16 cursorPosition[5];
+ u16 scrollPosition[5];
};
extern struct BagStruct gUnknown_0203CE58;
+struct UnkBagStruct
+{
+ void (*unk0)(void);
+ u8 unk4[0x800];
+ u8 unk804[12];
+ u8 unk810[7];
+ u8 unk817;
+ u8 unk818;
+ u8 unk819;
+ u8 unk81A;
+ u8 unk81B:4;
+ u8 unk81B_1:2;
+ u8 unk81B_3:1;
+ u8 unk81B_2:1;
+ u8 filler3[2];
+ u8 unk81E;
+ u8 unk81F;
+ const u8* unk820;
+ u8 unk824;
+ u8 unk825;
+ u8 filler[2];
+ u8 unk828;
+ u8 unk829[5];
+ u8 unk82E[6];
+ s16 unk834;
+ u8 filler4[0xE];
+ u8 unk844[32][32];
+ u8 filler2[4];
+};
+
+extern struct UnkBagStruct *gUnknown_0203CE54;
+
// Exported RAM declarations
+extern u16 gSpecialVar_ItemId;
+
// Exported ROM declarations
+void sub_81AAC14(void);
void sub_81AAC50(void);
void sub_81AAC70(void);
void bag_menu_mail_related(void);
+void CB2_BagMenuFromStartMenu(void);
+u8 sub_81ABB2C(u8 pocketId);
#endif //GUARD_item_menu_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index c3932390c..aee7599df 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -1,12 +1,25 @@
#ifndef GUARD_ITEM_MENU_ICONS
#define GUARD_ITEM_MENU_ICONS
+extern const struct CompressedSpriteSheet gUnknown_0857FB34;
+extern const struct CompressedSpriteSheet gUnknown_0857FB3C;
+extern const struct CompressedSpritePalette gUnknown_0857FB44;
extern const struct CompressedSpriteSheet gUnknown_0857FDEC;
extern const struct CompressedSpritePalette gUnknown_0857FDF4;
-u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3);
+void RemoveBagSprite(u8 id);
+void AddBagVisualSprite(u8 bagPocketId);
+void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets);
+void ShakeBagVisual(void);
+void AddSwitchPocketRotatingBallSprite(s16 rotationDirection);
+void AddBagItemIconSprite(u16 itemId, u8 id);
+void RemoveBagItemIconSprite(u8 id);
+void sub_80D4FAC(void);
+void sub_80D4FC8(u8 arg0);
+void sub_80D4FEC(u8 arg0);
u8 CreateBerryTagSprite(u8 id, s16 x, s16 y);
void FreeBerryTagSpritePalette(void);
+u8 sub_80D511C(u8 berryId, u8 x, u8 y, bool8 startAffine);
u8 CreateBerryFlavorCircleSprite(s16 x);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/item_use.h b/include/item_use.h
index ee7939824..7874f7ee9 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -12,7 +12,7 @@ void ItemUseOutOfBattle_Itemfinder(u8);
void ItemUseOnFieldCB_Itemfinder(u8);
void RunItemfinderResults(u8);
void ExitItemfinder(u8);
-bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8);
+bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8);
void sub_80C9720(u8);
void sub_80C9838(u8, s16, s16);
u8 GetPlayerDirectionTowardsHiddenItem(s16, s16);
@@ -21,11 +21,13 @@ void DisplayItemRespondingMessageAndExitItemfinder(u8);
void RotatePlayerAndExitItemfinder(u8);
void ItemUseOutOfBattle_PokeblockCase(u8);
void ItemUseOutOfBattle_CoinCase(u8);
+void ItemUseOutOfBattle_PowderJar(u8);
void ItemUseOutOfBattle_SSTicket(u8);
void sub_80C9D00(u8);
void ItemUseOutOfBattle_WailmerPail(u8);
void sub_80C9D74(u8);
void ItemUseOutOfBattle_Medicine(u8);
+void ItemUseOutOfBattle_ReduceEV(u8);
void ItemUseOutOfBattle_SacredAsh(u8);
void ItemUseOutOfBattle_PPRecovery(u8);
void ItemUseOutOfBattle_PPUp(u8);
@@ -50,5 +52,6 @@ void ItemUseOutOfBattle_EnigmaBerry(u8);
void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
+void sub_80FDD10(u8);
#endif // GUARD_ITEM_USE_H
diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h
new file mode 100644
index 000000000..7d347df05
--- /dev/null
+++ b/include/libgcnmultiboot.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_LIBGCMMULTIBOOT_H
+#define GUARD_LIBGCNMULTIBOOT_H
+
+struct GcmbStruct
+{
+ u16 gcmb_field_0;
+ vu8 gcmb_field_2;
+ u8 filler3[0x2C - 0x3];
+};
+
+void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Quit(void);
+
+#endif // GUARD_LIBGCNMULTIBOOT_H
diff --git a/include/librfu.h b/include/librfu.h
index dbc8a41a6..aae7df4e9 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -67,6 +67,28 @@ union RfuPacket
struct RfuPacket8 rfuPacket8;
};
+struct __attribute__((packed)) UnkLinkRfuStruct_02022B14
+{
+ u16 unk_00_0:4;
+ u16 unk_00_4:1;
+ u16 unk_00_5:1;
+ u16 unk_00_6:1;
+ u16 unk_00_7:1;
+ u16 unk_01_0:1;
+ u16 unk_01_1:1;
+ u16 unk_01_2:4;
+ u16 unk_01_6:2;
+ u8 playerTrainerId[2];
+ u8 unk_04[4];
+ u16 unk_08_0:10;
+ u16 unk_09_2:6;
+ u8 unk_0a_0:7;
+ u8 unk_0a_7:1;
+ u8 playerGender:1;
+ u8 unk_0b_1:7;
+ u8 unk_0c;
+};
+
struct RfuStruct
{
vs32 unk_0;
@@ -103,6 +125,127 @@ struct RfuIntrStruct
u8 block2[0x30];
};
+struct RfuUnk1
+{
+ u16 unk_0;
+ u8 unk_2;
+ u8 unk_3;
+ u8 fill_4[14];
+ u8 unk_12;
+ u32 unk_14;
+ u32 unk_18;
+ struct RfuIntrStruct unk_1c;
+};
+
+struct RfuUnk2
+{
+ u16 unk_0;
+ u16 unk_2;
+ u8 fill_4[0x16];
+ u8 unk_1a;
+ u8 fill_1b[0x19];
+ u16 unk_34;
+ u16 unk_36;
+ u8 fill_38[0x16];
+ u8 unk_4e;
+ u8 fill_4f[0x12];
+ u8 unk_61;
+ u8 fill_62[6];
+ void *unk_68;
+ void *unk_6c;
+ u8 unk_70[0x70];
+};
+
+struct RfuUnk3
+{
+ u32 unk_0;
+ u32 unk_4;
+ u8 unk_8[0xD4];
+ u32 unk_dc;
+};
+
+struct RfuUnk5Sub {
+ u16 unk_00;
+ u8 unk_02;
+ u16 unk_04;
+ struct UnkLinkRfuStruct_02022B14 unk_06;
+ u8 fill_13[2];
+ u8 unk_15[8];
+};
+
+struct RfuUnk5
+{
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ u8 unk_05;
+ u8 unk_06;
+ u8 unk_07;
+ u8 unk_08;
+ u8 filler_09[1];
+ u8 unk_0a[4];
+ u8 filler_0e[6];
+ struct RfuUnk5Sub unk_14[4];
+};
+
extern struct RfuStruct *gRfuState;
+extern struct RfuUnk5 *gUnknown_03007890;
+extern u32 *gUnknown_03007894;
+extern struct RfuUnk3* gUnknown_03007898;
+extern struct RfuUnk2* gUnknown_03007880[4];
+extern struct RfuUnk1* gUnknown_03007870[4];
+extern void* sub_82E53F4;
+extern void rfu_STC_clearAPIVariables(void);
+
+struct UnkLinkRfuStruct_02022B14;
+
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
+void rfu_REQ_stopMode(void);
+void rfu_waitREQComplete(void);
+u32 rfu_REQBN_softReset_and_checkID(void);
+void rfu_REQ_sendData(u8);
+void rfu_setMSCCallback(void (*func)(u16));
+void rfu_setREQCallback(void (*func)(u16, u16));
+bool8 rfu_getMasterSlave(void);
+void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3);
+bool16 rfu_syncVBlank(void);
+void rfu_REQ_reset(void);
+void rfu_REQ_configSystem(u16, u8, u8);
+void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *);
+void rfu_REQ_startSearchChild(void);
+void rfu_REQ_pollSearchChild(void);
+void rfu_REQ_endSearchChild(void);
+void rfu_REQ_startSearchParent(void);
+void rfu_REQ_pollSearchParent(void);
+void rfu_REQ_endSearchParent(void);
+void rfu_REQ_startConnectParent(u16);
+void rfu_REQ_pollConnectParent(void);
+void rfu_REQ_endConnectParent(void);
+void rfu_REQ_CHILD_startConnectRecovery(u8);
+void rfu_REQ_CHILD_pollConnectRecovery(void);
+void rfu_REQ_CHILD_endConnectRecovery(void);
+void rfu_REQ_changeMasterSlave(void);
+void rfu_REQ_RFUStatus(void);
+void rfu_getRFUStatus(u8 *status);
+u8 *rfu_getSTWIRecvBuffer(void);
+u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1);
+void rfu_clearSlot(u8 a0, u8 a1);
+void rfu_clearAllSlot(void);
+bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
+bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1);
+bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0);
+void rfu_REQ_disconnect(u8 who);
+void rfu_changeSendTarget(u8 a0, u8 who, u8 a2);
+void rfu_NI_stopReceivingData(u8 who);
+u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam);
+void rfu_setTimerInterrupt(u8 which, IntrFunc *intr);
+void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3);
+bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size);
+void rfu_REQ_recvData(void);
+void rfu_UNI_readySendData(u8 a0);
+void rfu_UNI_clearRecvNewDataFlag(u8 a0);
+void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
+void rfu_NI_setSendData(u8, u8, u8 *, u8);
diff --git a/include/link.h b/include/link.h
index 709bdc399..9dd85460e 100644
--- a/include/link.h
+++ b/include/link.h
@@ -7,6 +7,9 @@
#define QUEUE_CAPACITY 50
#define BLOCK_BUFFER_SIZE 0x100
+#define LINK_SLAVE 0
+#define LINK_MASTER 8
+
#define LINK_STAT_LOCAL_ID 0x00000003
#define LINK_STAT_PLAYER_COUNT 0x0000001C
#define LINK_STAT_PLAYER_COUNT_SHIFT 2
@@ -16,7 +19,23 @@
#define LINK_STAT_CONN_ESTABLISHED_SHIFT 6
#define LINK_STAT_RECEIVED_NOTHING 0x00000100
#define LINK_STAT_RECEIVED_NOTHING_SHIFT 8
+#define LINK_STAT_UNK_FLAG_9 0x00000200
+#define LINK_STAT_UNK_FLAG_9_SHIFT 9
#define LINK_STAT_ERRORS 0x0007F000
+#define LINK_STAT_ERRORS_SHIFT 12
+
+#define LINK_STAT_ERROR_HARDWARE 0x00001000
+#define LINK_STAT_ERROR_HARDWARE_SHIFT 12
+#define LINK_STAT_ERROR_CHECKSUM 0x00002000
+#define LINK_STAT_ERROR_CHECKSUM_SHIFT 13
+#define LINK_STAT_ERROR_QUEUE_FULL 0x00004000
+#define LINK_STAT_ERROR_QUEUE_FULL_SHIFT 14
+#define LINK_STAT_ERROR_LAG_MASTER 0x00010000
+#define LINK_STAT_ERROR_LAG_MASTER_SHIFT 16
+#define LINK_STAT_ERROR_INVALID_ID 0x00020000
+#define LINK_STAT_ERROR_INVALID_ID_SHIFT 17
+#define LINK_STAT_ERROR_LAG_SLAVE 0x00040000
+#define LINK_STAT_ERROR_LAG_SLAVE_SHIFT 18
#define EXTRACT_PLAYER_COUNT(status) \
(((status) & LINK_STAT_PLAYER_COUNT) >> LINK_STAT_PLAYER_COUNT_SHIFT)
@@ -26,10 +45,41 @@
(((status) >> LINK_STAT_CONN_ESTABLISHED_SHIFT) & 1)
#define EXTRACT_RECEIVED_NOTHING(status) \
(((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1)
+#define EXTRACT_LINK_ERRORS(status) \
+(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
+
+#define LINKCMD_SEND_LINK_TYPE 0x2222
+#define LINKCMD_0x2FFE 0x2FFE
+#define LINKCMD_SEND_HELD_KEYS 0x4444
+#define LINKCMD_0x5555 0x5555
+#define LINKCMD_0x5566 0x5566
+#define LINKCMD_0x5FFF 0x5FFF
+#define LINKCMD_0x6666 0x6666
+#define LINKCMD_0x7777 0x7777
+#define LINKCMD_CONT_BLOCK 0x8888
+#define LINKCMD_0xAAAA 0xAAAA
+#define LINKCMD_0xAAAB 0xAAAB
+#define LINKCMD_INIT_BLOCK 0xBBBB
+#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
+#define LINKCMD_0xCCCC 0xCCCC
+
+struct LinkStatus
+{
+ u32 localId:2;
+ u32 playerCount:3;
+ u32 master:1;
+ u32 connEstablished:1;
+ u32 unused_7:1;
+ u32 receivedNothing:1;
+ u32 unused_9:7;
+ u32 errors:7;
+};
#define MASTER_HANDSHAKE 0x8FFF
#define SLAVE_HANDSHAKE 0xB9A0
+#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
+
enum
{
LINK_STATE_START0,
@@ -45,6 +95,9 @@ enum
EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS,
+ EXCHANGE_STAT_4,
+ EXCHANGE_STAT_5,
+ EXCHANGE_STAT_6
};
enum
@@ -75,18 +128,18 @@ struct LinkPlayer
struct LinkPlayerBlock
{
- u8 magic1[16];
+ char magic1[16];
struct LinkPlayer linkPlayer;
- u8 magic2[16];
+ char magic2[16];
};
// circular queues
struct SendQueue
{
- u16 data[CMD_LENGTH][QUEUE_CAPACITY];
- u8 pos;
- u8 count;
+ /* 0x000 */ u16 data[CMD_LENGTH][QUEUE_CAPACITY];
+ /* 0x320 */ u8 pos;
+ /* 0x321 */ u8 count;
};
struct RecvQueue
@@ -98,29 +151,29 @@ struct RecvQueue
struct Link
{
- u8 isMaster; // 0: slave, 8: master
- u8 state;
- u8 localId; // local multi-player ID
- u8 playerCount;
- u16 tempRecvBuffer[4];
- bool8 receivedNothing;
- s8 serialIntrCounter;
- bool8 handshakeAsMaster;
- u8 link_field_F;
+ /* 0x000 */ u8 isMaster; // 0: slave, 8: master
+ /* 0x001 */ u8 state;
+ /* 0x002 */ u8 localId; // local multi-player ID
+ /* 0x003 */ u8 playerCount;
+ /* 0x004 */ u16 tempRecvBuffer[4];
+ /* 0x00c */ bool8 receivedNothing;
+ /* 0x00d */ s8 serialIntrCounter;
+ /* 0x00e */ bool8 handshakeAsMaster;
+ /* 0x00f */ u8 link_field_F;
// error conditions
- bool8 hardwareError; // hardware reported an error
- bool8 badChecksum; // checksum didn't match between devices
- u8 queueFull; // send or recv queue out of space
- u8 lag; // connection is lagging
+ /* 0x010 */ bool8 hardwareError; // hardware reported an error
+ /* 0x011 */ bool8 badChecksum; // checksum didn't match between devices
+ /* 0x012 */ u8 queueFull; // send or recv queue out of space
+ /* 0x013 */ u8 lag; // connection is lagging
- u16 checksum;
+ /* 0x014 */ u16 checksum;
- u8 sendCmdIndex;
- u8 recvCmdIndex;
+ /* 0x016 */ u8 sendCmdIndex;
+ /* 0x017 */ u8 recvCmdIndex;
- struct SendQueue sendQueue;
- struct RecvQueue recvQueue;
+ /* 0x018 */ struct SendQueue sendQueue;
+ /* 0x33c */ struct RecvQueue recvQueue;
};
struct BlockRequest
@@ -136,26 +189,30 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType;
extern u32 gLinkStatus;
-extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH];
-extern u8 gShouldAdvanceLinkState;
-extern struct LinkPlayer gLinkPlayers[];
+extern struct LinkPlayer gLinkPlayers[5];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
+extern u32 gUnknown_020223C0;
extern bool8 gLinkVSyncDisabled;
extern u32 gLinkStatus;
+
+void c2_mystery_gift(void);
+void sub_801867C(void);
+bool8 sub_80093CC(void);
void Task_DestroySelf(u8 taskId);
void OpenLink(void);
void CloseLink(void);
-u16 LinkMain2(u16 *);
+u16 LinkMain2(const u16 *);
void sub_8007B14(void);
bool32 sub_8007B24(void);
void ClearLinkCallback(void);
void ClearLinkCallback_2(void);
u8 GetLinkPlayerCount(void);
void OpenLinkTimed(void);
-u8 GetLinkPlayerDataExchangeStatusTimed(void);
+u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper);
bool8 IsLinkPlayerDataExchangeComplete(void);
u32 GetLinkPlayerTrainerId(u8);
void ResetLinkPlayers(void);
@@ -163,11 +220,10 @@ void sub_8007E24(void);
void sub_8007E4C(void);
u8 GetMultiplayerId(void);
u8 bitmask_all_link_players_but_self(void);
-bool8 SendBlock(u8, void *, u16);
+bool8 SendBlock(u8, const void *, u16);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
-void SetLinkDebugValues(u32, u32);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
void CB2_LinkError(void);
@@ -176,29 +232,73 @@ bool8 IsLinkConnectionEstablished(void);
void SetSuppressLinkErrorMessage(bool8);
bool8 HasLinkErrorOccurred(void);
void ResetSerial(void);
-u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
+u32 LinkMain1(u8 *shouldAdvanceLinkState, u16 *sendCmd, u16 (*recvCmds)[CMD_LENGTH]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
u8 GetLinkPlayerCount(void);
bool32 InUnionRoom(void);
-
void sub_800E0E8(void);
bool8 sub_800A520(void);
-bool8 sub_8010500(void);
-void sub_800DFB4(u8, u8);
+void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
-void OpenLink(void);
void sub_800A620(void);
void sub_8011BD0(void);
+u8 IsLinkMaster(void);
void sub_800AC34(void);
+bool8 HandleLinkConnection(void);
+void SetLinkDebugValues(u32 seed, u32 flags);
+void sub_800A418(void);
+void SetSuppressLinkErrorMessage(bool8 flag);
+void sub_800B524(struct LinkPlayer *linkPlayer);
+u8 GetSioMultiSI(void);
+void sub_800AAF4(void);
+void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
+void sub_800B348(void);
+void sub_800B3A4(u32 who);
+bool32 sub_800A07C(void);
+
+extern u16 gLinkPartnersHeldKeys[6];
+extern u32 gLinkDebugSeed;
+extern struct LinkPlayerBlock gLocalLinkPlayerBlock;
+extern bool8 gLinkErrorOccurred;
+extern u32 gLinkDebugFlags;
+extern bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS];
+extern u8 gBlockReceivedStatus[MAX_LINK_PLAYERS];
+extern u16 gLinkHeldKeys;
+extern u32 gLinkStatus;
+extern u8 gUnknown_030030E4;
+extern u8 gUnknown_030030E8;
+extern u8 gUnknown_030030EC[MAX_LINK_PLAYERS];
+extern u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
+extern u16 gUnknown_030030F4;
+extern u8 gSuppressLinkErrorMessage;
+extern u8 gWirelessCommType;
+extern bool8 gSavedLinkPlayerCount;
+extern u8 gSavedMultiplayerId;
+extern struct LinkTestBGInfo gLinkTestBGInfo;
+extern void (*gLinkCallback)(void);
+extern bool8 gShouldAdvanceLinkState;
+extern u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
+extern u8 gBlockRequestType;
+extern u8 gLastSendQueueCount;
+extern u8 gLastRecvQueueCount;
+extern u16 gLinkSavedIme;
+extern u32 gFiller_03003074;
+extern u32 gFiller_03003154;
+extern u32 gFiller_03003158;
+extern u32 gFiller_0300315c;
+extern u32 gFiller_03004138;
+extern u32 gFiller_0300413C;
+extern u32 gFiller_03003080;
+
bool32 Link_AnyPartnersPlayingRubyOrSapphire(void);
bool32 sub_800A03C(void);
void sub_8009628(u8);
u8 sub_800AA48(void);
void sub_8009FAC(void);
-void sub_800A4D8(u8);
+bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
bool8 sub_801048C(u8);
u8 sub_800A0C8(s32, s32);
diff --git a/include/link_rfu.h b/include/link_rfu.h
new file mode 100644
index 000000000..a6084b138
--- /dev/null
+++ b/include/link_rfu.h
@@ -0,0 +1,235 @@
+#ifndef GUARD_LINK_RFU_H
+#define GUARD_LINK_RFU_H
+
+// Exported type declarations
+
+struct UnkLinkRfuStruct_02022B2C
+{
+ u8 unk_00;
+ u8 unk_01;
+ u16 unk_02;
+ u8 unk_04;
+ u16 unk_06;
+ struct UnkLinkRfuStruct_02022B14 *unk_08;
+ u8 *unk_0c;
+ u8 unk_10;
+ u8 unk_11;
+ u16 unk_12;
+ u16 unk_14;
+};
+
+struct UnkLinkRfuStruct_02022B44
+{
+ u8 fill_00[6];
+ u16 unk_06;
+ u8 fill_08[6];
+ vu8 unk_0e;
+ u8 unk_0f;
+ u8 fill_10[0x54];
+ u16 unk_64;
+ u8 fill_66[0x1d];
+ u8 unk_83;
+ u8 fill_84[0x58];
+};
+
+struct UnkRfuStruct_1 {
+ /* 0x000 */ u8 unk_00;
+ /* 0x001 */ u8 unk_01;
+ /* 0x002 */ vu8 unk_02;
+ /* 0x003 */ vu8 unk_03;
+ /* 0x004 */ u8 unk_04;
+ /* 0x005 */ u8 unk_05;
+ /* 0x006 */ u8 unk_06;
+ /* 0x007 */ u8 unk_07;
+ /* 0x008 */ u8 unk_08;
+ /* 0x009 */ u8 unk_09;
+ /* 0x00a */ u8 unk_0a;
+ /* 0x00b */ u8 unk_0b;
+ /* 0x00c */ u8 unk_0c;
+ /* 0x00d */ u8 unk_0d;
+ /* 0x00e */ u8 unk_0e;
+ /* 0x00f */ u8 unk_0f;
+ /* 0x010 */ u8 unk_10;
+ /* 0x011 */ u8 unk_11;
+ /* 0x012 */ u8 unk_12;
+ // aligned
+ /* 0x014 */ u16 unk_14;
+ /* 0x016 */ u16 unk_16;
+ /* 0x018 */ u16 unk_18;
+ /* 0x01a */ u16 unk_1a;
+ /* 0x01c */ u16 unk_1c;
+ /* 0x01e */ u16 unk_1e;
+ /* 0x020 */ const u16 *unk_20;
+ /* 0x024 */ u8 unk_24;
+ /* 0x026 */ u16 unk_26;
+ /* 0x028 */ u16 unk_28[4];
+ /* 0x030 */ u8 unk_30;
+ // aligned
+ /* 0x032 */ u16 unk_32;
+ /* 0x034 */ u16 unk_34[4];
+ /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c;
+ /* 0x040 */ void (*unk_40)(u8, u8);
+ /* 0x044 */ void (*unk_44)(u16);
+ /* 0x048 */ u8 filler_48[8];
+ /* 0x050 */ u32 unk_50[0x399];
+ /* 0xeb4 */ u8 filler_e64[12];
+};
+
+struct UnkRfuStruct_2_Sub_6c {
+ /* 0x00 */ u16 unk_00;
+ /* 0x02 */ u16 unk_02;
+ /* 0x04 */ const u8 *unk_04;
+ /* 0x08 */ u32 unk_08;
+ /* 0x0c */ u32 unk_0c;
+ /* 0x10 */ u8 unk_10;
+ /* 0x11 */ u8 unk_11;
+ /* 0x12 */ u8 unk_12;
+};
+
+struct UnkRfuStruct_2_Sub_124 {
+ /* 0x000 */ u8 unk_00[32][70];
+ /* 0x8c0 */ vu8 unk_8c0;
+ /* 0x8c1 */ vu8 unk_8c1;
+ /* 0x8c2 */ vu8 unk_8c2;
+ /* 0x8c3 */ vu8 unk_8c3;
+};
+
+struct UnkRfuStruct_2_Sub_9e8 {
+ /* 0x000 */ u8 unk_00[40][14];
+ /* 0x230 */ vu8 unk_230;
+ /* 0x231 */ vu8 unk_231;
+ /* 0x232 */ vu8 unk_232;
+ /* 0x233 */ vu8 unk_233;
+};
+
+struct UnkRfuStruct_2_Sub_c1c {
+ /* 0x00 */ u8 unk_00[2][14];
+ /* 0x1c */ vu8 unk_1c;
+ /* 0x1d */ vu8 unk_1d;
+ /* 0x1e */ vu8 unk_1e;
+};
+
+struct UnkRfuStruct_Sub_Unused {
+ /* 0x000 */ u8 unk_00[2][256];
+ /* 0x200 */ vu8 unk_200;
+ /* 0x201 */ vu8 unk_201;
+ /* 0x202 */ vu8 unk_202;
+ /* 0x203 */ vu8 unk_203;
+};
+
+struct UnkRfuStruct_2 {
+ /* 0x000 */ void (*unk_00)(void);
+ /* 0x004 */ u16 unk_04;
+ /* 0x006 */ u8 filler_06[4];
+ /* 0x00a */ u16 unk_0a;
+ /* 0x00c */ u8 unk_0c;
+ /* 0x00d */ u8 playerCount;
+ /* 0x00e */ u8 unk_0e;
+ /* 0x00f */ u8 unk_0f;
+ /* 0x010 */ u16 unk_10;
+ /* 0x012 */ u16 unk_12;
+ /* 0x014 */ u8 unk_14[4][14];
+ /* 0x04c */ u8 unk_4c[14];
+ /* 0x05a */ u8 unk_5a;
+ /* 0x05b */ u8 unk_5b;
+ /* 0x05c */ u8 unk_5c[5];
+ /* 0x061 */ u8 unk_61[5];
+ /* 0x066 */ u8 unk_66;
+ /* 0x067 */ u8 unk_67;
+ /* 0x068 */ u8 filler_68[4];
+ /* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c;
+ /* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5];
+ /* 0x0e4 */ u8 unk_e4[5];
+ /* 0x0e9 */ u8 unk_e9[5];
+ /* 0x0ee */ vu8 unk_ee;
+ /* 0x0ef */ u8 unk_ef;
+ /* 0x0f0 */ u8 unk_f0;
+ /* 0x0f1 */ u8 unk_f1;
+ /* 0x0f2 */ u16 unk_f2[6];
+ /* 0x0fe */ u16 unk_fe;
+ /* 0x100 */ u16 unk_100;
+ /* 0x102 */ u8 unk_102;
+ /* 0x103 */ u8 filler_103[0x21];
+ /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124;
+ /* 0x9e8 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8;
+ /* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
+ /* 0xc3c */ vu8 unk_c3c;
+ /* 0xc3d */ u8 unk_c3d;
+ /* 0xc3e */ vu8 unk_c3e;
+ /* 0xc3f */ u8 unk_c3f[70];
+ /* 0xc85 */ u8 unk_c85;
+ /* 0xc86 */ u8 unk_c86;
+ /* 0xc87 */ u8 unk_c87[5][7][2];
+ /* 0xccd */ u8 unk_ccd;
+ /* 0xcce */ u8 unk_cce;
+ /* 0xccf */ u8 unk_ccf;
+ /* 0xcd0 */ vu8 unk_cd0;
+ /* 0xcd1 */ u8 unk_cd1[4];
+ /* 0xcd5 */ u8 unk_cd5[4];
+ /* 0xcd9 */ u8 unk_cd9;
+ /* 0xcda */ u8 unk_cda;
+ /* 0xcdb */ vu8 unk_cdb;
+ /* 0xcdc */ vu8 unk_cdc;
+ /* 0xcdd */ u8 unk_cdd;
+ /* 0xcde */ u8 unk_cde[4];
+ /* 0xce2 */ u8 unk_ce2;
+ /* 0xce2 */ u8 unk_ce3;
+ /* 0xce4 */ u8 unk_ce4;
+ /* 0xce5 */ u8 unk_ce5;
+ /* 0xce5 */ u8 unk_ce6;
+ /* 0xce7 */ u8 unk_ce7;
+ /* 0xce8 */ u8 unk_ce8;
+ /* 0xce9 */ u8 unk_ce9;
+ /* 0xcea */ u8 unk_cea[4];
+ /* 0xcee */ u8 unk_cee[4];
+}; // size = 0xcf4
+
+struct UnkRfuStruct_8010A14 {
+ char unk_00[15];
+ u8 unk_0f;
+ u8 unk_10[4];
+ struct LinkPlayer unk_14[5];
+ u8 fill_a0[0x5c];
+};
+
+// Exported RAM declarations
+
+extern struct UnkRfuStruct_1 gUnknown_03004140;
+extern struct UnkRfuStruct_2 gUnknown_03005000;
+
+// Exported ROM declarations
+u32 sub_800BEC0(void);
+void sub_800E700(void);
+void sub_800EDD4(void);
+void sub_800F6FC(u8 who);
+void sub_800F728(u8 who);
+bool32 sub_800F7E4(void);
+void sub_800F804(void);
+void sub_800F850(void);
+u8 sub_800FCD8(void);
+bool32 sub_800FE84(const u8 *src, size_t size);
+void Rfu_set_zero(void);
+u8 sub_80104F4(void);
+u8 rfu_get_multiplayer_id(void);
+bool8 sub_8010100(u8 a0);
+bool8 sub_8010500(void);
+bool8 Rfu_IsMaster(void);
+void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
+void sub_8010434(void);
+void sub_800E604(void);
+void sub_800E174(void);
+void sub_800E6D0(void);
+bool32 sub_8010EC0(void);
+bool32 sub_8010F1C(void);
+bool32 sub_8011A80(void);
+bool32 sub_800F0B8(void);
+u32 sub_80124D4(void);
+void RfuVSync(void);
+void sub_80111B0(bool32 a0);
+u8 sub_8011A74(void);
+struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void);
+void sub_8011068(u8 a0);
+void sub_8011170(u32 a0);
+void sub_8011A64(u8 a0, u16 a1);
+
+#endif //GUARD_LINK_RFU_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 8b793c0e4..0aa66a524 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -4,9 +4,11 @@
#define LIST_NOTHING_CHOSEN -1
#define LIST_B_PRESSED -2
-// Exported type declarations
+#define LIST_NO_MULTIPLE_SCROLL 0
+#define LIST_MULTIPLE_SCROLL_DPAD 1
+#define LIST_MULTIPLE_SCROLL_L_R 2
-// Exported RAM declarations
+struct ListMenu;
struct ListMenuItem
{
@@ -14,33 +16,31 @@ struct ListMenuItem
s32 id;
};
-struct ListMenu;
-
struct ListMenuTemplate
{
const struct ListMenuItem *items;
- void (* moveCursorFunc)(u32, bool8, struct ListMenu *);
- void (* unk_08)(u8, s32, u8);
+ void (* moveCursorFunc)(s32, bool8, struct ListMenu *);
+ void (* unk_08)(u8 windowId, s32 itemId, u8 y);
u16 totalItems;
u16 maxShowed;
- u8 unk_10;
+ u8 windowId;
u8 unk_11;
u8 unk_12;
- u8 cursor_Y;
- u32 upText_Y:4; // x1, x2, x4, x8 = xF
- u32 cursorColor:4; // x10, x20, x40, x80 = xF0
- u32 fillColor:4; // x100, x200, x400, x800 = xF00
- u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000
- u32 unk_16_0:1; // x10000
- u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
- u32 unk_16_7:1; // x800000
- u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
- u32 cursorKind:2; // x40000000, x80000000
+ u8 cursor_X;
+ u8 upText_Y:4; // x1, x2, x4, x8 = xF
+ u8 cursorPal:4; // x10, x20, x40, x80 = xF0
+ u8 fillValue:4; // x1, x2, x4, x8 = xF
+ u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0
+ u8 lettersSpacing:3;
+ u8 unk_16_3:3;
+ u8 scrollMultiple:2; // x40, x80 = xC0
+ u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F
+ u8 cursorKind:2; // x40, x80
};
struct ListMenu
{
- struct ListMenuTemplate _template;
+ struct ListMenuTemplate template;
u16 scrollOffset;
u16 selectedRow;
u8 unk_1C;
@@ -49,13 +49,30 @@ struct ListMenu
u8 unk_1F;
};
-extern struct ListMenuTemplate gMultiuseListMenuTemplate;
+struct UnknownListMenuWindowStruct
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ u8 palNum;
+};
-// Exported ROM declarations
+extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-u8 ListMenuInit(struct ListMenuTemplate *template, u16 cursorPage, u16 cursorPosition);
+s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+u8 ListMenuInitWithWindows(struct ListMenuTemplate *listMenuTemplate, struct UnknownListMenuWindowStruct *arg1, u16 scrollOffset, u16 selectedRow);
s32 ListMenuHandleInputGetItemId(u8 listTaskId);
-void sub_81AE860(u8 listTaskId, u16 *a1, u16 *a2);
-void sub_81AE6C8(u8 listTaskId, u16 *a1, u16 *a2);
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void sub_81AE70C(u8 listTaskId);
+void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void ChangeListMenuCoords(u8 listTaskId, u8 x, u8 y);
+s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset, u32 selectedRow, u16 keys, u16 *newScrollOffset, u16 *newSelectedRow);
+void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId);
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
+void sub_81AF028(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void sub_81AF078(s32 arg0, u8 arg1, struct ListMenu *list);
#endif //GUARD_LIST_MENU_H
diff --git a/include/load_save.h b/include/load_save.h
index ba85d4ad8..0868316c8 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -1,25 +1,35 @@
#ifndef GUARD_LOAD_SAVE_H
#define GUARD_LOAD_SAVE_H
+extern struct SaveBlock1 gSaveblock1;
+extern struct SaveBlock2 gSaveblock2;
+extern struct PokemonStorage gPokemonStorage;
+
extern bool32 gFlashMemoryPresent;
+extern struct SaveBlock1 *gSaveBlock1Ptr;
+extern struct SaveBlock2 *gSaveBlock2Ptr;
+extern struct PokemonStorage *gPokemonStoragePtr;
+void CheckForFlashMemory(void);
void ClearSav2(void);
void ClearSav1(void);
-void CheckForFlashMemory(void);
+void SetSaveBlocksPointers(u16 offset);
void MoveSaveBlocks_ResetHeap(void);
-bool32 GetSecretBase2Field_9(void);
+u32 GetSecretBase2Field_9(void);
void ClearSecretBase2Field_9(void);
-void SetSecretBase2Field_9(void);
-void SetSecretBase2Field_9_AndHideBG(void);
-void ClearSecretBase2Field_9_2(void);
+void sub_8076D48(void);
+void sub_8076D5C(void);
+void sav2_gender2_inplace_and_xFE(void);
void SavePlayerParty(void);
void LoadPlayerParty(void);
+void SaveMapObjects(void);
+void LoadMapObjects(void);
void SaveSerializedGame(void);
void LoadSerializedGame(void);
void LoadPlayerBag(void);
void SavePlayerBag(void);
-void SetSaveBlocksPointers(u16);
-void sub_8076D5C(void);
-void sav2_gender2_inplace_and_xFE(void);
+void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey);
+void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
+void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/m4a.h b/include/m4a.h
index 8c3380dd8..a1f413cf5 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -17,4 +17,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern struct MusicPlayerInfo gMPlayInfo_SE2;
+extern struct MusicPlayerInfo gMPlayInfo_SE3;
+extern struct SoundInfo gSoundInfo;
+
#endif //GUARD_M4A_H
diff --git a/include/main.h b/include/main.h
index 40a2580a2..3de34de13 100644
--- a/include/main.h
+++ b/include/main.h
@@ -42,14 +42,19 @@ struct Main
/*0x439*/ u8 field_439_x4:1;
};
-extern u8 gUnknown_3001764;
-extern struct Main gMain;
-extern bool8 gSoftResetDisabled;
-extern bool8 gLinkVSyncDisabled;
-
extern const u8 gGameVersion;
extern const u8 gGameLanguage;
+extern u16 gKeyRepeatStartDelay;
+extern bool8 gLinkTransferringData;
+extern struct Main gMain;
+extern u16 gKeyRepeatContinueDelay;
+extern bool8 gSoftResetDisabled;
+extern IntrFunc gIntrTable[];
+extern u8 gLinkVSyncDisabled;
+extern u32 IntrMain_Buffer[];
+extern u8 gPcmDmaCounter;
+
void AgbMain(void);
void SetMainCallback2(MainCallback callback);
void InitKeys(void);
@@ -60,6 +65,7 @@ void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
+void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
diff --git a/include/malloc.h b/include/malloc.h
index 003ee1f03..6efa8fbef 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -1,6 +1,7 @@
#ifndef GUARD_MALLOC_H
#define GUARD_MALLOC_H
+#define HEAP_SIZE 0x1C000
#define malloc Alloc
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
diff --git a/include/map_name_popup.h b/include/map_name_popup.h
index 8a9043a3f..85d2f0795 100644
--- a/include/map_name_popup.h
+++ b/include/map_name_popup.h
@@ -7,5 +7,5 @@
// Exported ROM declarations
void HideMapNamePopUpWindow(void);
-
+void ShowMapNamePopup(void);
#endif //GUARD_MAP_NAME_POPUP_H
diff --git a/include/match_call.h b/include/match_call.h
new file mode 100644
index 000000000..9698e7cd3
--- /dev/null
+++ b/include/match_call.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_MATCH_CALL_H
+#define GUARD_MATCH_CALL_H
+
+enum {
+ MATCH_CALL_TYPE_NON_TRAINER,
+ MATCH_CALL_TYPE_TRAINER,
+ MATCH_CALL_TYPE_WALLY,
+ MATCH_CALL_TYPE_BIRCH,
+ MATCH_CALL_TYPE_MAY_BRENDAN,
+ MATCH_CALL_TYPE_GYMLEADER_ELITEFOUR
+};
+
+#endif //GUARD_MATCH_CALL_H
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 0c0ed624a..b1f10314a 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -2,11 +2,25 @@
#ifndef GUARD_MAUVILLE_OLD_MAN_H
#define GUARD_MAUVILLE_OLD_MAN_H
+enum MauvilleOldManType
+{
+ MAUVILLE_MAN_BARD,
+ MAUVILLE_MAN_HIPSTER,
+ MAUVILLE_MAN_TRADER,
+ MAUVILLE_MAN_STORYTELLER,
+ MAUVILLE_MAN_GIDDY
+};
+
+extern struct BardSong gBardSong;
+
void SetMauvilleOldMan(void);
+u8 GetCurrentMauvilleOldMan(void);
+void ScrSpecial_SetMauvilleOldManMapObjGfx(void);
u8 sub_81201C8(void);
void sub_8120B70(OldMan *dest);
-void sub_8120D34(OldMan *dest, u8 version, u16 language);
-void sub_8120CD0(OldMan *dest, u8 version, u16 language);
void sub_8120670(void);
+void sub_8120D34(union OldMan * oldMan, u32 r1, u32 r6);
+void sub_8120CD0(union OldMan * oldMan, u32 unused, u32 a2);
+void ResetMauvilleOldManFlag(void);
#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/menu.h b/include/menu.h
index 2046f7d2b..888d898b6 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -1,3 +1,4 @@
+
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
@@ -17,6 +18,8 @@ struct MenuAction
} func;
};
+extern const u16 gUnknown_0860F074[];
+
void sub_81971D0(void);
void sub_8197200(void);
u16 sub_8197224(void);
@@ -25,13 +28,15 @@ void NewMenuHelpers_DrawDialogueFrame(u8, u8);
void sub_819746C(u8 windowId, bool8 copyToVram);
void NewMenuHelpers_DrawStdWindowFrame(u8, u8);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
+void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
+void sub_8197434(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
u8 GetPlayerTextSpeed(void);
void sub_81978B0(u16 arg0);
+void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16));
void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
@@ -48,7 +53,9 @@ void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size,
bool8 free_temp_tile_data_buffers_if_possible(void);
struct WindowTemplate sub_8198A50(u8, u8, u8, u8, u8, u8, u16);
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
+void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode);
s8 ProcessMenuInputNoWrap_(void);
+s8 ProcessMenuInput_other(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
@@ -59,5 +66,23 @@ u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16);
void *malloc_and_decompress(const void *src, int *sizeOut);
u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
+void AddItemMenuActionTextPrinters (u8, u8, u8, u8, u8, u8, u8, const struct MenuAction*, const u8*);
+void sub_8198DBC(u8, u8, u8, u8, u8, u8, u8, const struct MenuAction*, const u8*);
+u8 sub_8199944(u8, u8, u8, u8, u8);
+u8 sub_8199134(s8, s8);
+u8 GetStartMenuWindowId(void);
+void sub_819A2BC(u8, u8);
+u8 MoveMenuCursor(s8 cursorDelta);
+void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
+u8 sub_81979C4(u8 a1);
+u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
+void sub_819786C(u8 windowId, bool8 copyToVram);
+void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress);
+void RemoveStartMenuWindow(void);
+void sub_8197948(u8 initialCursorPos);
+void sub_819A344(u8 a0, u8 *dest, u8 color);
+void RemoveMapNamePopUpWindow(void);
+u8 GetMapNamePopUpWindowId(void);
+u8 AddMapNamePopUpWindow(void);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 048a4aa43..387a89fdd 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -14,23 +14,27 @@ struct YesNoFuncTable
// Exported RAM declarations
// Exported ROM declarations
-
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
-bool8 sub_81221EC(void);
void ResetVramOamAndBgCntRegs(void);
-void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinates(void);
+void SetVBlankHBlankCallbacksToNull(void);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
-void sub_8122344(void *arg0, u8 arg1);
-void LoadListMenuArrowsGfx(void);
-void sub_81223FC(u8 *a0, u8 count, u8 a2);
-void sub_8122448(u8 *a0, u8 count, u16 x, u16 y);
-void DisplayMessageAndContinueTask(u8 taskId, u8 arg1, u16 arg2, u8 arg3, u8 arg4, u8 textSpeed, const u8 *string, void *taskFunc);
+void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysState(void);
u8 sub_812210C(void);
+bool8 sub_8122148(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
+bool8 sub_81221AC(void);
+bool8 sub_81221EC(void);
+void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount);
+void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3);
+void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4);
+void LoadListMenuArrowsGfx(void);
+void sub_8122344(u8 *spriteIds, u8 count);
+void sub_81223B0(u8 *spriteIds, u8 count);
+void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible);
+void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index d0baac810..a099cffab 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -6,7 +6,32 @@
// Exported RAM declarations
// Exported ROM declarations
+
+struct ArrowStruct
+{
+ u8 unk0[6];
+ u16 unk6[4];
+ u8 unkE;
+};
+
+struct CursorStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+ u16 unk8;
+ u8 unkA;
+};
+
+void Task_ScrollIndicatorArrowPairOnMainMenu(u8);
u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
void RemoveScrollIndicatorArrowPair(u8);
+u8 AddScrollIndicatorArrowPair(const struct ArrowStruct*, void*);
+void sub_81AF15C(u8, u8, u8);
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind);
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/mon_markings.h b/include/mon_markings.h
new file mode 100644
index 000000000..852e8b4eb
--- /dev/null
+++ b/include/mon_markings.h
@@ -0,0 +1,24 @@
+#ifndef POKEEMERALD_MON_MARKINGS_H
+#define POKEEMERALD_MON_MARKINGS_H
+
+struct PokemonMarkMenu
+{
+ /*0x0000*/ u16 baseTileTag;
+ /*0x0002*/ u16 basePaletteTag;
+ /*0x0004*/ u8 markings; // bit flags
+ /*0x0005*/ s8 cursorPos;
+ /*0x0006*/ bool8 markingsArray[4];
+ /*0x000A*/ u8 cursorBaseY;
+ /*0x000B*/ bool8 spriteSheetLoadRequired;
+ /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
+ /*0x0014*/ struct Sprite *menuMarkingSprites[4];
+ /*0x0024*/ struct Sprite *unkSprite;
+ /*0x0028*/ struct Sprite *menuTextSprite;
+ /*0x002C*/ const u8 *frameTiles;
+ /*0x0030*/ const u16 *framePalette;
+ /*0x0034*/ u8 menuWindowSpriteTiles[0x1000];
+ /*0x1034*/ u8 filler1030[0x80];
+ /*0x10B4*/ u8 tileLoadState;
+}; // 10b8
+
+#endif //POKEEMERALD_MON_MARKINGS_H
diff --git a/include/multiboot_pokemon_colosseum.h b/include/multiboot_pokemon_colosseum.h
new file mode 100644
index 000000000..33e4bc33c
--- /dev/null
+++ b/include/multiboot_pokemon_colosseum.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H
+#define GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H
+
+extern const u16 gMultiBootProgram_PokemonColosseum_Start[0x14000];
+
+#endif // GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H
diff --git a/include/overworld.h b/include/overworld.h
index b7ed920db..15d7bb362 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,7 +1,5 @@
-#ifndef GUARD_ROM4_H
-#define GUARD_ROM4_H
-
-#include "main.h"
+#ifndef GUARD_OVERWORLD_H
+#define GUARD_OVERWORLD_H
struct UnkPlayerStruct
{
@@ -17,66 +15,132 @@ struct LinkPlayerMapObject
u8 mode;
};
-struct UCoords32
-{
- u32 x, y;
-};
-
+// Exported RAM declarations
+extern struct WarpData gUnknown_020322DC;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
-extern MainCallback gFieldCallback;
-
-void IncrementGameStat(u8 index);
-
-void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
-void Overworld_SetMapObjTemplateMovementType(u8, u8);
-void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+extern u16 *gBGTilemapBuffers1;
+extern u16 *gBGTilemapBuffers2;
+extern u16 *gBGTilemapBuffers3;
-void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
-void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void Overworld_SetHealLocationWarp(u8);
-void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void sub_8084E2C(s8, s8, s8, s8, s8);
-void sub_8084E80(s8, s8, s8, s8, s8);
-void sub_8084EBC(s16, s16);
+extern void (*gFieldCallback)(void);
-void player_avatar_init_params_reset(void);
+// Exported ROM declarations
+extern const struct UCoords32 gUnknown_08339D64[];
-bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
+void DoWhiteOut(void);
+void Overworld_ResetStateAfterFly(void);
void Overworld_ResetStateAfterTeleport(void);
-
-void Overworld_SetFlashLevel(s32 a1);
-//u8 Overworld_GetFlashLevel(void);
-void sub_8085524(u16);
-
-void Overworld_SetSavedMusic(u16);
-void Overworld_ChangeMusicToDefault(void);
-void Overworld_ChangeMusicTo(u16);
-
-bool32 is_c1_link_related_active(void);
-
-void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
-void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
-void sub_8086230(void);
-void c2_exit_to_overworld_2_switch(void);
-bool32 sub_8087598(void);
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+void Overworld_ResetStateAfterDigEscRope(void);
+void ResetGameStats(void);
+void IncrementGameStat(u8 index);
+u32 GetGameStat(u8 index);
+void SetGameStat(u8 index, u32 value);
+void ApplyNewEncryptionKeyToGameStats(u32 newKey);
+void LoadMapObjTemplatesFromHeader(void);
+void LoadSaveblockMapObjScripts(void);
+void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y);
+void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType);
+const struct MapData *get_mapdata_header(void);
+void ApplyCurrentWarp(void);
+void set_warp2_warp3_to_neg_1(void);
+void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+bool32 warp_data_is_not_neg_1(struct WarpData *warp);
+struct MapHeader const *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
+struct MapHeader const *const warp1_get_mapheader(void);
+void set_current_map_header_from_sav1_save_old_name(void);
+void LoadSaveblockMapHeader(void);
+void update_camera_pos_from_warpid(void);
void warp_in(void);
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
-void sub_8086194(void);
-void sub_8084CCC(u8 spawn);
-void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
-void c2_load_new_map(void);
+void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
+void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId);
+void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
-void mapldr_default(void);
-void sub_808729C(void);
+void sub_8084CCC(u8 a1);
+void Overworld_SetWarpDestToLastHealLoc(void);
+void Overworld_SetHealLocationWarp(u8 healLocationId);
+void sub_8084D5C(s16 a1, s16 a2);
+void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084E14(void);
+void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void warp1_set_to_warp2(void);
+void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084EBC(s16 x, s16 y);
+void warp1_set_to_sav1w(void);
+void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084F6C(u8 a1);
+void sub_8084FAC(void);
+const struct MapConnection *GetMapConnection(u8 dir);
+bool8 sub_8084FF8(u8 dir, u16 x, u16 y);
+bool8 sub_8085058(u16 x, u16 y);
+bool8 sub_8085078(u16 x, u16 y);
+void mliX_load_map(u8 mapGroup, u8 mapNum);
+void player_avatar_init_params_reset(void);
+void walkrun_find_lowest_active_bit_in_bitfield(void);
+bool32 Overworld_IsBikingAllowed(void);
+void SetDefaultFlashLevel(void);
+void Overworld_SetFlashLevel(s32 flashLevel);
+u8 Overworld_GetFlashLevel(void);
+void sub_8085524(u16 mapDataId);
+void sub_8085540(u8 var);
+u8 sub_808554C(void);
+u16 GetLocationMusic(struct WarpData *warp);
+u16 GetCurrLocationDefaultMusic(void);
+u16 GetWarpDestinationMusic(void);
+void Overworld_ResetMapMusic(void);
+void Overworld_PlaySpecialMapMusic(void);
+void Overworld_SetSavedMusic(u16 songNum);
+void Overworld_ClearSavedMusic(void);
+void Overworld_ChangeMusicToDefault(void);
+void Overworld_ChangeMusicTo(u16 newMusic);
+u8 GetMapMusicFadeoutSpeed(void);
+void music_something(void);
+bool8 sub_80859A0(void);
+void Overworld_FadeOutMapMusic(void);
+void UpdateAmbientCry(s16 *state, u16 *delayCounter);
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
+u8 GetMapTypeByWarpData(struct WarpData *warp);
+u8 Overworld_GetMapTypeOfSaveblockLocation(void);
u8 get_map_light_from_warp0(void);
-bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-
-void IncrementGameStat(u8);
-u32 GetGameStat(u8);
-
+bool8 is_map_type_1_2_3_5_or_6(u8 mapType);
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
+bool8 Overworld_MapTypeIsIndoors(u8 mapType);
+u8 sav1_saved_warp2_map_get_name(void);
+u8 sav1_map_get_name(void);
+u8 GetCurrentMapBattleScene(void);
+void overworld_free_bg_tilemaps(void);
+bool32 is_c1_link_related_active(void);
+void CB1_Overworld(void);
void CB2_OverworldBasic(void);
+void CB2_Overworld(void);
+void SetMainCallback1(void (*cb)(void));
+void sub_8085E94(void *a0);
+void CB2_NewGame(void);
+void CB2_WhiteOut(void);
+void CB2_LoadMap(void);
+void sub_8086024(void);
+void sub_8086074(void);
+void CB2_ReturnToField(void);
+void CB2_ReturnToFieldLocal(void);
+void CB2_ReturnToFieldLink(void);
+void c2_8056854(void);
+void CB2_ReturnToFieldWithOpenMenu(void);
+void sub_80861B0(void);
+void CB2_ReturnToFieldContinueScript(void);
+void sub_80861E8(void);
+void CB2_ContinueSavedGame(void);
+void sub_8086C2C(void);
+u32 sub_8087214(void);
+bool32 sub_808727C(void);
+u16 sub_8087288(void);
+u16 sub_808729C(void);
+u16 sub_80872B0(void);
+u16 sub_80872C4(void);
+bool32 sub_8087598(void);
+bool32 sub_80875C8(void);
+bool32 sub_8087634(void);
+bool32 sub_808766C(void);
+void ZeroAllLinkPlayerMapObjects(void);
-#endif //GUARD_ROM4_H
+#endif // GUARD_OVERWORLD_H
diff --git a/include/palette.h b/include/palette.h
index 41cef4048..a1259d327 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -1,8 +1,6 @@
#ifndef GUARD_PALETTE_H
#define GUARD_PALETTE_H
-#include "global.h"
-
#define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade
#define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade
#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade
diff --git a/include/party_menu.h b/include/party_menu.h
index 1d1661cee..c96eb0d9d 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -1,6 +1,6 @@
#ifndef GUARD_PARTY_MENU_H
#define GUARD_PARTY_MENU_H
-
+#include "task.h"
enum
{
AILMENT_NONE,
@@ -11,6 +11,17 @@ enum
AILMENT_BRN
};
+struct Struct203CEC8
+{
+ u8 filler[0x9];
+ s8 unk9;
+ s8 unkA;
+ u8 unkB;
+ u8 filler2[0x2];
+};
+
+extern struct Struct203CEC8 gUnknown_0203CEC8;
+
bool8 pokemon_has_move(struct Pokemon *, u16);
void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
@@ -18,5 +29,14 @@ u8 pokemon_ailments_get_primary(u32 status);
u8 *GetMonNickname(struct Pokemon *mon, u8 *dst);
u8 GetCursorSelectionMonId(void);
bool8 FieldCallback_Teleport(void);
+void sub_81B7F60(void);
+
+void sub_81B0FCC(u8 partyIdx, u8 a);
+void sub_81B1370(u8 taskId);
+void display_pokemon_menu_message(u8 windowId);
+void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
+void sub_81B1B5C(void *a, u8 b);
+u8 sub_81B1BD4();
+void sub_81B8448();
#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
index b14d1ede3..bd060faa8 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -1,12 +1,88 @@
#ifndef GUARD_PLAYER_PC_H
#define GUARD_PLAYER_PC_H
+// local task defines
+#define PAGE_INDEX data[0]
+#define ITEMS_ABOVE_TOP data[1]
+#define NUM_ITEMS data[1]
+#define NUM_QUANTITY_ROLLER data[3]
+#define NUM_PAGE_ITEMS data[4]
+// not used
+#define CURRENT_ITEM_STORAGE_MENU data[3]
+// not used
+#define SWAP_ITEM_INDEX data[8]
+#define SWITCH_MODE_ACTIVE data[9]
+
+// this is potentially an ewram access occuring in high ewram. TODO: investigate this further.
+#define NEW_GAME_PC_ITEMS(i, type) ((u16)((u16 *)gNewGamePCItems + type)[i * 2])
+
+// defined and used in the above macro
+enum
+{
+ PC_ITEM_ID,
+ PC_QUANTITY
+};
+
+// player PC menu options
+enum
+{
+ PLAYERPC_MENU_ITEMSTORAGE,
+ PLAYERPC_MENU_MAILBOX,
+ PLAYERPC_MENU_DECORATION,
+ PLAYERPC_MENU_TURNOFF
+};
+
+// item storage menus
+enum
+{
+ ITEMPC_MENU_WITHDRAW,
+ ITEMPC_MENU_DEPOSIT,
+ ITEMPC_MENU_TOSS,
+ ITEMPC_MENU_EXIT
+};
+
+// mailbox mail options
+enum
+{
+ MAILBOX_READ,
+ MAILBOX_MOVE_TO_BAG,
+ MAILBOX_GIVE,
+ MAILBOX_CANCEL,
+};
+
+// special item description handlers
+enum
+{
+ ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7,
+ ITEMPC_OKAY_TO_THROW_AWAY,
+ ITEMPC_TOO_IMPORTANT,
+ ITEMPC_NO_MORE_ROOM,
+ ITEMPC_THREW_AWAY_ITEM,
+ ITEMPC_HOW_MANY_TO_TOSS,
+ ITEMPC_WITHDREW_THING,
+ ITEMPC_HOW_MANY_TO_WITHDRAW,
+ ITEMPC_GO_BACK_TO_PREV
+};
+
+struct PlayerPCItemPageStruct
+{
+ u16 cursorPos;
+ u16 itemsAbove;
+ u8 pageItems;
+ u8 count;
+ u8 filler[3];
+ u8 scrollIndicatorId;
+};
+
// Exported type declarations
// Exported RAM declarations
+extern struct PlayerPCItemPageStruct playerPCItemPageInfo;
// Exported ROM declarations
+extern const struct MenuAction gMailboxMailOptions[];
-void sub_816B060(u8 taskId);
+void ReshowPlayerPC(u8 taskId);
+void sub_816B31C(void);
#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 236feac45..19e1162e2 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -17,7 +17,6 @@ enum
};
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
-u16 pokedex_count(u8);
-u16 sub_80C0844(u8);
+u16 sub_80C0E9C(u16, s16, s16, u16);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index de52696dd..b6b0d6d36 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -2,6 +2,7 @@
#define GUARD_POKEMON_H
#include "constants/pokemon.h"
+#include "sprite.h"
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
@@ -266,6 +267,46 @@ struct UnknownPokemonStruct
u8 friendship;
};
+struct UnknownPokemonSubStruct2
+{
+ u16 species;
+ u16 moves[4];
+ u16 item;
+};
+
+struct UnknownPokemonStruct2
+{
+ u8 field_0_0 : 5;
+ u8 field_0_1 : 2;
+ u8 field_1;
+ u8 field_2;
+ u8 field_3;
+ struct UnknownPokemonSubStruct2 mons[3];
+ u8 field_28[23];
+ u8 language;
+};
+
+struct UnknownPokemonStruct3
+{
+ u8 field_0[48];
+ u16 field_30;
+ u8 field_32[38];
+};
+
+struct Unknown_806F160_Struct
+{
+ u8 field_0_0 : 4;
+ u8 field_0_1 : 4;
+ u8 field_1;
+ u8 magic;
+ u8 field_3_0 : 4;
+ u8 field_3_1 : 4;
+ void *bytes;
+ u8 **byteArrays;
+ struct SpriteTemplate *templates;
+ struct SpriteFrameImage *frameImages;
+};
+
#define BATTLE_STATS_NO 8
struct BattlePokemon
@@ -424,17 +465,24 @@ extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
+extern struct SpriteTemplate gUnknown_0202499C;
+extern struct PokemonStorage* gPokemonStoragePtr;
+
+extern const struct BattleMove gBattleMoves[];
+extern const u8 gFacilityClassToPicIndex[];
+extern const u8 gFacilityClassToTrainerClass[];
extern const struct BaseStats gBaseStats[];
extern const u8 *const gItemEffectTable[];
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
-extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
-
-u8 CountAliveMonsInBattle(u8 caseId);
-#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
-#define BATTLE_ALIVE_ATK_SIDE 1
-#define BATTLE_ALIVE_DEF_SIDE 2
+extern const u8 gUnknown_08329D22[];
+extern const u8 gUnknown_08329D26[];
+extern const u8 gUnknown_08329D2A[];
+extern const u8 gStatStageRatios[][2];
+extern const u16 gUnknown_08329D54[];
+extern const struct SpriteTemplate gUnknown_08329D98[];
+extern const struct CompressedSpritePalette gMonPaletteTable[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
@@ -448,26 +496,45 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src);
+void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50);
+void sub_8068528(struct Pokemon *mon, const struct UnknownPokemonStruct2 *src, u8 monId);
+void CreateMonWithEVSpreadPersonalityOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
+void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
+void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
+bool8 sub_80688F8(u8 caseId, u8 battlerId);
+void SetDeoxysStats(void);
+u16 sub_8068B48(void);
+u16 sub_8068BB0(void);
+void CreateObedientEnemyMon(void);
void CalculateMonStats(struct Pokemon *mon);
+void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
-void MonRestorePP(struct Pokemon *mon);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
void GiveMonInitialMoveset(struct Pokemon *mon);
void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
+
+u8 CountAliveMonsInBattle(u8 caseId);
+#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
+#define BATTLE_ALIVE_ATK_SIDE 1
+#define BATTLE_ALIVE_DEF_SIDE 2
+u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void EncryptBoxMon(struct BoxPokemon *boxMon);
-void DecryptBoxMon(struct BoxPokemon *boxMon);
+void sub_806A068(u16 species, u8 battlerPosition);
+void sub_806A12C(u16 trainerSpriteId, u8 battlerPosition);
+void sub_806A1C0(u16 arg0, u8 battlerPosition);
// These are full type signatures for GetMonData() and GetBoxMonData(),
// but they are not used since some code erroneously omits the third arg.
@@ -476,93 +543,105 @@ void DecryptBoxMon(struct BoxPokemon *boxMon);
u32 GetMonData();
u32 GetBoxMonData();
-void SetMonData(struct Pokemon *mon, s32 field, const void *data);
-void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data);
+void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg);
+void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg);
void CopyMon(void *dest, void *src, size_t size);
u8 GiveMonToPlayer(struct Pokemon *mon);
-u8 SendMonToPC(struct Pokemon *mon);
+u8 SendMonToPC(struct Pokemon* mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
-
+u8 GetMonsStateToDoubles(void);
+u8 GetMonsStateToDoubles_2(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
-u8 GetSecretBaseTrainerNameIndex(void);
+u8 GetSecretBaseTrainerClass(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
bool8 IsPokemonStorageFull(void);
void GetSpeciesName(u8 *name, u16 species);
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
-void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex);
-
+void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex);
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
+bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
+u8 *sub_806CF78(u16 itemId);
u8 GetNature(struct Pokemon *mon);
u8 GetNatureFromPersonality(u32 personality);
-
-u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex);
-
-void MonRestorePP(struct Pokemon *);
-void BoxMonRestorePP(struct BoxPokemon *);
-
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+u16 HoennPokedexNumToSpecies(u16 hoennNum);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
-u16 NationalToHoennOrder(u16);
-u16 SpeciesToNationalPokedexNum(u16);
-u16 HoennToNationalOrder(u16);
+u16 NationalToHoennOrder(u16 nationalNum);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u16 SpeciesToHoennPokedexNum(u16 species);
+u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
-void DrawSpindaSpots(u16, u32, u8 *, u8);
-void AdjustFriendship(struct Pokemon *, u8);
-u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
-void UpdatePartyPokerusTime(u16);
-u32 CanMonLearnTMHM(struct Pokemon *, u8);
-u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
-u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
-void ClearBattleMonForms(void);
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
-const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
-bool8 IsOtherTrainer(u32, u8 *);
-void SetWildMonHeldItem(void);
-u16 GetMonEVCount(struct Pokemon *);
-
-const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon);
-const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
-bool32 IsHMMove2(u16 move);
-bool8 IsPokeSpriteNotFlipped(u16 species);
-bool8 IsMonShiny(struct Pokemon *mon);
-bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
-
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
-bool8 IsTradedMon(struct Pokemon *mon);
-void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
-s32 GetBattlerMultiplayerId(u16 a1);
+void sub_806D544(u16 species, u32 personality, u8 *dest);
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+bool8 sub_806D7EC(void);
bool16 sub_806D82C(u8 id);
-u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
-void sub_8068AA4(void); // sets stats for deoxys
-bool8 HasTwoFramesAnimation(u16 species);
-u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+s32 GetBattlerMultiplayerId(u16 a1);
+u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
+u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
+void AdjustFriendship(struct Pokemon *mon, u8 event);
+void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+u16 GetMonEVCount(struct Pokemon *mon);
void RandomlyGivePartyPokerus(struct Pokemon *party);
u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
void UpdatePartyPokerusTime(u16 days);
void PartySpreadPokerus(struct Pokemon *party);
-s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2);
-s8 GetFlavorRelationByPersonality(u32 personality, u8 a2);
-u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
-u8 GetDefaultMoveTarget(u8 atkBank);
-u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
-void sub_806A1C0(u16 arg0, u8 bankIdentity);
-void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
-u8 GetSecretBaseTrainerPicIndex(void);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
-void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
+u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm);
+u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
+u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
-u8 GetMonsStateToDoubles_2(void);
-
-#include "sprite.h"
-
-void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
+u16 SpeciesToPokedexNum(u16 species);
+bool32 sub_806E3F8(u16 species);
+void ClearBattleMonForms(void);
+u16 GetBattleBGM(void);
+void PlayBattleBGM(void);
+void PlayMapChosenOrBattleBGM(u16 songId);
+void sub_806E694(u16 songId);
+const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
+const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
+const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
+const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
+bool32 IsHMMove2(u16 move);
+bool8 IsMonSpriteNotFlipped(u16 species);
+s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor);
+s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
+bool8 IsTradedMon(struct Pokemon *mon);
+bool8 IsOtherTrainer(u32 otId, u8 *otName);
+void MonRestorePP(struct Pokemon *mon);
+void BoxMonRestorePP(struct BoxPokemon *boxMon);
+void sub_806E994(void);
+void SetWildMonHeldItem(void);
+bool8 IsMonShiny(struct Pokemon *mon);
+bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
+const u8 *GetTrainerPartnerName(void);
void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneFrame);
+void sub_806EE98(void);
void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
+u8 sub_806EF08(u8 arg0);
+u8 sub_806EF84(u8 arg0, u8 arg1);
+u16 sub_806EFF0(u16 arg0);
+u16 FacilityClassToPicIndex(u16 facilityClass);
+u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
+void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
+const u8 *GetTrainerClassNameFromId(u16 trainerId);
+const u8 *GetTrainerNameFromId(u16 trainerId);
+bool8 HasTwoFramesAnimation(u16 species);
+bool8 sub_806F104(void);
+struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1);
+void sub_806F47C(u8 id);
+u8 *sub_806F4F8(u8 id, u8 arg1);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
index 82dfacf48..263839b19 100644
--- a/include/pokemon_3.h
+++ b/include/pokemon_3.h
@@ -1,6 +1,7 @@
#ifndef GUARD_POKEMON_3_H
#define GUARD_POKEMON_3_H
+u16 sub_806EFF0(u16);
const u8* GetTrainerClassNameFromId(u16 trainerId);
const u8* GetTrainerNameFromId(u16 trainerId);
void PlayMapChosenOrBattleBGM(u16 song);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index e7fc81ce4..f1c8a3e61 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -1,15 +1,20 @@
#ifndef GUARD_POKEMON_ICON_H
#define GUARD_POKEMON_ICON_H
+const u8 *GetMonIconTiles(u16 species, bool32);
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
u16 GetUnownLetterByPersonality(u32 personality);
u16 sub_80D2E84(u16 speciesId);
-void sub_80D2F04(void);
-void sub_80D2F68(u16 iconId);
-u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
-void sub_80D2FF0(u16 iconId);
+void LoadMonIconPalettes(void);
+void LoadMonIconPalette(u16 species);
+void FreeMonIconPalettes(void);
+u8 sub_80D2D78(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra);
+void FreeMonIconPalette(u16 species);
void sub_80D2EF8(struct Sprite *sprite);
-u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, int a7);
+u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra);
+u8 UpdateMonIconFrame(struct Sprite *sprite);
+void LoadMonIconPalette(u16 species);
+void sub_80D328C(struct Sprite *sprite);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h
deleted file mode 100644
index 505cc0f25..000000000
--- a/include/pokemon_item_effects.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef GUARD_POKEMON_ITEM_EFFECTS
-#define GUARD_POKEMON_ITEM_EFFECTS
-
-#include "pokemon.h"
-
-// TODO once pokemon item effects is decompiled
-/*
-struct PokemonItemEffect
-{
- //field 0
- u8 xAtk : 4; // x1, x2, x4, x8 = xF
- u8 field_0_x10 : 1; // x10
- u8 critRatioUp : 1; // x20
- u8 field_0_x40 : 1; // x40
- u8 cureInfatuation : 1; // x80
-
- /*field 1
- u8 xSpeed : 4; // x1, x2, x4, x8 = xF
- u8 xDefense : 4; // x10, x20, x40, xF0
-
- /*field 2
- u8 xSpAtk : 4; // x1, x2, x4, x8 = xF
- u8 xAccuracy : 4; // x10, x20, x40, xF0
-
- /*field 3
- u8 cureConfusion : 1; // x1
- u8 cureParalysis : 1; // x2
- u8 cureFreeze : 1; // x4
- u8 cureBurn : 1; // x8
- u8 curePoison : 1; // x10
- u8 cureSleep : 1; // x20
- u8 field_3_x40 : 1; // x40
- u8 cantLowerStats : 1; // x80
-
- /*field 4
- u8 hpEv : 1; // x1
- u8 attackEv : 1; // x2
- u8 healHp : 1; // x4
- u8 field_4_x8 : 1; // x8
- u8 field_4_x10 : 1; // x10
- u8 ppUp : 1; // x20
- u8 levelUp : 1; // x40
- u8 evolutionStone : 1; // x80
-
- /*field 5
- u8 defEv: 1; // x1
- u8 speedEv : 1; // x2
- u8 spDefEv : 1; // x4
- u8 spAtkEv : 1; // x8
- u8 ppMax : 1; // x10
- u8 field_5_x20 : 1; // x20
- u8 field_5_x40 : 1; // x40
- u8 field_5_x80 : 1; // x80
-
- /*field 6
- u8 value;
-};
-*/
-
-bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5);
-
-#endif // GUARD_POKEMON_ITEM_EFFECTS
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
new file mode 100755
index 000000000..adadcea03
--- /dev/null
+++ b/include/pokemon_summary_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
+#define GUARD_POKEMON_SUMMARY_SCREEN_H
+
+void sub_81C4F98(u8, void(*)(void));
+
+#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/pokenav.h b/include/pokenav.h
index ebe3b325c..42affc938 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -1,5 +1,6 @@
#ifndef GUARD_POKENAV_H
#define GUARD_POKENAV_H
+#include "player_pc.h"
bool8 sub_81D5C18(void);
bool8 sub_81D20BC(void *arg0);
@@ -13,5 +14,13 @@ void sub_81D3480(void *arg0, u8 arg1);
void sub_81D2754(void *arg0, void *arg1);
void sub_81D1F84(void *arg0, void *arg1, void *arg2);
const u8 *sub_81D62AC(void);
+u8 sub_81D1C84(u8);
+u8 sub_81D1DC0(struct PlayerPCItemPageStruct *);
+void sub_81D1E90(struct PlayerPCItemPageStruct *);
+void sub_81D1EC0(void);
+void sub_81D1D04(u8);
+bool8 sub_81D1C44(u8);
+void sub_81D5FB4(u16*);
+
#endif //GUARD_POKENAV_H
diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h
new file mode 100644
index 000000000..12fd186ec
--- /dev/null
+++ b/include/reset_save_heap.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_RESET_SAVE_HEAP_H
+#define GUARD_RESET_SAVE_HEAP_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_81700F8(void);
+
+#endif //GUARD_RESET_SAVE_HEAP_H
diff --git a/include/rom6.h b/include/rom6.h
index f91b34b4a..058504fe2 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -11,6 +11,8 @@ void UpdateBirchState(u16 days);
void UpdateFrontierManiac(u16 days);
void UpdateFrontierGambler(u16 days);
void SetShoalItemFlag(u16 days);
+
+bool8 npc_before_player_of_type(u8);
u8 oei_task_add(void);
#endif //GUARD_ROM6_H
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
new file mode 100644
index 000000000..fd8c35f56
--- /dev/null
+++ b/include/rom_8011DC0.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_rom_8011DC0_H
+#define GUARD_rom_8011DC0_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_8018438(void);
+
+#endif //GUARD_rom_8011DC0_H
diff --git a/include/rotating_gate.h b/include/rotating_gate.h
new file mode 100644
index 000000000..50a838953
--- /dev/null
+++ b/include/rotating_gate.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_ROTATING_GATE_H
+#define GUARD_ROTATING_GATE_H
+
+void RotatingGatePuzzleCameraUpdate(s16, s16);
+void RotatingGate_InitPuzzleAndGraphics();
+u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16);
+
+#endif // GUARD_ROTATING_GATE_H
diff --git a/include/roulette_util.h b/include/roulette_util.h
new file mode 100644
index 000000000..f59c4e44c
--- /dev/null
+++ b/include/roulette_util.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_ROULETTE_UTIL_H
+#define GUARD_ROULETTE_UTIL_H
+
+// structures
+struct InnerStruct203CF18
+{
+ u8 filler[0xC4];
+};
+
+void sub_8151B68(struct InnerStruct203CF18 *, const u8*);
+void sub_8151B3C(struct InnerStruct203CF18 *);
+void sub_8151CA8(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151C50(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151D28(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151E50(struct InnerStruct203CF18 *);
+
+#endif // GUARD_ROULETTE_UTIL_H
diff --git a/include/save.h b/include/save.h
index df03c4183..7b271129a 100644
--- a/include/save.h
+++ b/include/save.h
@@ -47,19 +47,19 @@ enum
// Do save types
enum
{
- NORMAL_SAVE,
- LINK_SAVE,
- //EREADER_SAVE, // depreciated in Emerald
- LINK2_SAVE, // unknown 2nd link save
- HOF_SAVE,
- DIFFERENT_FILE_SAVE,
- HOF_DELETE_SAVE // unused
+ SAVE_NORMAL,
+ SAVE_LINK,
+ //EREADER_SAVE, // deprecated in Emerald
+ SAVE_LINK2, // unknown 2nd link save
+ SAVE_HALL_OF_FAME,
+ SAVE_OVERWRITE_DIFFERENT_FILE,
+ SAVE_HALL_OF_FAME_ERASE_BEFORE // unused
};
#define SECTION_ID_RECORDED_BATTLE 31
void ClearSaveData(void);
-void ResetSaveCounters(void);
+void Save_ResetSaveCounters(void);
bool32 SetDamagedSectorBits(u8 op, u8 bit);
u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location);
u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location);
@@ -88,7 +88,7 @@ u8 sub_81533E0(void);
u8 sub_8153408(void);
u8 sub_8153430(void);
bool8 sub_8153474(void);
-u8 sub_81534D0(u8 a1);
+u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void);
u8 sub_81534D0(u8);
u8 sub_8153430(void);
diff --git a/include/script_menu.h b/include/script_menu.h
index 717eda041..0555d0f78 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -9,5 +9,8 @@ bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
+u8 convert_pixel_width_to_tile_width(s32);
+u8 CreateWindowFromRect(u8, u8, u8, u8);
+void sub_80E2A78(u8);
#endif //GUARD_SCRIPT_MENU_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 91e7083b3..ae3049fbd 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -12,5 +12,8 @@ void sub_80EB18C(struct SecretBaseRecord *dest);
void sub_80E9914(void);
u8 *GetSecretBaseMapName(u8 *dest);
const u8 *GetSecretBaseTrainerLoseText(void);
+void sub_80E8EE0(struct MapEvents const *events);
+void sub_80E9238(u8 flagIn);
+bool8 CurrentMapIsSecretBase(void);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/shop.h b/include/shop.h
index d3e86408c..9b14a672e 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -6,5 +6,6 @@ extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
+void CB2_ExitSellMenu(void);
#endif // GUARD_SHOP_H
diff --git a/include/start_menu.h b/include/start_menu.h
index 6c7cb3237..5551b149d 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -1,6 +1,16 @@
#ifndef GUARD_START_MENU_H
#define GUARD_START_MENU_H
+extern bool8 (*gMenuCallback)(void); // Defined in sym_common.txt
+
+void sub_809FA18(void);
+void sub_809FA34(u8 taskId);
+void ShowStartMenu(void);
+void sub_809FDD4(void);
+void SaveGame(void);
+void sub_80A0514(void);
+void sub_80A08CC(void);
+void HideStartMenu(void);
void AppendToList(u8* list, u8* pos, u8 newEntry);
#endif // GUARD_START_MENU_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
index 61bc17735..18af478aa 100644
--- a/include/starter_choose.h
+++ b/include/starter_choose.h
@@ -1,6 +1,11 @@
#ifndef GUARD_STARTER_CHOOSE_H
#define GUARD_STARTER_CHOOSE_H
+extern const u16 gBirchBagGrassPal[2][16];
+extern const u8 gBirchBagTilemap[];
+extern const u8 gBirchGrassTilemap[];
+extern const u8 gBirchHelpGfx[];
+
u16 GetStarterPokemon(u16 chosenStarterId);
void CB2_ChooseStarter(void);
diff --git a/include/strings.h b/include/strings.h
index 9c7f9e4f0..a86ab25fe 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -74,6 +74,10 @@ extern const u8 gText_DecorationWillBeDiscarded[];
extern const u8 gText_CantThrowAwayInUse[];
extern const u8 gText_DecorationThrownAway[];
+extern const u8 gText_PokeBalls[];
+extern const u8 gText_Berries[];
+extern const u8 gText_Berry[];
+
extern const u8 gText_Desk[];
extern const u8 gText_Chair[];
extern const u8 gText_Plant[];
@@ -101,6 +105,11 @@ extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
extern const u8 gUnknown_085EA79D[];
+extern const u8 gText_CommErrorEllipsis[];
+extern const u8 gText_MoveCloserToLinkPartner[];
+extern const u8 gText_CommErrorCheckConnections[];
+extern const u8 gText_ABtnTitleScreen[];
+extern const u8 gText_ABtnRegistrationCounter[];
extern const u8 gText_MixingRecords[];
extern const u8 gText_RecordMixingComplete[];
extern const u8 gText_EmptyString2[];
@@ -109,9 +118,6 @@ extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
-extern const u8 gText_Draw[];
-extern const u8 gText_Loss[];
-extern const u8 gText_Win[];
extern const u8 gText_Var1AteTheVar2[];
extern const u8 gText_Var1HappilyAteVar2[];
@@ -136,6 +142,14 @@ extern const u8 gMenuText_Use[];
extern const u8 gMenuText_Toss[];
extern const u8 gMenuText_Give[];
extern const u8 gMenuText_Give2[];
+extern const u8 gMenuText_Register[];
+extern const u8 gMenuText_Check[];
+extern const u8 gMenuText_Walk[];
+extern const u8 gMenuText_Deselect[];
+extern const u8 gMenuText_CheckTag[];
+extern const u8 gMenuText_Confirm[];
+extern const u8 gMenuText_Show[];
+extern const u8 gMenuText_Give2[];
extern const u8 gText_Cancel2[];
@@ -189,6 +203,23 @@ extern const u8 gText_Peak[];
extern const u8 gText_SafariBallStock[];
extern const u8 gText_BattlePyramidFloor[];
+// save menu texts
+extern const u8 gText_ConfirmSave[];
+extern const u8 gText_DifferentSaveFile[];
+extern const u8 gText_AlreadySavedFile[];
+extern const u8 gText_SavingDontTurnOff[];
+extern const u8 gText_PlayerSavedGame[];
+extern const u8 gText_SaveError[];
+extern const u8 gText_SavingDontTurnOffPower[];
+extern const u8 gText_SavingPlayer[];
+extern const u8 gText_SavingBadges[];
+extern const u8 gText_SavingPokedex[];
+extern const u8 gText_SavingTime[];
+
+// Battle pyramid menu texts
+extern const u8 gText_BattlePyramidConfirmRest[];
+extern const u8 gText_BattlePyramidConfirmRetire[];
+
// option menu texts
extern const u8 gText_TextSpeedSlow[];
extern const u8 gText_TextSpeedMid[];
@@ -220,6 +251,76 @@ extern const u8 gText_FemaleSymbol[];
extern const u8 gText_SelectorArrow3[];
extern const u8 gText_YesNo[];
+// main menu/birch speech text
+extern const u8 gText_SaveFileErased[];
+extern const u8 gText_SaveFileCorrupted[];
+extern const u8 gJPText_No1MSubCircuit[];
+extern const u8 gText_BatteryRunDry[];
+extern const u8 gText_MainMenuNewGame[];
+extern const u8 gText_MainMenuOption[];
+extern const u8 gText_MainMenuContinue[];
+extern const u8 gText_MainMenuMysteryGift2[];
+extern const u8 gText_MainMenuMysteryEvents[];
+extern const u8 gText_MainMenuMysteryGift[];
+extern const u8 gText_WirelessNotConnected[];
+extern const u8 gText_MysteryGiftCantUse[];
+extern const u8 gText_MysteryEventsCantUse[];
+extern const u8 gText_Birch_Welcome[];
+extern const u8 gText_ThisIsAPokemon[];
+extern const u8 gText_Birch_MainSpeech[];
+extern const u8 gText_Birch_AndYouAre[];
+extern const u8 gText_Birch_BoyOrGirl[];
+extern const u8 gText_Birch_WhatsYourName[];
+extern const u8 gText_Birch_SoItsPlayer[];
+extern const u8 gText_Birch_YourePlayer[];
+extern const u8 gText_Birch_AreYouReady[];
+extern const u8 gText_ContinueMenuPlayer[];
+extern const u8 gText_ContinueMenuTime[];
+extern const u8 gText_ContinueMenuPokedex[];
+extern const u8 gText_ContinueMenuBadges[];
+extern const u8 gText_BirchBoy[];
+extern const u8 gText_BirchGirl[];
+extern const u8 gText_DefaultNameStu[];
+extern const u8 gText_DefaultNameMilton[];
+extern const u8 gText_DefaultNameTom[];
+extern const u8 gText_DefaultNameKenny[];
+extern const u8 gText_DefaultNameReid[];
+extern const u8 gText_DefaultNameJude[];
+extern const u8 gText_DefaultNameJaxson[];
+extern const u8 gText_DefaultNameEaston[];
+extern const u8 gText_DefaultNameWalker[];
+extern const u8 gText_DefaultNameTeru[];
+extern const u8 gText_DefaultNameJohnny[];
+extern const u8 gText_DefaultNameBrett[];
+extern const u8 gText_DefaultNameSeth[];
+extern const u8 gText_DefaultNameTerry[];
+extern const u8 gText_DefaultNameCasey[];
+extern const u8 gText_DefaultNameDarren[];
+extern const u8 gText_DefaultNameLandon[];
+extern const u8 gText_DefaultNameCollin[];
+extern const u8 gText_DefaultNameStanley[];
+extern const u8 gText_DefaultNameQuincy[];
+extern const u8 gText_DefaultNameKimmy[];
+extern const u8 gText_DefaultNameTiara[];
+extern const u8 gText_DefaultNameBella[];
+extern const u8 gText_DefaultNameJayla[];
+extern const u8 gText_DefaultNameAllie[];
+extern const u8 gText_DefaultNameLianna[];
+extern const u8 gText_DefaultNameSara[];
+extern const u8 gText_DefaultNameMonica[];
+extern const u8 gText_DefaultNameCamila[];
+extern const u8 gText_DefaultNameAubree[];
+extern const u8 gText_DefaultNameRuthie[];
+extern const u8 gText_DefaultNameHazel[];
+extern const u8 gText_DefaultNameNadine[];
+extern const u8 gText_DefaultNameTanja[];
+extern const u8 gText_DefaultNameYasmin[];
+extern const u8 gText_DefaultNameNicola[];
+extern const u8 gText_DefaultNameLillie[];
+extern const u8 gText_DefaultNameTerra[];
+extern const u8 gText_DefaultNameLucy[];
+extern const u8 gText_DefaultNameHalie[];
+
// mystery event menu text
extern const u8 gText_EventSafelyLoaded[];
extern const u8 gText_LoadErrorEndingSession[];
@@ -241,4 +342,108 @@ extern const u8 gText_Var1DotVar2[];
extern const u8 gText_ThreeMarks[];
extern const u8 gText_FirmSlash[];
+// item menu screen text
+extern const u8 gText_CloseBag[];
+extern const u8 gText_ClearTo11Var1Clear5Var2[];
+extern const u8 gText_UnkF908Var1Clear7Var2[];
+extern const u8 gText_xVar1[];
+extern const u8 gText_ReturnToVar1[];
+extern const u8 gText_SelectorArrow2[];
+extern const u8 gText_MoveVar1Where[];
+extern const u8 gText_Var1IsSelected[];
+extern const u8 gText_TossHowManyVar1s[];
+extern const u8 gText_ConfirmTossItems[];
+extern const u8 gText_ThrewAwayVar2Var1s[];
+extern const u8 gText_CantWriteMail[];
+extern const u8 gText_NoPokemon[];
+extern const u8 gText_Var1CantBeHeld[];
+extern const u8 gText_Var1CantBeHeldHere[];
+extern const u8 gText_CantBuyKeyItem[];
+extern const u8 gText_HowManyToSell[];
+extern const u8 gText_ICanPayVar1[];
+extern const u8 gText_TurnedOverVar1ForVar2[];
+extern const u8 gText_DepositHowManyVar1[];
+extern const u8 gText_CantStoreImportantItems[];
+extern const u8 gText_DepositedVar2Var1s[];
+extern const u8 gText_NoRoomForItems[];
+extern const u8 gText_ThreeDashes[];
+
+// party menu text
+extern const u8 gText_PkmnHPRestoredByVar2[];
+extern const u8 gText_CantBeUsedOnPkmn[];
+
+// birch dex rating text
+extern const u8 gBirchDexRatingText_LessThan10[];
+extern const u8 gBirchDexRatingText_LessThan20[];
+extern const u8 gBirchDexRatingText_LessThan30[];
+extern const u8 gBirchDexRatingText_LessThan40[];
+extern const u8 gBirchDexRatingText_LessThan50[];
+extern const u8 gBirchDexRatingText_LessThan60[];
+extern const u8 gBirchDexRatingText_LessThan70[];
+extern const u8 gBirchDexRatingText_LessThan80[];
+extern const u8 gBirchDexRatingText_LessThan90[];
+extern const u8 gBirchDexRatingText_LessThan100[];
+extern const u8 gBirchDexRatingText_LessThan110[];
+extern const u8 gBirchDexRatingText_LessThan120[];
+extern const u8 gBirchDexRatingText_LessThan130[];
+extern const u8 gBirchDexRatingText_LessThan140[];
+extern const u8 gBirchDexRatingText_LessThan150[];
+extern const u8 gBirchDexRatingText_LessThan160[];
+extern const u8 gBirchDexRatingText_LessThan170[];
+extern const u8 gBirchDexRatingText_LessThan180[];
+extern const u8 gBirchDexRatingText_LessThan190[];
+extern const u8 gBirchDexRatingText_LessThan200[];
+extern const u8 gBirchDexRatingText_DexCompleted[];
+
+// player pc text
+extern const u8 gText_WhatWouldYouLike[];
+extern const u8 gText_NoMailHere[];
+
+extern const u8 gText_TakeOutItemsFromPC[];
+extern const u8 gText_StoreItemsInPC[];
+extern const u8 gText_ThrowAwayItemsInPC[];
+extern const u8 gText_GoBackPrevMenu[];
+
+extern const u8 gText_ItemStorage[];
+extern const u8 gText_Mailbox[];
+extern const u8 gText_Decoration[];
+extern const u8 gText_TurnOff[];
+
+extern const u8 gText_WithdrawItem[];
+extern const u8 gText_DepositItem[];
+extern const u8 gText_TossItem[];
+extern const u8 gText_Cancel[];
+
+extern const u8 gText_Read[];
+extern const u8 gText_MoveToBag[];
+extern const u8 gText_Give2[];
+extern const u8 gText_Cancel2[];
+
+extern const u8 gText_NoItems[];
+extern const u8 gText_WhatToDoWithVar1sMail[];
+extern const u8 gText_MessageWillBeLost[];
+extern const u8 gText_BagIsFull[];
+
+extern const u8 gText_MailToBagMessageErased[];
+extern const u8 gText_GoBackPrevMenu[];
+extern const u8 gText_WithdrawHowManyItems[];
+extern const u8 gText_WithdrawXItems[];
+extern const u8 gText_TossHowManyVar1s[];
+extern const u8 gText_ThrewAwayVar2Var1s[];
+extern const u8 gText_NoRoomInBag[];
+extern const u8 gText_TooImportantToToss[];
+extern const u8 gText_ConfirmTossItems[];
+extern const u8 gText_MoveVar1Where[];
+
+extern const u8 gText_Friend[];
+extern const u8 gText_Tristan[];
+extern const u8 gText_Philip[];
+extern const u8 gText_Dennis[];
+extern const u8 gText_Roberto[];
+extern const u8 gText_FiveMarks[];
+
+extern const u8 gText_TotalRecordWLD[];
+extern const u8 gText_PlayersBattleResults[];
+extern const u8 gText_WinLoseDraw[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index e073c3762..2566b51b7 100644
--- a/include/text.h
+++ b/include/text.h
@@ -82,6 +82,12 @@
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GREY 0x2
+// 0x3
+#define TEXT_COLOR_RED 0x4
+// 0x5
+#define TEXT_COLOR_GREEN 0x6
+// 0x7
+#define TEXT_COLOR_BLUE 0x8
// battle placeholders are located in battle_message.h
@@ -208,6 +214,7 @@ void DecompressGlyphTile(const u16 *src, u16 *dest);
u8 GetLastTextColor(u8 colorType);
void CopyGlyphToWindow(struct TextPrinter *x);
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
+u8 GetMenuCursorDimensionByFont(u8, u8);
u16 Font0Func(struct TextPrinter *textPrinter);
u16 Font1Func(struct TextPrinter *textPrinter);
diff --git a/include/text_window.h b/include/text_window.h
index e6a753fcb..2ac13fab7 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -5,11 +5,11 @@
struct TilesPal
{
- const u32 *tiles;
+ const u8 *tiles;
const u16 *pal;
};
-extern const u32 gTextWindowFrame1_Gfx[];
+extern const u8 gTextWindowFrame1_Gfx[];
extern const u16 gTextWindowFrame1_Pal[];
const struct TilesPal* GetWindowFrameTilesPal(u8 id);
diff --git a/include/trade.h b/include/trade.h
new file mode 100644
index 000000000..15438ff3f
--- /dev/null
+++ b/include/trade.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_TRADE_H
+#define GUARD_TRADE_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+int sub_807A728(void);
+
+#endif //GUARD_TRADE_H
diff --git a/include/trader.h b/include/trader.h
index 71fd1f7c2..c07ea81bd 100644
--- a/include/trader.h
+++ b/include/trader.h
@@ -7,5 +7,7 @@
void sub_8133DA0(u8 taskId);
void sub_8133E1C(u8 taskId);
+void TraderSetup(void);
+void Trader_ResetFlag(void);
#endif //GUARD_TRADER_H
diff --git a/include/trainer_card.h b/include/trainer_card.h
new file mode 100644
index 000000000..5cb93dba0
--- /dev/null
+++ b/include/trainer_card.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_TRAINER_CARD_H
+#define GUARD_TRAINER_CARD_H
+
+struct TrainerCard
+{
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 var_3;
+ /*0x04*/ bool8 var_4;
+ /*0x05*/ u8 var_5;
+ /*0x06*/ u16 firstHallOfFameA;
+ /*0x08*/ u16 firstHallOfFameB;
+ /*0x0A*/ u16 firstHallOfFameC;
+ /*0x0C*/ u16 pokedexSeen;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerLosses;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x22*/ u16 var_22;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[8];
+ /*0x38*/ u8 emeraldAddedUnknownFields[0x64-0x38];
+};
+
+extern struct TrainerCard gTrainerCards[4];
+
+#endif // GUARD_TRAINER_CARD_H
diff --git a/include/tv.h b/include/tv.h
index e0f3e2b0d..1b3423275 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -4,19 +4,49 @@
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
-void PutPokemonTodayCaughtOnAir(void);
+void sub_80EE184(void);
+void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
+void sub_80EE8C8(u16 winStreak, u8 facility);
+void DoTVShow(void);
+void DoTVShowInSearchOfTrainers(void);
+void sub_80EDCE8(void);
+void sub_80EE2CC(void);
+void sub_80EE72C(void);
+void sub_80EED10(void);
+void sub_80EED34(void);
+void sub_80EED60(u16 delta);
+void sub_80F01B8(void);
+void sub_80F01E8(void *src, u32 size, u8 masterIdx);
+void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
+void sub_80F14F8(TVShow *shows);
+size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
-void TV_PutSecretBaseVisitOnTheAir(void);
-void sub_80EE184(void);
+void sub_80EDE70(u16 nCoinsSpent);
+void sub_80EDE84(u16 nCoinsSpent);
+void sub_80EDD78(u16 nCoinsPaidOut);
void sub_80EEA70(void);
+void sub_80EDB44(void);
+void sub_80EDC60(const u16 *words);
+void sub_80EDA80(void);
+void sub_80F0C7C(void *src, u32 size, u8 masterIdx);
+void sub_80F0BB8(void);
+void sub_80ED950(bool8 flag);
+void sub_80EEC80(void);
+void sub_80EECA4(void);
+void sub_80EECC8(void);
+void sub_80EECEC(void);
+void sub_80F1208(TVShow *shows);
+void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
-void sub_80F1208(TVShow *dest);
-void sub_80F0BB8(void);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
+void PutPokemonTodayCaughtOnAir(void);
+void TV_PutSecretBaseVisitOnTheAir(void);
+void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
+void UpdateTVScreensOnMap(int, int);
#endif //GUARD_TV_H
diff --git a/include/window.h b/include/window.h
index 07c642a09..1a6ff3808 100644
--- a/include/window.h
+++ b/include/window.h
@@ -68,5 +68,11 @@ void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 src
void CopyWindowToVram8Bit(u8 windowId, u8 mode);
extern struct Window gWindows[];
+extern void* gUnknown_03002F70[];
+extern u32 filler_03002F58;
+extern u32 filler_03002F5C;
+extern u32 filler_03002F64;
+
+extern u8 gUnknown_03002F60;
#endif // GUARD_WINDOW_H