From 7487d6f73df8f5b8b1b1bc20c949ec53b4abbfb9 Mon Sep 17 00:00:00 2001 From: cecilarmitais Date: Sun, 20 Sep 2026 00:59:34 -0700 Subject: [PATCH] Address PR #300 review: restore field comments, de-duplicate a forward declaration, fix case indentation Six review comments from AnonymousRandomPerson on pret/pmd-sky#300. Comments restored, in include/common.h (struct ground_monster's level, level_at_first_evo, level_at_second_evo, iq and max_hp) and in include/ground_bg.h (BmaHeader's numLayers, hasDataLayer, hasCollision). These were not removed deliberately: each line was rewritten for a type correction and its trailing comment went with it. Every one of those retypes is the same character width as what it replaced, so the original column alignment is restored verbatim. struct team_member keeps u8 flags, with the labelled bitfield preserved as a comment in the form struct item already uses for the same situation. struct ground_monster; is no longer forward-declared anywhere. All three headers that carried it - main_02055410.h, main_02056914.h and main_0205A288.h - now include common.h instead. main_02056914.h previously had no includes at all, so this makes it self-contained as well. Case indentation in src/main_0203D538.c and src/overlay_29_0231CBC8.c. The defect was wider than the two labels the review pointed at: whole regions were de-indented, consistent with a splice artifact. overlay_29_0231CBC8.c's switch ran at column 8, then 4, then 0, then 4; main_0203D538.c had two contiguous blocks short by 4 and by 8. Re-indented by brace depth, so every switch in both files is now internally consistent with its own earlier cases. The comments in this commit were added under build-tools/precommit.py's --allow-comments override, which exists for exactly this case: they were requested by the upstream maintainer in review, not authored here. Authored by Claude (Opus 5) under human direction. Proved byte-neutral rather than argued, because two of these changes could in principle move codegen: the eight translation units reaching any of the three edited headers, and the two re-indented files, each compiled in the build image with the real flags (including -W all -W pedantic -W error) before and after. All 30 objects are byte-identical across NORTH_AMERICA, EUROPE and JAPAN. Co-Authored-By: Claude Opus 5 --- include/common.h | 13 +- include/ground_bg.h | 6 +- include/main_02055410.h | 3 +- include/main_02056914.h | 2 +- include/main_0205A288.h | 3 +- src/main_0203D538.c | 1200 ++++++++++++++++++------------------- src/overlay_29_0231CBC8.c | 492 +++++++-------- 7 files changed, 860 insertions(+), 859 deletions(-) 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; } }