summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/constants/items.h65
-rw-r--r--include/constants/pokemon.h18
-rw-r--r--include/constants/script_pokemon_util.h6
-rw-r--r--include/daycare.h46
-rw-r--r--include/itemtool.h139
-rw-r--r--include/nutdata.h30
-rw-r--r--include/options.h2
-rw-r--r--include/player_data.h51
-rw-r--r--include/scrcmd.h6
-rw-r--r--include/script_pokemon_util.h17
-rw-r--r--include/unk_020254B8.h23
-rw-r--r--include/use_item_on_mon.h17
12 files changed, 329 insertions, 91 deletions
diff --git a/include/constants/items.h b/include/constants/items.h
index f1649cf3..5844c001 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -19,6 +19,71 @@
#define NUM_BAG_BALLS 15
#define NUM_BAG_BATTLE_ITEMS 30
+#define ITEMATTR_PRICE 0
+#define ITEMATTR_HOLD_EFFECT 1
+#define ITEMATTR_HOLD_EFFECT_PARAM 2
+#define ITEMATTR_PREVENT_TOSS 3
+#define ITEMATTR_SELECTABLE 4
+#define ITEMATTR_POCKET 5
+#define ITEMATTR_UNKA 6
+#define ITEMATTR_UNKB 7
+#define ITEMATTR_UNK4 8
+#define ITEMATTR_UNK5 9
+#define ITEMATTR_UNK6 10
+#define ITEMATTR_NATURAL_GIFT_POWER 11
+#define ITEMATTR_UNK8_0 12
+#define ITEMATTR_UNK8_B 13
+#define ITEMATTR_PARTY_USE 14
+#define ITEMATTR_SLP_HEAL 15
+#define ITEMATTR_PSN_HEAL 16
+#define ITEMATTR_BRN_HEAL 17
+#define ITEMATTR_FRZ_HEAL 18
+#define ITEMATTR_PRZ_HEAL 19
+#define ITEMATTR_CFS_HEAL 20
+#define ITEMATTR_INF_HEAL 21
+#define ITEMATTR_GUARD_SPEC 22
+#define ITEMATTR_REVIVE 23
+#define ITEMATTR_REVIVE_ALL 24
+#define ITEMATTR_LEVEL_UP 25
+#define ITEMATTR_EVOLVE 26
+#define ITEMATTR_ATK_STAGES 27
+#define ITEMATTR_DEF_STAGES 28
+#define ITEMATTR_SPATK_STAGES 29
+#define ITEMATTR_SPDEF_STAGES 30
+#define ITEMATTR_SPEED_STAGES 31
+#define ITEMATTR_ACCURACY_STAGES 32
+#define ITEMATTR_CRITRATE_STAGES 33
+#define ITEMATTR_PP_UP 34
+#define ITEMATTR_PP_MAX 35
+#define ITEMATTR_PP_RESTORE 36
+#define ITEMATTR_PP_RESTORE_ALL 37
+#define ITEMATTR_HP_RESTORE 38
+#define ITEMATTR_HP_EV_UP 39
+#define ITEMATTR_ATK_EV_UP 40
+#define ITEMATTR_DEF_EV_UP 41
+#define ITEMATTR_SPEED_EV_UP 42
+#define ITEMATTR_SPATK_EV_UP 43
+#define ITEMATTR_SPDEF_EV_UP 44
+#define ITEMATTR_FRIENDSHIP_MOD_LO 45
+#define ITEMATTR_FRIENDSHIP_MOD_MED 46
+#define ITEMATTR_FRIENDSHIP_MOD_HI 47
+#define ITEMATTR_HP_EV_UP_PARAM 48
+#define ITEMATTR_ATK_EV_UP_PARAM 49
+#define ITEMATTR_DEF_EV_UP_PARAM 50
+#define ITEMATTR_SPEED_EV_UP_PARAM 51
+#define ITEMATTR_SPATK_EV_UP_PARAM 52
+#define ITEMATTR_SPDEF_EV_UP_PARAM 53
+#define ITEMATTR_HP_RESTORE_PARAM 54
+#define ITEMATTR_PP_RESTORE_PARAM 55
+#define ITEMATTR_FRIENDSHIP_MOD_LO_PARAM 56
+#define ITEMATTR_FRIENDSHIP_MOD_MED_PARAM 57
+#define ITEMATTR_FRIENDSHIP_MOD_HI_PARAM 58
+
+#define PP_RESTORE_ALL 127
+#define HP_RESTORE_ALL 255
+#define HP_RESTORE_HALF 254
+#define HP_RESTORE_QTR 253
+
#define HOLD_EFFECT_NONE 0
#define HOLD_EFFECT_HP_RESTORE 1
#define HOLD_EFFECT_DIALGA_BOOST 2
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index a6acb188..123b144b 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -1,6 +1,11 @@
#ifndef POKEDIAMOND_CONSTANTS_POKEMON_H
#define POKEDIAMOND_CONSTANTS_POKEMON_H
+// Value and data limits
+#define MAX_LEVEL 100
+#define MON_MOVES 4
+#define MAX_EV 100
+#define MAX_EV_SUM 510
// Pokemon types
#define TYPE_NONE 255
@@ -51,6 +56,19 @@
#define EGG_GROUPS_PER_MON 2
+#define MON_STATUS_SLP_MASK 0x7
+#define MON_STATUS_SLP_SHIFT 0
+#define MON_STATUS_PSN_MASK 0x8
+#define MON_STATUS_PSN_SHIFT 3
+#define MON_STATUS_TOX_MASK 0x80
+#define MON_STATUS_TOX_SHIFT 7
+#define MON_STATUS_BRN_MASK 0x10
+#define MON_STATUS_BRN_SHIFT 4
+#define MON_STATUS_FRZ_MASK 0x20
+#define MON_STATUS_FRZ_SHIFT 5
+#define MON_STATUS_PRZ_MASK 0x40
+#define MON_STATUS_PRZ_SHIFT 6
+
// Pokemon natures
#define NATURE_HARDY 0
#define NATURE_LONELY 1
diff --git a/include/constants/script_pokemon_util.h b/include/constants/script_pokemon_util.h
index afd70eeb..4c7a01e6 100644
--- a/include/constants/script_pokemon_util.h
+++ b/include/constants/script_pokemon_util.h
@@ -1,8 +1,8 @@
-#ifndef POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
-#define POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+#ifndef POKEDIAMOND_CONSTANTS_SCRIPT_POKEMON_UTIL_H
+#define POKEDIAMOND_CONSTANTS_SCRIPT_POKEMON_UTIL_H
#define FLDPSN_NONE 0
#define FLDPSN_PSN 1
#define FLDPSN_HEAL 2
-#endif //POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+#endif //POKEDIAMOND_CONSTANTS_SCRIPT_POKEMON_UTIL_H
diff --git a/include/daycare.h b/include/daycare.h
new file mode 100644
index 00000000..d1026f76
--- /dev/null
+++ b/include/daycare.h
@@ -0,0 +1,46 @@
+#ifndef POKEDIAMOND_DAYCARE_H
+#define POKEDIAMOND_DAYCARE_H
+
+struct DayCareMail
+{
+ struct SealStruct seal;
+ u16 ot_name[OT_NAME_LENGTH + 1];
+ u16 nickname[POKEMON_NAME_LENGTH + 1];
+ u8 padding_5E[2];
+};
+
+struct DayCareMon
+{
+ struct BoxPokemon mon;
+ struct DayCareMail mail;
+ u32 steps;
+};
+
+struct DayCare
+{
+ struct DayCareMon mons[2];
+ u32 egg_pid;
+ u8 egg_cycles;
+ u8 padding_1DD[3];
+};
+
+u32 Sav2_DayCare_sizeof(void);
+void Sav2_DayCare_init(struct DayCare * daycare);
+struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i);
+struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon);
+struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon);
+u32 DayCareMon_GetSteps(struct DayCareMon * dcmon);
+struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail);
+u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare);
+u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare);
+void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps);
+void DayCareMon_AddSteps(struct DayCareMon * dcmon, u32 steps);
+void Sav2_DayCare_SetEggPID(struct DayCare * daycare, u32 pid);
+void Sav2_DayCare_SetEggCycleCounter(struct DayCare * daycare, u8 count);
+BOOL Sav2_DayCare_MasudaCheck(struct DayCare * daycare);
+void DayCareMon_Copy(struct DayCareMon * dest, const struct DayCareMon * src);
+void DayCareMon_Extras_init(struct DayCareMail * mail);
+void DayCareMon_Init(struct DayCareMon * mon);
+struct DayCare * Sav2_DayCare_get(struct SaveBlock2 * sav2);
+
+#endif //POKEDIAMOND_DAYCARE_H
diff --git a/include/itemtool.h b/include/itemtool.h
index 53140128..4dca94bc 100644
--- a/include/itemtool.h
+++ b/include/itemtool.h
@@ -3,24 +3,15 @@
#include "global.h"
#include "filesystem.h"
+#include "string16.h"
#include "constants/items.h"
-// Berries (nutdata)
+#define ITEMDATA_DATA 0
+#define ITEMDATA_NCGR 1
+#define ITEMDATA_NCLR 2
+#define ITEMDATA_3TO4 3
-struct NutData
-{
- u16 unk0;
- u8 unk2;
- u8 unk3;
- u8 unk4;
- u8 unk5;
- u8 unk6;
- u8 unk7;
- u8 unk8;
- u8 unk9;
- u8 unkA;
- u8 unkB;
-};
+// Berries (nutdata)
struct ItemSlot
{
@@ -28,53 +19,53 @@ struct ItemSlot
u16 quantity;
};
-struct ItemDataSub
+struct ItemPartyUseParam
{
- u8 unk0_0:1;
- u8 unk0_1:1;
- u8 unk0_2:1;
- u8 unk0_3:1;
- u8 unk0_4:1;
- u8 unk0_5:1;
- u8 unk0_6:1;
- u8 unk0_7:1;
- u8 unk1_0:1;
- u8 unk1_1:1;
- u8 unk1_2:1;
- u8 unk1_3:1;
- u8 unk1_4:4;
- u8 unk2_0:4;
- u8 unk2_4:4;
- u8 unk3_0:4;
- u8 unk3_4:4;
- u8 unk4_0:4;
- u8 unk4_4:2;
- u8 unk4_6:1;
- u8 unk4_7:1;
- u8 unk5_0:1;
- u8 unk5_1:1;
- u8 unk5_2:1;
- u8 unk5_3:1;
- u8 unk5_4:1;
- u8 unk5_5:1;
- u8 unk5_6:1;
- u8 unk5_7:1;
- u8 unk6_0:1;
- u8 unk6_1:1;
- u8 unk6_2:1;
- u8 unk6_3:1;
- s8 unk7;
- s8 unk8;
- s8 unk9;
- s8 unkA;
- s8 unkB;
- s8 unkC;
- u8 unkD;
- u8 unkE;
- s8 unkF;
- s8 unk10;
- s8 unk11;
- u8 paddding[4];
+ u8 slp_heal:1;
+ u8 psn_heal:1;
+ u8 brn_heal:1;
+ u8 frz_heal:1;
+ u8 prz_heal:1;
+ u8 cfs_heal:1;
+ u8 inf_heal:1;
+ u8 guard_spec:1;
+ u8 revive:1;
+ u8 revive_all:1;
+ u8 level_up:1;
+ u8 evolve:1;
+ u8 atk_stages:4;
+ u8 def_stages:4;
+ u8 spatk_stages:4;
+ u8 spdef_stages:4;
+ u8 speed_stages:4;
+ u8 accuracy_stages:4;
+ u8 critrate_stages:2;
+ u8 pp_up:1;
+ u8 pp_max:1;
+ u8 pp_restore:1;
+ u8 pp_restore_all:1;
+ u8 hp_restore:1;
+ u8 hp_ev_up:1;
+ u8 atk_ev_up:1;
+ u8 def_ev_up:1;
+ u8 speed_ev_up:1;
+ u8 spatk_ev_up:1;
+ u8 spdef_ev_up:1;
+ u8 friendship_mod_lo:1;
+ u8 friendship_mod_med:1;
+ u8 friendship_mod_hi:1;
+ s8 hp_ev_up_param;
+ s8 atk_ev_up_param;
+ s8 def_ev_up_param;
+ s8 speed_ev_up_param;
+ s8 spatk_ev_up_param;
+ s8 spdef_ev_up_param;
+ u8 hp_restore_param;
+ u8 pp_restore_param;
+ s8 friendship_mod_lo_param;
+ s8 friendship_mod_med_param;
+ s8 friendship_mod_hi_param;
+ u8 paddding[2];
};
struct ItemData
@@ -87,40 +78,32 @@ struct ItemData
u8 unk6;
u8 naturalGiftPower;
u16 unk8_0:5;
- u16 unk8_5:1;
- u16 unk8_6:1;
+ u16 prevent_toss:1;
+ u16 selectable:1;
u16 pocket:4;
u16 unk8_B:5;
u8 unkA;
u8 unkB;
- u8 unkC;
- u8 padding;
+ u8 partyUse;
+ u8 padding_0D;
union {
u8 flat;
- struct ItemDataSub sub;
- } unkE;
+ struct ItemPartyUseParam sub;
+ } partyUseParam;
+ u8 padding_22[2];
};
-NARC * OpenNutsDataNarc(u32 heap_id);
-struct NutData * ReadNutDataFromNarc(NARC * narc, u32 berry_idx, u32 heap_id);
-void CloseNutsDataNarc(NARC * narc);
-struct NutData * LoadNutDataSingle(s32 berry_idx, u32 heap_id);
-struct NutData * LoadNutDataSingleByItemId(s32 item_id, u32 heap_id);
-u32 GetNutAttr(struct NutData * nut, u32 attr);
-struct String * GetNutName(u32 berry_idx, u32 heap_id);
-struct String * GetNutDesc(u32 berry_idx, u32 heap_id);
-
void MoveItemSlotInList(struct ItemSlot * itemSlots, u16 from, u16 to);
u16 GetItemIndexMapping(u16 a0, u16 a1);
u16 UpConvertItemId_Gen3to4(u16 a0);
int FUN_0206E708();
int FUN_0206E70C();
-void * LoadItemDataOrGfx(u16 a0, u16 a1, u32 heap_id);
+void * LoadItemDataOrGfx(u16 itemId, u16 which, u32 heap_id);
void GetItemNameIntoString(struct String * dest, u16 item_id, u32 heap_no);
void GetItemDescIntoString(struct String * dest, u16 item_id, u32 heap_no);
u32 GetItemAttr(u16 item, u32 attr, u32 heap_id);
u32 GetItemAttr_PreloadedItemData(struct ItemData * itemData, u32 attr);
-u32 GetItemAttrSub(struct ItemDataSub * sub, u32 attr);
+u32 GetItemAttrSub(struct ItemPartyUseParam * sub, u32 attr);
u16 TMHMGetMove(u16 a0);
BOOL MoveIsHM(u16 a0);
u8 ItemToTMHMId(u16 a0);
diff --git a/include/nutdata.h b/include/nutdata.h
new file mode 100644
index 00000000..74470f37
--- /dev/null
+++ b/include/nutdata.h
@@ -0,0 +1,30 @@
+#ifndef POKEDIAMOND_NUTDATA_H
+#define POKEDIAMOND_NUTDATA_H
+
+#include "filesystem.h"
+
+struct NutData
+{
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+};
+
+NARC * OpenNutsDataNarc(u32 heap_id);
+struct NutData * ReadNutDataFromNarc(NARC * narc, u32 berry_idx, u32 heap_id);
+void CloseNutsDataNarc(NARC * narc);
+struct NutData * LoadNutDataSingle(s32 berry_idx, u32 heap_id);
+struct NutData * LoadNutDataSingleByItemId(s32 item_id, u32 heap_id);
+u32 GetNutAttr(struct NutData * nut, u32 attr);
+struct String * GetNutName(u32 berry_idx, u32 heap_id);
+struct String * GetNutDesc(u32 berry_idx, u32 heap_id);
+
+#endif //POKEDIAMOND_NUTDATA_H
diff --git a/include/options.h b/include/options.h
index 4ed466df..5f7a3d3f 100644
--- a/include/options.h
+++ b/include/options.h
@@ -10,4 +10,6 @@ struct Options {
u16 unk0_A:5;
};
+void Options_init(struct Options * options);
+
#endif //POKEDIAMOND_OPTIONS_H
diff --git a/include/player_data.h b/include/player_data.h
index 3c78de8f..5095ea61 100644
--- a/include/player_data.h
+++ b/include/player_data.h
@@ -3,6 +3,7 @@
#include "options.h"
#include "igt.h"
+#include "string16.h"
struct SaveBlock2;
@@ -12,12 +13,12 @@ struct PlayerData
/* 0x10 */ u32 playerId;
/* 0x14 */ u32 money;
/* 0x18 */ u8 gender;
- /* 0x19 */ u8 country;
+ /* 0x19 */ u8 language;
/* 0x1A */ u8 badges;
/* 0x1B */ u8 avatar;
- /* 0x1C */ u8 field_1C;
- /* 0x1D */ u8 field_1D_0:1;
- u8 field_1D_1:1;
+ /* 0x1C */ u8 version;
+ /* 0x1D */ u8 gameCleared:1;
+ u8 nationalDex:1;
u8 field_1D_pad:6;
/* 0x1E */ u8 padding_1E[2];
};
@@ -32,13 +33,43 @@ struct PlayerDataSav
u8 padding2[2];
};
-struct Options * Sav2_PlayerData_GetOptionsAddr(struct SaveBlock2 *);
-struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData *, u32 heap_id);
-u32 PlayerProfile_GetTrainerID(struct PlayerData *);
-u32 PlayerProfile_GetTrainerGender(struct PlayerData *);
u32 Sav2_PlayerData_sizeof(void);
-void Sav2_PlayerData_init(struct PlayerDataSav *);
-u16 * PlayerProfile_GetNamePtr(struct PlayerData * data);
+void Sav2_PlayerData_init(struct PlayerDataSav * pds);
struct PlayerData * Sav2_PlayerData_GetProfileAddr(struct SaveBlock2 * sav2);
+struct Options * Sav2_PlayerData_GetOptionsAddr(struct SaveBlock2 * sav2);
+u16 * Sav2_PlayerData_GetCoinsAddr(struct SaveBlock2 * sav2);
+struct IGT * Sav2_PlayerData_GetIGTAddr(struct SaveBlock2 * sav2);
+u32 PlayerProfile_sizeof(void);
+struct PlayerData * PlayerProfile_new(u32 heap_id);
+void PlayerProfile_Copy(const struct PlayerData * src, struct PlayerData * dest);
+void PlayerProfile_init(struct PlayerData * data);
+void CopyPlayerName(u16 * dest, struct PlayerData * data);
+void PlayerName_StringToFlat(struct PlayerData * data, struct String * str);
+u16 * PlayerProfile_GetNamePtr(struct PlayerData * data);
+void PlayerName_FlatToString(struct PlayerData * data, struct String * str);
+struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData * data, u32 heap_id);
+void PlayerProfile_SetTrainerID(struct PlayerData * data, u32 otid);
+u32 PlayerProfile_GetTrainerID(struct PlayerData * data);
+u16 PlayerProfile_GetTrainerID_VisibleHalf(struct PlayerData * data);
+void PlayerProfile_SetTrainerGender(struct PlayerData * data, u8 gender);
+u32 PlayerProfile_GetTrainerGender(struct PlayerData * data);
+BOOL PlayerProfile_TestBadgeFlag(struct PlayerData * data, u32 badgeno);
+void PlayerProfile_SetBadgeFlag(struct PlayerData * data, u32 badgeno);
+u32 PlayerProfile_CountBadges(struct PlayerData * data);
+u32 PlayerProfile_GetMoney(struct PlayerData * data);
+u32 PlayerProfile_SetMoney(struct PlayerData * data, u32 amount);
+u8 PlayerProfile_GetAvatar(struct PlayerData * data);
+void PlayerProfile_SetAvatar(struct PlayerData * data, u8 avatar);
+u32 PlayerProfile_AddMoney(struct PlayerData * data, u32 amount);
+u32 PlayerProfile_SubMoney(struct PlayerData * data, u32 amount);
+u8 PlayerProfile_GetVersion(struct PlayerData * data);
+void PlayerProfile_SetVersion(struct PlayerData * data, u8 a1);
+u8 PlayerProfile_GetLanguage(struct PlayerData * data);
+void PlayerProfile_SetLanguage(struct PlayerData * data, u8 language);
+void PlayerProfile_SetGameClearFlag(struct PlayerData * data);
+BOOL PlayerProfile_GetGameClearFlag(struct PlayerData * data);
+void PlayerProfile_SetNatDexFlag(struct PlayerData * data);
+BOOL PlayerProfile_GetNatDexFlag(struct PlayerData * data);
+BOOL PlayerProfile_NameAndOTIDMatchPlayer(struct PlayerData * a, struct PlayerData * b);
#endif //POKEDIAMOND_PLAYER_DATA_H
diff --git a/include/scrcmd.h b/include/scrcmd.h
new file mode 100644
index 00000000..5ebec947
--- /dev/null
+++ b/include/scrcmd.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_SCRCMD_H
+#define POKEDIAMOND_SCRCMD_H
+
+BOOL ScrCmd_givemon(struct ScriptContext* ctx);
+
+#endif //POKEDIAMOND_SCRCMD_H
diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h
new file mode 100644
index 00000000..472e5d77
--- /dev/null
+++ b/include/script_pokemon_util.h
@@ -0,0 +1,17 @@
+#ifndef POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+#define POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+
+BOOL MonNotFaintedOrEgg(struct Pokemon * pokemon);
+BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u32 encounterType);
+BOOL GiveEgg(u32 heapId, struct SaveBlock2 * sav2, u16 species, int level, int metLocIndex, int a3);
+void PartyMonSetMoveInSlot(struct PlayerParty * party, int partySlot, int moveSlot, u16 move);
+int GetIdxOfFirstPartyMonWithMove(struct PlayerParty * party, int move);
+int CountAlivePokemon(struct PlayerParty * party);
+struct Pokemon * GetFirstAliveMonInParty_CrashIfNone(struct PlayerParty * party);
+struct Pokemon * GetFirstNonEggInParty(struct PlayerParty * party);
+BOOL HasEnoughAlivePokemonForDoubleBattle(struct PlayerParty * party);
+void GiveAllMonsTheSinnohChampRibbon(struct PlayerParty * party);
+int ApplyPoisonStep(struct PlayerParty * party, int location);
+BOOL SurvivePoisoning(struct Pokemon * mon);
+
+#endif //POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
diff --git a/include/unk_020254B8.h b/include/unk_020254B8.h
new file mode 100644
index 00000000..792ba33e
--- /dev/null
+++ b/include/unk_020254B8.h
@@ -0,0 +1,23 @@
+#ifndef POKEDIAMOND_UNK_020254B8_H
+#define POKEDIAMOND_UNK_020254B8_H
+
+struct UnkStruct_020254B8
+{
+ u16 field_00[8];
+ u32 field_10;
+ u8 filler_14[4];
+ u32 field_18[16];
+ u8 filler_58[16];
+ u8 field_68[32];
+};
+
+u32 FUN_020254B8(void);
+struct UnkStruct_020254B8 * FUN_020254C0(struct SaveBlock2 * sav2);
+void FUN_020254CC(struct UnkStruct_020254B8 * arr);
+u16 * FUN_020254F0(struct UnkStruct_020254B8 * arr, s32 i);
+u8 FUN_020254F8(struct UnkStruct_020254B8 * unk, s32 i);
+BOOL FUN_02025500(struct UnkStruct_020254B8 * a, struct UnkStruct_020254B8 * b);
+void FUN_02025520(struct UnkStruct_020254B8 * sp0, struct UnkStruct_020254B8 * sp4, s32 n, u32 heap_id);
+s32 FUN_02025614(struct UnkStruct_020254B8 * a0, u32 a1);
+
+#endif //POKEDIAMOND_UNK_020254B8_H
diff --git a/include/use_item_on_mon.h b/include/use_item_on_mon.h
new file mode 100644
index 00000000..c73dfa0e
--- /dev/null
+++ b/include/use_item_on_mon.h
@@ -0,0 +1,17 @@
+#ifndef POKEDIAMOND_USE_ITEM_ON_MON_H
+#define POKEDIAMOND_USE_ITEM_ON_MON_H
+
+BOOL CanUseItemOnPokemon(struct Pokemon * pokemon, u16 itemId, s32 moveId, u32 heap_id);
+BOOL CanUseItemOnMonInParty(struct PlayerParty * party, u16 itemId, s32 partyIdx, s32 moveIdx, u32 heap_id);
+BOOL UseItemOnPokemon(struct Pokemon * pokemon, u16 itemId, s32 moveIdx, u16 location, u32 heap_id);
+BOOL UseItemOnMonInParty(struct PlayerParty * party, u16 itemId, s32 partyIdx, s32 moveIdx, u16 location, u32 heap_id);
+u8 MonMoveCanRestorePP(struct Pokemon * pokemon, s32 moveIdx);
+BOOL MonMoveRestorePP(struct Pokemon * pokemon, s32 moveIdx, s32 ppRestore);
+BOOL BoostMonMovePpUpBy(struct Pokemon * pokemon, s32 moveIdx, u32 nPpUp);
+void RestoreMonHPBy(struct Pokemon * pokemon, u32 hp, u32 maxHp, u32 restoration);
+s32 TryModEV(s32 ev, s32 evSum, s32 by);
+BOOL CanItemModFriendship(struct Pokemon * pokemon, struct ItemData * itemData);
+BOOL DoItemFriendshipMod(struct Pokemon * pokemon, s32 friendship, s32 mod, u16 location, u32 heap_id);
+void HealParty(struct PlayerParty * party);
+
+#endif //POKEDIAMOND_USE_ITEM_ON_MON_H