diff --git a/include/common.h b/include/common.h index 648215e2..dd9111b9 100644 --- a/include/common.h +++ b/include/common.h @@ -32,14 +32,14 @@ struct ground_move { struct ground_monster { u8 is_valid; // 0x0: True if the entry is valid - u8 level; + u8 level; // 0x1: Monster level u8 joined_at; // 0x2 u8 joined_at_floor; // 0x3: See struct monster::joined_at_floor s16 id; // 0x4: Monster ID - u8 level_at_first_evo; - u8 level_at_second_evo; - s16 iq; - s16 max_hp; + u8 level_at_first_evo; // 0x6: Level upon first evolution, or 0 if not applicable + u8 level_at_second_evo; // 0x7: Level upon second evolution, or 0 if not applicable + s16 iq; // 0x8 + s16 max_hp; // 0xA u8 offensive_stats[2]; // 0xC: {atk, sp_atk} u8 defensive_stats[2]; // 0xE: {def, sp_def} s32 exp; // 0x10 @@ -54,7 +54,10 @@ struct ground_monster { // Stores information about active team members, including those from special episodes. // A lot of the fields seem to be analogous to fields on struct monster. struct team_member { + // 0x0: flags: 1-byte bitfield u8 flags; + // u8 f_is_valid : 1; + // u8 flags_unk1 : 7; u8 is_leader; // 0x1 u8 level; // 0x2 diff --git a/include/ground_bg.h b/include/ground_bg.h index 4e66f953..6549ae8b 100644 --- a/include/ground_bg.h +++ b/include/ground_bg.h @@ -177,9 +177,9 @@ typedef struct BmaHeader u8 mapWidthChunks; u8 mapHeightChunks; - s16 numLayers; - s16 hasDataLayer; - s16 hasCollision; + s16 numLayers; // Number of layers in this map. Must match BPC layer size. Allowed values are only 1 or 2. + s16 hasDataLayer; // Seems to be a boolean flag (0 or 1). If >0, the Unknown Data Layer exists. + s16 hasCollision; // Number of Collision layers. 0, 1 or 2. } BmaHeader; typedef struct BplHeader diff --git a/include/main_02055410.h b/include/main_02055410.h index 0bcda1b6..2e740290 100644 --- a/include/main_02055410.h +++ b/include/main_02055410.h @@ -1,10 +1,9 @@ #ifndef PMDSKY_MAIN_02055410_H #define PMDSKY_MAIN_02055410_H +#include "common.h" #include "util.h" -struct ground_monster; - bool8 sub_02055410(int idx); bool8 sub_02055474(int idx); bool8 sub_020554D8(int idx); diff --git a/include/main_02056914.h b/include/main_02056914.h index 3bc8fdcb..63e2928b 100644 --- a/include/main_02056914.h +++ b/include/main_02056914.h @@ -1,7 +1,7 @@ #ifndef PMDSKY_MAIN_02056914_H #define PMDSKY_MAIN_02056914_H -struct ground_monster; +#include "common.h" struct ground_monster* sub_02056914(void); diff --git a/include/main_0205A288.h b/include/main_0205A288.h index 5f9be5ab..b08e8165 100644 --- a/include/main_0205A288.h +++ b/include/main_0205A288.h @@ -1,11 +1,10 @@ #ifndef PMDSKY_MAIN_0205A288_H #define PMDSKY_MAIN_0205A288_H +#include "common.h" #include "enums.h" #include "util.h" -struct ground_monster; - bool8 HandleShedinjaEvolution(s16 *member_idx, enum monster_id monster_id); s16 sub_0205A340(s16 *member_idx, struct ground_monster *src, enum monster_id monster_id); diff --git a/src/main_0203D538.c b/src/main_0203D538.c index e9e10725..a176e854 100644 --- a/src/main_0203D538.c +++ b/src/main_0203D538.c @@ -289,616 +289,616 @@ s32 sub_0203D538(void) } break; } - case 12: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x18 > 1) { - ApplyLevelUpBoostsToGroundMonster(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8, (s16)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x18, 1); - } - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38; - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { - sub_02046BE8(0x101C, (0x27A + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - sub_0203F00C(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xd; - } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { - sub_02046BE8(0x101C, (u16)(LoadScriptVariableValue(0, 0x69) + (0x27B + SUB_0203D538_OFFSET)), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - sub_0203F00C(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xd; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xf; - } - break; - case 13: - if (sub_02046C78() != 0) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xe; - } - break; - case 14: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xf; - } - break; - case 15: - GetNameWithGender(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x2b5, MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38, 0x4e); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x2b5; - sub_02046BE8(0x100C, (0x2A6 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); -#ifdef JAPAN - StrcpySimple((unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1, (const unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name); -#else - StrncpySimple((unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1, (const unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, 10); -#endif - MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, 10); - StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (const u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x10; - break; - case 16: - if (sub_02046C78() != 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0 = CreateSimpleMenuFromStringIds(&_0209C85C, 0x300011, 0, _0209C86C, 2); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x11; - } - break; - case 17: - if (IsSimpleMenuActive(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0) == 0) { - s32 result = GetSimpleMenuResult__0202B870(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0); - CloseSimpleMenu(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0 = -2; - sub_02046D20(); - switch (result) { - case 0: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x12; - break; - case 1: - default: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x20; - break; + case 12: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x18 > 1) { + ApplyLevelUpBoostsToGroundMonster(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8, (s16)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x18, 1); } - } - break; - case 18: - ov11_0230D92C(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x13; - break; - case 19: - if (ov11_0230D220() == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x14; - } - break; - case 20: - ShowKeyboard(2, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 0, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1); - ov11_02310BDC(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x15; - break; - case 21: - if (ov11_0230D220() == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x16; - } - break; - case 22: - if (GetKeyboardStatus() == 3) { - MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, (u8 *)GetKeyboardStringResult(), 10); - StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (const u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x17; - } - break; - case 23: - if (sub_02037468() != 0) { - ov11_0230D92C(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x18; - } - break; - case 24: - if (ov11_0230D220() == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x19; - } - break; - case 25: - ov11_0230D92C(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1a; - break; - case 26: - if (ov11_0230D220() == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1b; - } - break; - case 27: - sub_0203909C((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1c; - break; - case 28: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc = sub_0203931C(); - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc >= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1d; - } - break; - case 29: - if (sub_02039218() != 0) { - switch (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc) { - case 0: - MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x20; - break; - case 1: - default: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x12; - break; - } - } - break; - case 32: - { - s32 v10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38 | 0x80000; - StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38; if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { - v10 = (0x283 + SUB_0203D538_OFFSET); + sub_02046BE8(0x101C, (0x27A + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + sub_0203F00C(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xd; + } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { + sub_02046BE8(0x101C, (u16)(LoadScriptVariableValue(0, 0x69) + (0x27B + SUB_0203D538_OFFSET)), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + sub_0203F00C(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xd; } else { - v10 = (0x281 + SUB_0203D538_OFFSET); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xf; } - sub_02017C50(5); - sub_02046BE8(0x101C, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x21; - } - break; - case 33: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x22; - } - break; - case 34: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; - } - break; - case 30: - sub_02046D20(); - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2 || MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { - ov11_023061E4(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x40, 1); - } else { - ov11_023061CC(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x40); - } - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1f; - break; - case 31: - { - s32 v10; - struct ground_monster *v11; - v10 = ov11_02306C9C(); - switch (v10) { - case 3: - case 4: - v11 = ov11_02306C64(); - if (v11 == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x23; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8 = v11; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xc; - } - break; + break; + case 13: + if (sub_02046C78() != 0) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xe; } - } - break; - case 35: - GetNameRaw((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; - sub_02046BE8(0x101C, (0x284 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x24; - break; - case 36: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x25; - } - break; - case 37: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x26; - } - break; - case 38: - sub_02017C50(4); - AddMoneyCarried(1000); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 1000; - sub_02046BE8(0x101C, (0x285 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x27; - break; - case 39: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x28; - } - break; - case 40: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; - } - break; - case 41: - { - s32 v10; - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10 >= MISSION_REWARD_STRUCT_MAIN_PTR->field_0x20) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3a; - break; + break; + case 14: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xf; } - v5.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; - v5.flags = 0; - if (IsStorableItem(v5.id)) { - if (IsThrownItem(v5.id) || (v5.id >= ITEM_GORGEOUS_BOX_1 && v5.id <= ITEM_SINISTER_BOX_3)) { - v5.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].quantity; - } else { - v5.quantity = 0; - } - v5.flags = 1; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10] = v5; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = v5.id; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; - MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &v5, &_0209C850); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x14; - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 != 0) { - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { - v10 = (0x296 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { - v10 = (0x297 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { - v10 = (0x298 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else { - v10 = (0x295 + SUB_0203D538_OFFSET); - } - sub_02046BE8(0x101C, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2a; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2c; - } - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; - } - } - break; - case 42: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2b; - } - break; - case 43: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2c; - } - break; - case 44: - if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { - if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { - sub_02017C50(4); - } - if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 4) == 0) { - sub_02046BE8(0x1c, (0x273 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; - } else if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 8) != 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x30; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; - } - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; - } - break; -case 52: - v4.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; - v4.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].quantity; - v4.flags = 0; - sub_02046D20(); - InitUnkStorageStruct0x410(&v4, (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 1) == 0); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x35; - break; -case 53: - switch (sub_02046028()) { - case 4: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2d; - break; - case 2: - sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x36; - break; - case 3: - sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x38; - break; - } - break; -case 54: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x37; - } - break; -case 55: - if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { - if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { - sub_02017C50(4); - } - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xdc; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[2] = 0; - v3.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde.id; - v3.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde.quantity; - v3.flags = 0; - MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10], &_0209C850); - MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x138, &v3, &_0209C850); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x138; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; - sub_02046BE8(0x101C, (0x275 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; - } - break; -case 56: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x39; - } - break; -case 57: - if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { - if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { - sub_02017C50(4); - } - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xdc; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[2] = 0; - MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10], &_0209C850); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; - sub_02046BE8(0x101C, (0x277 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; - } - break; -case 45: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - sub_02046BE8(0x101C, (0x286 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; - } - break; -case 46: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2f; - } - break; -case 47: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; - } - break; -case 48: + break; + case 15: + GetNameWithGender(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x2b5, MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38, 0x4e); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x2b5; + sub_02046BE8(0x100C, (0x2A6 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); #ifdef JAPAN - sub_02046BE8(0x101C, 0x2FEC, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); -#else - sub_02046BE8(0x101C, 0x2CC, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); -#endif - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x31; - break; -case 49: - if (sub_02046C78()) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x32; - } - break; -case 50: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; - } - break; -case 51: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10++; - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10 < 3) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3a; - } - break; -case 58: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x36 == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x40; - break; - } - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 != 0) { - s32 v10; - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { - v10 = (0x292 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { - v10 = (0x293 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { - v10 = (0x294 + SUB_0203D538_OFFSET); - sub_0203F00C(); - } else { - v10 = (0x291 + SUB_0203D538_OFFSET); - } - sub_02046BE8(0x101c, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3b; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3d; - } - break; -case 59: - if (sub_02046C78() != 0) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3c; - } - break; -case 60: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3d; - } - break; -case 61: - sub_02017C50(5); - SetEggSpecies(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38); - SetEggHatchTimer((u16)(RandIntSafe(4) + 6)); - sub_02046BE8(0x101c, (0x272 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3e; - break; -case 62: - if (sub_02046C78() != 0) { - MissionRewardCloseAllBoxes(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3f; - } - break; -case 63: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x40; - } - break; -case 64: - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c == 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - break; - } - InitPreprocessorArgs(&v7); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc = GetRank(); - sub_02050C10(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c); - sub_02017C50(4); - v7.number_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c; - sub_02046BE8(0x101c, (0x2a1 + SUB_0203D538_OFFSET), &v7); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x41; - break; -case 65: - if (sub_02046C78() != 0) { - if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc != GetRank()) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x42; - } else { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - } - } - break; -case 66: - sub_02017C50(2); - InitPreprocessorArgs(&v8); - v8.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc; - v8.id_vals[3] = GetRank(); - sub_02046BE8(0x101c, (0x2a2 + SUB_0203D538_OFFSET), &v8); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x43; - break; -case 67: - if (sub_02046C78() != 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x44; - } - break; -case 68: - InitPreprocessorArgs(&v9); - v9.number_vals[0] = GetRankUpEntry(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc)->field_0x8; - v9.number_vals[1] = GetRankUpEntry(GetRank())->field_0x8; - if (v9.number_vals[0] == v9.number_vals[1]) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x46; - break; - } - sub_02046BE8(0x101c, (0x2a3 + SUB_0203D538_OFFSET), &v9); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x45; - break; -case 69: - if (sub_02046C78() != 0) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x46; - } - break; -case 70: { - struct unk_020AFE74 *p; - s16 v; - p = MISSION_REWARD_STRUCT_MAIN_PTR; - v = GetRankUpEntry(GetRank())->field_0xc; - p->field_0x84.id = v; - if (v == 0) { - sub_02046D20(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - } else if (IsStorableItem(v)) { - p->field_0x84.quantity = IsThrownItem(p->field_0x84.id) != 0; - p->field_0x84.flags = ITEM_FLAG_EXISTS; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = p->field_0x84.id; - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; - sub_02017C50(4); - sub_02046BE8(0x101c, (0x2a4 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x47; - } else { - sub_02046D20(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - } - break; -} -case 71: - if (sub_02046C78()) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x48; - } - break; -case 72: - if (!AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84)) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x49; - } else { - sub_02046D20(); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - } - break; -case 73: - v2.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84.id; - v2.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84.quantity; - v2.flags = 0; - sub_02046D20(); - InitUnkStorageStruct0x410(&v2, (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 1) == 0); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4a; - break; -case 74: { - s32 v10; - v10 = sub_02046028(); -#ifndef JAPAN - if (v10 == 1) { - break; - } - sub_02045FD0(&v1); - if (v1.id == 0) { - v1 = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84; - } -#endif - switch (v10) { - case 4: -#ifndef JAPAN - MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &v1, &_0209C850); + StrcpySimple((unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1, (const unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name); + #else + StrncpySimple((unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1, (const unsigned char *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, 10); + #endif + MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, 10); + StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (const u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x10; + break; + case 16: + if (sub_02046C78() != 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0 = CreateSimpleMenuFromStringIds(&_0209C85C, 0x300011, 0, _0209C86C, 2); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x11; + } + break; + case 17: + if (IsSimpleMenuActive(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0) == 0) { + s32 result = GetSimpleMenuResult__0202B870(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0); + CloseSimpleMenu(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a0 = -2; + sub_02046D20(); + switch (result) { + case 0: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x12; + break; + case 1: + default: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x20; + break; + } + } + break; + case 18: + ov11_0230D92C(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x13; + break; + case 19: + if (ov11_0230D220() == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x14; + } + break; + case 20: + ShowKeyboard(2, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 0, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1a1); + ov11_02310BDC(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x15; + break; + case 21: + if (ov11_0230D220() == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x16; + } + break; + case 22: + if (GetKeyboardStatus() == 3) { + MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, (u8 *)GetKeyboardStringResult(), 10); + StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (const u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x17; + } + break; + case 23: + if (sub_02037468() != 0) { + ov11_0230D92C(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x18; + } + break; + case 24: + if (ov11_0230D220() == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x19; + } + break; + case 25: + ov11_0230D92C(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1a; + break; + case 26: + if (ov11_0230D220() == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1b; + } + break; + case 27: + sub_0203909C((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1c; + break; + case 28: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc = sub_0203931C(); + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc >= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1d; + } + break; + case 29: + if (sub_02039218() != 0) { + switch (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3bc) { + case 0: + MemcpySimple((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8->name, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x20; + break; + case 1: + default: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x12; + break; + } + } + break; + case 32: + { + s32 v10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38 | 0x80000; + StrncpySimpleNoPadSafe((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5, (u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1ab, 10); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x1b5; + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { + v10 = (0x283 + SUB_0203D538_OFFSET); + } else { + v10 = (0x281 + SUB_0203D538_OFFSET); + } + sub_02017C50(5); + sub_02046BE8(0x101C, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x21; + } + break; + case 33: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x22; + } + break; + case 34: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; + } + break; + case 30: + sub_02046D20(); + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2 || MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { + ov11_023061E4(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x40, 1); + } else { + ov11_023061CC(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x40); + } + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x1f; + break; + case 31: + { + s32 v10; + struct ground_monster *v11; + v10 = ov11_02306C9C(); + switch (v10) { + case 3: + case 4: + v11 = ov11_02306C64(); + if (v11 == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x23; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3b8 = v11; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0xc; + } + break; + } + } + break; + case 35: + GetNameRaw((u8 *)MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38); MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; -#endif - sub_02046BE8(0x101c, (0x286 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4b; + sub_02046BE8(0x101C, (0x284 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x24; break; - case 2: - case 3: - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x48; + case 36: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x25; + } break; - } - break; -} -case 75: - if (sub_02046C78()) { - MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; - } - break; -case 76: - return 1; + case 37: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x26; + } + break; + case 38: + sub_02017C50(4); + AddMoneyCarried(1000); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 1000; + sub_02046BE8(0x101C, (0x285 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x27; + break; + case 39: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x28; + } + break; + case 40: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; + } + break; + case 41: + { + s32 v10; + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10 >= MISSION_REWARD_STRUCT_MAIN_PTR->field_0x20) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3a; + break; + } + v5.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; + v5.flags = 0; + if (IsStorableItem(v5.id)) { + if (IsThrownItem(v5.id) || (v5.id >= ITEM_GORGEOUS_BOX_1 && v5.id <= ITEM_SINISTER_BOX_3)) { + v5.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].quantity; + } else { + v5.quantity = 0; + } + v5.flags = 1; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10] = v5; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = v5.id; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; + MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &v5, &_0209C850); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.flag_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x14; + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 != 0) { + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { + v10 = (0x296 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { + v10 = (0x297 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { + v10 = (0x298 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else { + v10 = (0x295 + SUB_0203D538_OFFSET); + } + sub_02046BE8(0x101C, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2a; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2c; + } + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; + } + } + break; + case 42: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2b; + } + break; + case 43: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2c; + } + break; + case 44: + if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { + if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { + sub_02017C50(4); + } + if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 4) == 0) { + sub_02046BE8(0x1c, (0x273 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; + } else if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 8) != 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x30; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; + } + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; + } + break; + case 52: + v4.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; + v4.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].quantity; + v4.flags = 0; + sub_02046D20(); + InitUnkStorageStruct0x410(&v4, (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 1) == 0); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x35; + break; + case 53: + switch (sub_02046028()) { + case 4: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2d; + break; + case 2: + sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x36; + break; + case 3: + sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x38; + break; + } + break; + case 54: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x37; + } + break; + case 55: + if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { + if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { + sub_02017C50(4); + } + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xdc; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[2] = 0; + v3.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde.id; + v3.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde.quantity; + v3.flags = 0; + MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10], &_0209C850); + MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x138, &v3, &_0209C850); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x138; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; + sub_02046BE8(0x101C, (0x275 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; + } + break; + case 56: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x39; + } + break; + case 57: + if (AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10])) { + if ((MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 2) == 0) { + sub_02017C50(4); + } + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10].id; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xdc; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[2] = 0; + MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x24[MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10], &_0209C850); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; + sub_02046BE8(0x101C, (0x277 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x34; + } + break; + case 45: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + sub_02046BE8(0x101C, (0x286 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + sub_02045FD0(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0xde); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2e; + } + break; + case 46: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x2f; + } + break; + case 47: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; + } + break; + case 48: + #ifdef JAPAN + sub_02046BE8(0x101C, 0x2FEC, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + #else + sub_02046BE8(0x101C, 0x2CC, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + #endif + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x31; + break; + case 49: + if (sub_02046C78()) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x32; + } + break; + case 50: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x33; + } + break; + case 51: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10++; + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x10 < 3) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x29; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3a; + } + break; + case 58: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x36 == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x40; + break; + } + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 != 0) { + s32 v10; + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 2) { + v10 = (0x292 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 3) { + v10 = (0x293 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8 == 4) { + v10 = (0x294 + SUB_0203D538_OFFSET); + sub_0203F00C(); + } else { + v10 = (0x291 + SUB_0203D538_OFFSET); + } + sub_02046BE8(0x101c, v10, &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3b; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3d; + } + break; + case 59: + if (sub_02046C78() != 0) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3c; + } + break; + case 60: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3d; + } + break; + case 61: + sub_02017C50(5); + SetEggSpecies(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x38); + SetEggHatchTimer((u16)(RandIntSafe(4) + 6)); + sub_02046BE8(0x101c, (0x272 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3e; + break; + case 62: + if (sub_02046C78() != 0) { + MissionRewardCloseAllBoxes(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188 = 10; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x3f; + } + break; + case 63: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x188-- <= 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x40; + } + break; + case 64: + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c == 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + break; + } + InitPreprocessorArgs(&v7); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc = GetRank(); + sub_02050C10(MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c); + sub_02017C50(4); + v7.number_vals[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x3c; + sub_02046BE8(0x101c, (0x2a1 + SUB_0203D538_OFFSET), &v7); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x41; + break; + case 65: + if (sub_02046C78() != 0) { + if (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc != GetRank()) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x42; + } else { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + } + } + break; + case 66: + sub_02017C50(2); + InitPreprocessorArgs(&v8); + v8.id_vals[2] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc; + v8.id_vals[3] = GetRank(); + sub_02046BE8(0x101c, (0x2a2 + SUB_0203D538_OFFSET), &v8); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x43; + break; + case 67: + if (sub_02046C78() != 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x44; + } + break; + case 68: + InitPreprocessorArgs(&v9); + v9.number_vals[0] = GetRankUpEntry(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xc)->field_0x8; + v9.number_vals[1] = GetRankUpEntry(GetRank())->field_0x8; + if (v9.number_vals[0] == v9.number_vals[1]) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x46; + break; + } + sub_02046BE8(0x101c, (0x2a3 + SUB_0203D538_OFFSET), &v9); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x45; + break; + case 69: + if (sub_02046C78() != 0) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x46; + } + break; + case 70: { + struct unk_020AFE74 *p; + s16 v; + p = MISSION_REWARD_STRUCT_MAIN_PTR; + v = GetRankUpEntry(GetRank())->field_0xc; + p->field_0x84.id = v; + if (v == 0) { + sub_02046D20(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + } else if (IsStorableItem(v)) { + p->field_0x84.quantity = IsThrownItem(p->field_0x84.id) != 0; + p->field_0x84.flags = ITEM_FLAG_EXISTS; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.id_vals[0] = p->field_0x84.id; + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.number_vals[0] = 0; + sub_02017C50(4); + sub_02046BE8(0x101c, (0x2a4 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x47; + } else { + sub_02046D20(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + } + break; + } + case 71: + if (sub_02046C78()) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x48; + } + break; + case 72: + if (!AddItemToStorage(&MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84)) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x49; + } else { + sub_02046D20(); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + } + break; + case 73: + v2.id = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84.id; + v2.quantity = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84.quantity; + v2.flags = 0; + sub_02046D20(); + InitUnkStorageStruct0x410(&v2, (MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe4 & 1) == 0); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4a; + break; + case 74: { + s32 v10; + v10 = sub_02046028(); + #ifndef JAPAN + if (v10 == 1) { + break; + } + sub_02045FD0(&v1); + if (v1.id == 0) { + v1 = MISSION_REWARD_STRUCT_MAIN_PTR->field_0x84; + } + #endif + switch (v10) { + case 4: + #ifndef JAPAN + MaybeGetColoredFormattedItemName(MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8, &v1, &_0209C850); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c.strings[0] = MISSION_REWARD_STRUCT_MAIN_PTR->field_0xe8; + #endif + sub_02046BE8(0x101c, (0x286 + SUB_0203D538_OFFSET), &MISSION_REWARD_STRUCT_MAIN_PTR->field_0x8c); + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4b; + break; + case 2: + case 3: + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x48; + break; + } + break; + } + case 75: + if (sub_02046C78()) { + MISSION_REWARD_STRUCT_MAIN_PTR->field_0x0 = 0x4c; + } + break; + case 76: + return 1; } return 0; } diff --git a/src/overlay_29_0231CBC8.c b/src/overlay_29_0231CBC8.c index 139e2a61..3c633329 100644 --- a/src/overlay_29_0231CBC8.c +++ b/src/overlay_29_0231CBC8.c @@ -321,258 +321,258 @@ void ApplyItemEffect(char param_1, u8 param_2, u8 param_3, case ITEM_BLAST_SEED: ApplyBlastSeedEffect(attacker, defender, param_1); break; - case ITEM_MAX_ELIXIR: - RestoreAllMovePP(attacker, defender, 999, 0); - break; - case ITEM_PROTEIN: - ApplyProteinEffect(attacker, defender, PROTEIN_STAT_BOOST); - break; - case ITEM_CALCIUM: - ApplyCalciumEffect(attacker, defender, CALCIUM_STAT_BOOST); - break; - case ITEM_IRON: - ApplyIronEffect(attacker, defender, IRON_STAT_BOOST); - break; - case ITEM_ZINC: - ApplyZincEffect(attacker, defender, ZINC_STAT_BOOST); - break; - case ITEM_GABITE_SCALE: - EndNegativeStatusConditionWrapper(attacker, defender, TRUE, FALSE); - break; - case ITEM_GOLDEN_SEED: - LevelUpItemEffect(attacker, defender, 5, 1, 1); - break; - case ITEM_VILE_SEED: - ApplyVileSeedEffect(attacker, defender); - break; - case ITEM_PURE_SEED: - TryWarp(attacker, defender, 4, 0); - break; - case ITEM_VIOLENT_SEED: - ApplyViolentSeedEffect(attacker, defender); - break; - case ITEM_VANISH_SEED: - TryInflictInvisibleStatus(attacker, defender); - break; - case ITEM_NECTAR: - BoostIQ(defender, 10, FALSE); - break; - case ITEM_APPLE: - TryIncreaseBelly(attacker, defender, 50, 5, 1); - break; - case ITEM_BIG_APPLE: - TryIncreaseBelly(attacker, defender, 100, 10, 1); - break; - case ITEM_HUGE_APPLE: - TryIncreaseBelly(attacker, defender, 999, 10, 1); - break; - case ITEM_GRIMY_FOOD: - ApplyGrimyFoodEffect(attacker, defender); - break; - case ITEM_WHITE_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_NORMAL, GUMMI_STAT_BOOST); - break; - case ITEM_RED_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIRE, GUMMI_STAT_BOOST); - break; - case ITEM_BLUE_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_WATER, GUMMI_STAT_BOOST); - break; - case ITEM_GRASS_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GRASS, GUMMI_STAT_BOOST); - break; - case ITEM_YELLOW_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ELECTRIC, GUMMI_STAT_BOOST); - break; - case ITEM_CLEAR_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ICE, GUMMI_STAT_BOOST); - break; - case ITEM_ORANGE_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIGHTING, GUMMI_STAT_BOOST); - break; - case ITEM_PINK_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_POISON, GUMMI_STAT_BOOST); - break; - case ITEM_BROWN_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GROUND, GUMMI_STAT_BOOST); - break; - case ITEM_SKY_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FLYING, GUMMI_STAT_BOOST); - break; - case ITEM_GOLD_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_PSYCHIC, GUMMI_STAT_BOOST); - break; - case ITEM_GREEN_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_BUG, GUMMI_STAT_BOOST); - break; - case ITEM_GRAY_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ROCK, GUMMI_STAT_BOOST); - break; - case ITEM_PURPLE_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GHOST, GUMMI_STAT_BOOST); - break; - case ITEM_ROYAL_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DRAGON, GUMMI_STAT_BOOST); - break; - case ITEM_BLACK_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DARK, GUMMI_STAT_BOOST); - break; - case ITEM_SILVER_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_STEEL, GUMMI_STAT_BOOST); - break; - case ITEM_WONDER_GUMMI: - ApplyGummiBoostsDungeonMode(attacker, defender, 0xFF, WONDER_GUMMI_STAT_BOOST); - break; - case ITEM_UNNAMED_0x71: - TryIncreaseBelly(attacker, defender, 50, 5, 1); - break; - case ITEM_UNNAMED_0x72: - TryIncreaseBelly(attacker, defender, 10, 0, 1); - break; - case ITEM_GOLDEN_APPLE: - TryIncreaseBelly(attacker, defender, 999, 50, 1); - break; - case ITEM_KEY: + case ITEM_MAX_ELIXIR: + RestoreAllMovePP(attacker, defender, 999, 0); + break; + case ITEM_PROTEIN: + ApplyProteinEffect(attacker, defender, PROTEIN_STAT_BOOST); + break; + case ITEM_CALCIUM: + ApplyCalciumEffect(attacker, defender, CALCIUM_STAT_BOOST); + break; + case ITEM_IRON: + ApplyIronEffect(attacker, defender, IRON_STAT_BOOST); + break; + case ITEM_ZINC: + ApplyZincEffect(attacker, defender, ZINC_STAT_BOOST); + break; + case ITEM_GABITE_SCALE: + EndNegativeStatusConditionWrapper(attacker, defender, TRUE, FALSE); + break; + case ITEM_GOLDEN_SEED: + LevelUpItemEffect(attacker, defender, 5, 1, 1); + break; + case ITEM_VILE_SEED: + ApplyVileSeedEffect(attacker, defender); + break; + case ITEM_PURE_SEED: + TryWarp(attacker, defender, 4, 0); + break; + case ITEM_VIOLENT_SEED: + ApplyViolentSeedEffect(attacker, defender); + break; + case ITEM_VANISH_SEED: + TryInflictInvisibleStatus(attacker, defender); + break; + case ITEM_NECTAR: + BoostIQ(defender, 10, FALSE); + break; + case ITEM_APPLE: + TryIncreaseBelly(attacker, defender, 50, 5, 1); + break; + case ITEM_BIG_APPLE: + TryIncreaseBelly(attacker, defender, 100, 10, 1); + break; + case ITEM_HUGE_APPLE: + TryIncreaseBelly(attacker, defender, 999, 10, 1); + break; + case ITEM_GRIMY_FOOD: + ApplyGrimyFoodEffect(attacker, defender); + break; + case ITEM_WHITE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_NORMAL, GUMMI_STAT_BOOST); + break; + case ITEM_RED_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIRE, GUMMI_STAT_BOOST); + break; + case ITEM_BLUE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_WATER, GUMMI_STAT_BOOST); + break; + case ITEM_GRASS_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GRASS, GUMMI_STAT_BOOST); + break; + case ITEM_YELLOW_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ELECTRIC, GUMMI_STAT_BOOST); + break; + case ITEM_CLEAR_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ICE, GUMMI_STAT_BOOST); + break; + case ITEM_ORANGE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FIGHTING, GUMMI_STAT_BOOST); + break; + case ITEM_PINK_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_POISON, GUMMI_STAT_BOOST); + break; + case ITEM_BROWN_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GROUND, GUMMI_STAT_BOOST); + break; + case ITEM_SKY_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_FLYING, GUMMI_STAT_BOOST); + break; + case ITEM_GOLD_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_PSYCHIC, GUMMI_STAT_BOOST); + break; + case ITEM_GREEN_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_BUG, GUMMI_STAT_BOOST); + break; + case ITEM_GRAY_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_ROCK, GUMMI_STAT_BOOST); + break; + case ITEM_PURPLE_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_GHOST, GUMMI_STAT_BOOST); + break; + case ITEM_ROYAL_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DRAGON, GUMMI_STAT_BOOST); + break; + case ITEM_BLACK_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_DARK, GUMMI_STAT_BOOST); + break; + case ITEM_SILVER_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, TYPE_STEEL, GUMMI_STAT_BOOST); + break; + case ITEM_WONDER_GUMMI: + ApplyGummiBoostsDungeonMode(attacker, defender, 0xFF, WONDER_GUMMI_STAT_BOOST); + break; + case ITEM_UNNAMED_0x71: + TryIncreaseBelly(attacker, defender, 50, 5, 1); + break; + case ITEM_UNNAMED_0x72: + TryIncreaseBelly(attacker, defender, 10, 0, 1); + break; + case ITEM_GOLDEN_APPLE: + TryIncreaseBelly(attacker, defender, 999, 50, 1); + break; + case ITEM_KEY: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } + else { + ApplyKeyEffect(attacker); + } + break; + case ITEM_DROPEYE_SEED: + TryInflictDropeyeStatus(attacker, defender); + break; + case ITEM_SLIP_SEED: + if (!TryInflictSlipStatus(attacker, defender)) { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C75); + } + break; + case ITEM_VIA_SEED: + ApplyViaSeedEffect(attacker, defender); + break; + case ITEM_MIX_ELIXIR: + ApplyMixElixirEffect(attacker, defender); + break; + case ITEM_OREN_BERRY: + CalcDamageFixedNoCategory(attacker, defender, OREN_BERRY_DAMAGE, 1, NULL, TYPE_NONE, + DAMAGE_SOURCE_OREN_BERRY, 0, 0, 0); + break; + case ITEM_DOUGH_SEED: + ApplyDoughSeedEffect(attacker, defender); + break; + case ITEM_GRAVELYROCK: + ApplyGravelyrockEffect(attacker, defender); + break; + case ITEM_GONE_PEBBLE: + ApplyGonePebbleEffect(attacker, defender); + break; + case ITEM_WANDER_GUMMI: + TryInflictBlinkerStatus(attacker, defender, 0, 0); + break; + case ITEM_PRIZE_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; + case ITEM_SILVER_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; + case ITEM_GOLD_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; + case ITEM_PRISM_TICKET: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + SubstitutePlaceholderStringTags(0, defender, 0); + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); + } + break; + case ITEM_SKY_GIFT: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C76); + } + break; + case ITEM_GRACIDEA: + ApplyGracideaEffect(attacker, defender); + break; + case ITEM_UNNAMED_0x16B: + break; + case ITEM_A_STONE: + case ITEM_B_STONE: + case ITEM_C_STONE: + case ITEM_D_STONE: + case ITEM_E_STONE: + case ITEM_F_STONE: + case ITEM_G_STONE: + case ITEM_H_STONE: + case ITEM_I_STONE: + case ITEM_J_STONE: + case ITEM_K_STONE: + case ITEM_L_STONE: + case ITEM_M_STONE: + case ITEM_N_STONE: + case ITEM_O_STONE: + case ITEM_P_STONE: + case ITEM_Q_STONE: + case ITEM_R_STONE: + case ITEM_S_STONE: + case ITEM_T_STONE: + case ITEM_U_STONE: + case ITEM_V_STONE: + case ITEM_W_STONE: + case ITEM_X_STONE: + case ITEM_Y_STONE: + case ITEM_Z_STONE: + case ITEM_EXCLAMATION_STONE: + case ITEM_QUESTION_STONE: if (param_1) { bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, + CalcDamageFixedNoCategory(attacker, defender, ov10_022C44EC, 1, &flag, TYPE_NONE, DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } - else { - ApplyKeyEffect(attacker); - } - break; - case ITEM_DROPEYE_SEED: - TryInflictDropeyeStatus(attacker, defender); - break; -case ITEM_SLIP_SEED: - if (!TryInflictSlipStatus(attacker, defender)) { - SubstitutePlaceholderStringTags(0, defender, 0); - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C75); - } - break; -case ITEM_VIA_SEED: - ApplyViaSeedEffect(attacker, defender); - break; -case ITEM_MIX_ELIXIR: - ApplyMixElixirEffect(attacker, defender); - break; -case ITEM_OREN_BERRY: - CalcDamageFixedNoCategory(attacker, defender, OREN_BERRY_DAMAGE, 1, NULL, TYPE_NONE, - DAMAGE_SOURCE_OREN_BERRY, 0, 0, 0); - break; -case ITEM_DOUGH_SEED: - ApplyDoughSeedEffect(attacker, defender); - break; -case ITEM_GRAVELYROCK: - ApplyGravelyrockEffect(attacker, defender); - break; -case ITEM_GONE_PEBBLE: - ApplyGonePebbleEffect(attacker, defender); - break; -case ITEM_WANDER_GUMMI: - TryInflictBlinkerStatus(attacker, defender, 0, 0); - break; -case ITEM_PRIZE_TICKET: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - SubstitutePlaceholderStringTags(0, defender, 0); - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); - } - break; -case ITEM_SILVER_TICKET: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - SubstitutePlaceholderStringTags(0, defender, 0); - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); - } - break; -case ITEM_GOLD_TICKET: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - SubstitutePlaceholderStringTags(0, defender, 0); - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); - } - break; -case ITEM_PRISM_TICKET: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - SubstitutePlaceholderStringTags(0, defender, 0); - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C67); - } - break; -case ITEM_SKY_GIFT: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_C76); - } - break; -case ITEM_GRACIDEA: - ApplyGracideaEffect(attacker, defender); - break; - case ITEM_UNNAMED_0x16B: - break; - case ITEM_A_STONE: - case ITEM_B_STONE: - case ITEM_C_STONE: - case ITEM_D_STONE: - case ITEM_E_STONE: - case ITEM_F_STONE: - case ITEM_G_STONE: - case ITEM_H_STONE: - case ITEM_I_STONE: - case ITEM_J_STONE: - case ITEM_K_STONE: - case ITEM_L_STONE: - case ITEM_M_STONE: - case ITEM_N_STONE: - case ITEM_O_STONE: - case ITEM_P_STONE: - case ITEM_Q_STONE: - case ITEM_R_STONE: - case ITEM_S_STONE: - case ITEM_T_STONE: - case ITEM_U_STONE: - case ITEM_V_STONE: - case ITEM_W_STONE: - case ITEM_X_STONE: - case ITEM_Y_STONE: - case ITEM_Z_STONE: - case ITEM_EXCLAMATION_STONE: - case ITEM_QUESTION_STONE: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C44EC, 1, &flag, TYPE_NONE, - DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } else { - LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); - } - break; - case ITEM_NOTHING: - default: - if (param_1) { - bool8 flag; - CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); - } - else { + } else { LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); } break; + case ITEM_NOTHING: + default: + if (param_1) { + bool8 flag; + CalcDamageFixedNoCategory(attacker, defender, ov10_022C4558, 1, &flag, TYPE_NONE, DAMAGE_SOURCE_THROWN_ITEM, 0, 0, 0); + } + else { + LogMessageByIdWithPopupCheckUserTarget(attacker, defender, MESSAGE_BE8); + } + break; } }