Match GetItemEffectType
This commit is contained in:
parent
b26c24ffee
commit
d02a788d2e
1 changed files with 77 additions and 146 deletions
223
src/party_menu.c
223
src/party_menu.c
|
@ -2087,7 +2087,8 @@ static bool8 RenderPartyMenuBoxes(void)
|
||||||
RenderPartyMenuBox(gUnknown_0203CEC4->data[0]);
|
RenderPartyMenuBox(gUnknown_0203CEC4->data[0]);
|
||||||
if (++gUnknown_0203CEC4->data[0] == 6)
|
if (++gUnknown_0203CEC4->data[0] == 6)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
else
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8* GetPartyMiscGraphicsTile(u16 tileId)
|
static u8* GetPartyMiscGraphicsTile(u16 tileId)
|
||||||
|
@ -2130,7 +2131,8 @@ static bool8 party_menu_add_per_mon_objects(void)
|
||||||
party_menu_add_per_mon_objects_internal(gUnknown_0203CEC4->data[0]);
|
party_menu_add_per_mon_objects_internal(gUnknown_0203CEC4->data[0]);
|
||||||
if (++gUnknown_0203CEC4->data[0] == 6)
|
if (++gUnknown_0203CEC4->data[0] == 6)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
else
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81B0F28(void)
|
static void sub_81B0F28(void)
|
||||||
|
@ -2202,6 +2204,7 @@ void sub_81B0FCC(u8 slot, u8 b)
|
||||||
static u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
|
static u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
|
||||||
{
|
{
|
||||||
u8 returnVar = 0;
|
u8 returnVar = 0;
|
||||||
|
|
||||||
if (b == 1)
|
if (b == 1)
|
||||||
returnVar |= 1;
|
returnVar |= 1;
|
||||||
if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0)
|
if (GetMonData(&gPlayerParty[slot], MON_DATA_HP) == 0)
|
||||||
|
@ -2321,7 +2324,8 @@ static s8* sub_81B13EC(void)
|
||||||
{
|
{
|
||||||
if (gUnknown_0203CEC8.unkB == 8 || gUnknown_0203CEC8.unkB == 10)
|
if (gUnknown_0203CEC8.unkB == 8 || gUnknown_0203CEC8.unkB == 10)
|
||||||
return &gUnknown_0203CEC8.unkA;
|
return &gUnknown_0203CEC8.unkA;
|
||||||
return &gUnknown_0203CEC8.unk9;
|
else
|
||||||
|
return &gUnknown_0203CEC8.unk9;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81B140C(u8 taskId, s8 *ptr)
|
static void sub_81B140C(u8 taskId, s8 *ptr)
|
||||||
|
@ -2836,7 +2840,7 @@ static void sub_81B1DB8(struct Pokemon *mon, u16 item)
|
||||||
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
|
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_81B1E00(struct Pokemon* mon)
|
static u8 TryTakeMonItem(struct Pokemon* mon)
|
||||||
{
|
{
|
||||||
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
|
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
|
||||||
|
|
||||||
|
@ -4265,7 +4269,7 @@ static void CursorCb_TakeItem(u8 taskId)
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
|
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
|
||||||
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
|
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
|
||||||
switch (sub_81B1E00(mon))
|
switch (TryTakeMonItem(mon))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
GetMonNickname(mon, gStringVar1);
|
GetMonNickname(mon, gStringVar1);
|
||||||
|
@ -5203,7 +5207,7 @@ void sub_81B617C(void)
|
||||||
bool8 inBattle;
|
bool8 inBattle;
|
||||||
u8 i;
|
u8 i;
|
||||||
u8 msgIdMaybe;
|
u8 msgIdMaybe;
|
||||||
register TaskFunc task asm("r0");
|
TaskFunc task;
|
||||||
|
|
||||||
if (gMain.inBattle)
|
if (gMain.inBattle)
|
||||||
{
|
{
|
||||||
|
@ -5215,6 +5219,7 @@ void sub_81B617C(void)
|
||||||
inBattle = FALSE;
|
inBattle = FALSE;
|
||||||
doubleBattleStatus = 0;
|
doubleBattleStatus = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetItemEffectType(gSpecialVar_ItemId) == 10)
|
if (GetItemEffectType(gSpecialVar_ItemId) == 10)
|
||||||
{
|
{
|
||||||
gUnknown_0203CEC8.unk9 = 0;
|
gUnknown_0203CEC8.unk9 = 0;
|
||||||
|
@ -5231,9 +5236,14 @@ void sub_81B617C(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
msgIdMaybe = (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_TM_HM) ? 4 : 5;
|
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_TM_HM)
|
||||||
|
msgIdMaybe = 4;
|
||||||
|
else
|
||||||
|
msgIdMaybe = 5;
|
||||||
|
|
||||||
task = sub_81B1370;
|
task = sub_81B1370;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitPartyMenu(inBattle, doubleBattleStatus, 3, 1, msgIdMaybe, task, callback);
|
InitPartyMenu(inBattle, doubleBattleStatus, 3, 1, msgIdMaybe, task, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5263,9 +5273,11 @@ static bool8 IsHPRecoveryItem(u16 item)
|
||||||
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
||||||
else
|
else
|
||||||
effect = gItemEffectTable[item - ITEM_POTION];
|
effect = gItemEffectTable[item - ITEM_POTION];
|
||||||
|
|
||||||
if ((effect[4] & 4) != 0)
|
if ((effect[4] & 4) != 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
else
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GetMedicineItemEffectMessage(u16 item)
|
static void GetMedicineItemEffectMessage(u16 item)
|
||||||
|
@ -5575,6 +5587,7 @@ void dp05_ether(u8 taskId, TaskFunc task)
|
||||||
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
||||||
else
|
else
|
||||||
effect = gItemEffectTable[item - ITEM_POTION];
|
effect = gItemEffectTable[item - ITEM_POTION];
|
||||||
|
|
||||||
if ((effect[4] & 0x10) == 0)
|
if ((effect[4] & 0x10) == 0)
|
||||||
{
|
{
|
||||||
gUnknown_0203CEC8.unkE = 0;
|
gUnknown_0203CEC8.unkE = 0;
|
||||||
|
@ -6196,151 +6209,69 @@ void sub_81B7C74(u8 taskId, TaskFunc task)
|
||||||
u8 GetItemEffectType(u16 item)
|
u8 GetItemEffectType(u16 item)
|
||||||
{
|
{
|
||||||
const u8 *itemEffect;
|
const u8 *itemEffect;
|
||||||
#ifndef NONMATCHING
|
u32 statusCure;
|
||||||
register u8 itemEffect0 asm("r1");
|
|
||||||
register u8 itemEffect3 asm("r3");
|
|
||||||
register u32 itemEffect0_r0 asm("r0"); // u32 to prevent shifting when transferring itemEffect0 to this
|
|
||||||
u8 mask;
|
|
||||||
#else
|
|
||||||
#define itemEffect0 itemEffect[0]
|
|
||||||
#define itemEffect3 itemEffect[3]
|
|
||||||
#define mask 0x3F
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!IS_POKEMON_ITEM(item))
|
if (!IS_POKEMON_ITEM(item))
|
||||||
{
|
|
||||||
return 22;
|
return 22;
|
||||||
}
|
|
||||||
|
// Read the item's effect properties.
|
||||||
|
if (item == ITEM_ENIGMA_BERRY)
|
||||||
|
itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
||||||
else
|
else
|
||||||
|
itemEffect = gItemEffectTable[item - ITEM_POTION];
|
||||||
|
|
||||||
|
if ((itemEffect[0] & 0x3F) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & 0x80))
|
||||||
|
return 0;
|
||||||
|
else if (itemEffect[0] & 0x40)
|
||||||
|
return 10;
|
||||||
|
else if (itemEffect[3] & 0x40)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
statusCure = itemEffect[3] & 0x3F;
|
||||||
|
if (statusCure || (itemEffect[0] >> 7))
|
||||||
{
|
{
|
||||||
// Read the item's effect properties.
|
if (statusCure == 0x20)
|
||||||
if (item == ITEM_ENIGMA_BERRY)
|
return 4;
|
||||||
{
|
else if (statusCure == 0x10)
|
||||||
itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
|
return 3;
|
||||||
}
|
else if (statusCure == 0x8)
|
||||||
|
return 5;
|
||||||
|
else if (statusCure == 0x4)
|
||||||
|
return 6;
|
||||||
|
else if (statusCure == 0x2)
|
||||||
|
return 7;
|
||||||
|
else if (statusCure == 0x1)
|
||||||
|
return 8;
|
||||||
|
else if (itemEffect[0] >> 7 && !statusCure)
|
||||||
|
return 9;
|
||||||
else
|
else
|
||||||
{
|
return 11;
|
||||||
itemEffect = gItemEffectTable[item - ITEM_POTION];
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
itemEffect0 = itemEffect[0];
|
|
||||||
mask = 0x3F;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2])
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
itemEffect3 = itemEffect[3];
|
|
||||||
#endif
|
|
||||||
if (itemEffect3 & 0x80)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if (itemEffect0 & 0x40)
|
|
||||||
{
|
|
||||||
return 10;
|
|
||||||
}
|
|
||||||
else if (itemEffect3 & 0x40)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) || (itemEffect0 >> 7))
|
|
||||||
{
|
|
||||||
if ((itemEffect3 & mask) == 0x20)
|
|
||||||
{
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) == 0x10)
|
|
||||||
{
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) == 0x8)
|
|
||||||
{
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) == 0x4)
|
|
||||||
{
|
|
||||||
return 6;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) == 0x2)
|
|
||||||
{
|
|
||||||
return 7;
|
|
||||||
}
|
|
||||||
else if ((itemEffect3 & mask) == 0x1)
|
|
||||||
{
|
|
||||||
return 8;
|
|
||||||
}
|
|
||||||
// alternate fakematching
|
|
||||||
// itemEffect0_r0 = itemEffect0 >> 7;
|
|
||||||
// asm(""); // increase live length for greg
|
|
||||||
// if ((itemEffect0_r0 != 0) && (itemEffect3 & mask) == 0)
|
|
||||||
#ifndef NONMATCHING
|
|
||||||
else if (((itemEffect0_r0 = itemEffect0 >> 7) != 0) && (itemEffect3 & mask) == 0)
|
|
||||||
#else
|
|
||||||
else if (((itemEffect[0] >> 7) != 0) && (itemEffect[3] & 0x3F) == 0)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
return 9;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 11;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x44)
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x2)
|
|
||||||
{
|
|
||||||
return 12;
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x1)
|
|
||||||
{
|
|
||||||
return 13;
|
|
||||||
}
|
|
||||||
else if (itemEffect[5] & 0x8)
|
|
||||||
{
|
|
||||||
return 14;
|
|
||||||
}
|
|
||||||
else if (itemEffect[5] & 0x4)
|
|
||||||
{
|
|
||||||
return 15;
|
|
||||||
}
|
|
||||||
else if (itemEffect[5] & 0x2)
|
|
||||||
{
|
|
||||||
return 16;
|
|
||||||
}
|
|
||||||
else if (itemEffect[5] & 0x1)
|
|
||||||
{
|
|
||||||
return 17;
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x80)
|
|
||||||
{
|
|
||||||
return 18;
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x20)
|
|
||||||
{
|
|
||||||
return 19;
|
|
||||||
}
|
|
||||||
else if (itemEffect[5] & 0x10)
|
|
||||||
{
|
|
||||||
return 20;
|
|
||||||
}
|
|
||||||
else if (itemEffect[4] & 0x18)
|
|
||||||
{
|
|
||||||
return 21;
|
|
||||||
}
|
|
||||||
return 22;
|
|
||||||
}
|
}
|
||||||
#ifdef NONMATCHING
|
|
||||||
#undef itemEffect0
|
if (itemEffect[4] & 0x44)
|
||||||
#undef itemEffect3
|
return 2;
|
||||||
#undef mask
|
else if (itemEffect[4] & 0x2)
|
||||||
#endif
|
return 12;
|
||||||
|
else if (itemEffect[4] & 0x1)
|
||||||
|
return 13;
|
||||||
|
else if (itemEffect[5] & 0x8)
|
||||||
|
return 14;
|
||||||
|
else if (itemEffect[5] & 0x4)
|
||||||
|
return 15;
|
||||||
|
else if (itemEffect[5] & 0x2)
|
||||||
|
return 16;
|
||||||
|
else if (itemEffect[5] & 0x1)
|
||||||
|
return 17;
|
||||||
|
else if (itemEffect[4] & 0x80)
|
||||||
|
return 18;
|
||||||
|
else if (itemEffect[4] & 0x20)
|
||||||
|
return 19;
|
||||||
|
else if (itemEffect[5] & 0x10)
|
||||||
|
return 20;
|
||||||
|
else if (itemEffect[4] & 0x18)
|
||||||
|
return 21;
|
||||||
|
else
|
||||||
|
return 22;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81B7E4C(u8 taskId)
|
static void sub_81B7E4C(u8 taskId)
|
||||||
|
|
Loading…
Reference in a new issue