1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#include "global.h"
#include "fldeff_softboiled.h"
#include "menu.h"
#include "party_menu.h"
#include "pokemon.h"
#include "pokemon_menu.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "strings.h"
#include "task.h"
#include "ewram.h"
struct Struct2001000 {
u8 unk0;
u8 unk1;
u8 unk2;
u8 filler3[9];
void *unkC;
};
struct Struct201C000 {
struct Pokemon *unk0;
u8 filler4[1];
u8 unk5;
u16 unk6;
u8 filler8[4];
s32 unkC;
void* unk10;
u8 filler14[26];
s16 unk2E;
};
#if ENGLISH
#define WINDOW_LEFT 3
#define WINDOW_RIGHT 26
#elif GERMAN
#define WINDOW_LEFT 0
#define WINDOW_RIGHT 29
#endif
// extern
extern u8 gUnknown_0202E8F6;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_0202E8F4;
// Static
static void sub_8133D50(u8 taskId);
static void sub_8133E74(u8 taskId);
static void sub_8133EB8(u8 taskId);
static void sub_8133EF8(void);
bool8 SetUpFieldMove_SoftBoiled(void) {
u16 maxHp;
u16 hp;
u16 minHp;
maxHp = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAX_HP);
hp = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HP);
minHp = (maxHp / 5);
if (hp >= minHp)
{
return TRUE;
}
return FALSE;
}
void sub_8133D28(u8 taskid) {
EWRAM_1000.unkC = sub_8133D50;
EWRAM_1B000_2.unk272 = 3;
DoPokemonMenu_Switch(taskid);
}
static void sub_8133D50(u8 taskId) {
u8 unk1, unk2;
u16 hp;
struct Pokemon *pokemon;
//struct Task *task;
struct Sprite *sprites = gSprites;
unk1 = sprites[EWRAM_1000.unk1].data[0];
unk2 = sprites[EWRAM_1000.unk2].data[0];
if (unk1 > 5 || unk2 > 5)
{
sub_806CD44(taskId);
return;
}
EWRAM_1C000.unk0 = &gPlayerParty[sprites[EWRAM_1000.unk2].data[0]];
hp = GetMonData(EWRAM_1C000.unk0, MON_DATA_HP);
if (hp == 0 || unk1 == unk2 || GetMonData(EWRAM_1C000.unk0, MON_DATA_MAX_HP) == hp)
{
sub_8133EB8(taskId);
return;
}
PlaySE(SE_USE_ITEM);
EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data[0];
pokemon = &gPlayerParty[EWRAM_1C000.unk5];
EWRAM_1C000.unk0 = pokemon;
EWRAM_1C000.unk6 = 0;
EWRAM_1C000.unkC = -0x8000;
EWRAM_1C000.unk10 = sub_8133EF8;
gTasks[taskId].data[10] = GetMonData(EWRAM_1C000.unk0, MON_DATA_MAX_HP);
gTasks[taskId].data[11] = GetMonData(EWRAM_1C000.unk0, MON_DATA_HP);
gTasks[taskId].data[12] = gTasks[taskId].data[10] / 5;
sub_806D5A4();
gTasks[taskId].func = sub_806FA18;
EWRAM_1B000_2.unk282 = gTasks[taskId].data[11];
}
static void sub_8133E74(u8 taskId) {
if (gUnknown_0202E8F6)
{
return;
}
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PrintPartyMenuPromptText(3, 0);
gTasks[taskId].func = HandlePartyMenuSwitchPokemonInput;
}
static void sub_8133EB8(u8 taskId) {
gUnknown_0202E8F4 = 0;
sub_806D5A4();
sub_806E834(gOtherText_CantUseOnPoke, 1);
gTasks[taskId].func = sub_8133E74;
}
static void sub_8133EF8(void) {
sub_806CCE4();
EWRAM_1B000_2.unk261 = 2;
DestroySprite(&gSprites[EWRAM_1000.unk1]);
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PrintPartyMenuPromptText(0, 0);
SwitchTaskToFollowupFunc(EWRAM_1000.unk0);
}
|