2018-02-15 09:59:26 +00:00
|
|
|
#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"
|
|
|
|
|
|
|
|
void sub_816166C(u8 taskId);
|
|
|
|
void sub_81617B8(u8 taskId);
|
2018-02-15 10:35:27 +00:00
|
|
|
void sub_81616C0(u8 taskId);
|
2018-02-15 09:59:26 +00:00
|
|
|
void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
|
|
|
|
|
|
|
|
bool8 SetUpFieldMove_SoftBoiled(void)
|
|
|
|
{
|
|
|
|
u16 maxHp;
|
|
|
|
u16 hp;
|
|
|
|
u16 minHp;
|
|
|
|
|
|
|
|
maxHp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_MAX_HP);
|
|
|
|
hp = GetMonData(&gPlayerParty[GetCursorSelectionMonId()], MON_DATA_HP);
|
|
|
|
|
|
|
|
minHp = (maxHp / 5);
|
|
|
|
if (hp > minHp)
|
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_8161560(u8 taskId)
|
|
|
|
{
|
|
|
|
gUnknown_0203CEC8.unkB = 0xA;
|
|
|
|
gUnknown_0203CEC8.unkA = gUnknown_0203CEC8.unk9;
|
|
|
|
sub_81B0FCC(GetCursorSelectionMonId(), 0x1);
|
|
|
|
display_pokemon_menu_message(0x5);
|
|
|
|
gTasks[taskId].func = sub_81B1370;
|
|
|
|
}
|
|
|
|
|
|
|
|
void sub_81615A8(u8 taskId)
|
|
|
|
{
|
|
|
|
u16 hp;
|
|
|
|
|
|
|
|
u8 unk9 = gUnknown_0203CEC8.unk9;
|
|
|
|
u8 pokemonIndex = gUnknown_0203CEC8.unkA;
|
|
|
|
if(pokemonIndex > 6)
|
|
|
|
{
|
|
|
|
gUnknown_0203CEC8.unkB = 0;
|
|
|
|
display_pokemon_menu_message(0x0);
|
|
|
|
gTasks[taskId].func = sub_81B1370;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
hp = GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_HP);
|
|
|
|
if(hp == 0 || unk9 == pokemonIndex || GetMonData(&gPlayerParty[pokemonIndex], MON_DATA_MAX_HP) == hp)
|
|
|
|
{
|
|
|
|
sub_81617B8(taskId);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
PlaySE(SE_KAIFUKU);
|
|
|
|
sub_81B1F18(taskId, unk9, -1, GetMonData(&gPlayerParty[unk9], MON_DATA_MAX_HP)/5, sub_816166C);
|
|
|
|
}
|
|
|
|
|
2018-02-15 10:35:27 +00:00
|
|
|
#ifdef NONMATCHING
|
|
|
|
void sub_816166C(u8 taskId)
|
|
|
|
{
|
2018-02-15 09:59:26 +00:00
|
|
|
PlaySE(SE_KAIFUKU);
|
2018-02-15 10:35:27 +00:00
|
|
|
sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAX_HP)/5, sub_81616C0);
|
2018-02-15 09:59:26 +00:00
|
|
|
}
|
2018-02-15 10:35:27 +00:00
|
|
|
#else
|
|
|
|
__attribute__((naked))
|
|
|
|
void sub_816166C(u8 taskId)
|
|
|
|
{
|
|
|
|
asm(".syntax unified\n\
|
|
|
|
push {r4,r5,lr}\n\
|
|
|
|
sub sp, 0x4\n\
|
|
|
|
adds r4, r0, 0\n\
|
|
|
|
lsls r4, 24\n\
|
|
|
|
lsrs r4, 24\n\
|
|
|
|
movs r0, 0x1\n\
|
|
|
|
bl PlaySE\n\
|
|
|
|
ldr r5, =gUnknown_0203CEC8\n\
|
|
|
|
movs r1, 0x9\n\
|
|
|
|
ldrsb r1, [r5, r1]\n\
|
|
|
|
movs r0, 0x64\n\
|
|
|
|
muls r0, r1\n\
|
|
|
|
ldr r1, =gPlayerParty\n\
|
|
|
|
adds r0, r1\n\
|
|
|
|
movs r1, 0x3A\n\
|
|
|
|
bl GetMonData\n\
|
|
|
|
movs r1, 0x5\n\
|
|
|
|
bl __udivsi3\n\
|
|
|
|
adds r3, r0, 0\n\
|
|
|
|
lsls r3, 16\n\
|
|
|
|
asrs r3, 16\n\
|
|
|
|
ldrb r1, [r5, 0xA]\n\
|
|
|
|
ldr r0, =sub_81616C0\n\
|
|
|
|
str r0, [sp]\n\
|
|
|
|
adds r0, r4, 0\n\
|
|
|
|
movs r2, 0x1\n\
|
|
|
|
bl sub_81B1F18\n\
|
|
|
|
add sp, 0x4\n\
|
|
|
|
pop {r4,r5}\n\
|
|
|
|
pop {r0}\n\
|
|
|
|
bx r0\n\
|
|
|
|
.pool\n\
|
|
|
|
.syntax divided\n");
|
2018-02-15 09:59:26 +00:00
|
|
|
|
|
|
|
}
|
2018-02-15 10:35:27 +00:00
|
|
|
#endif
|
2018-02-15 09:59:26 +00:00
|
|
|
|
|
|
|
|