diff options
Diffstat (limited to 'src/kecleon_items_1.c')
-rw-r--r-- | src/kecleon_items_1.c | 220 |
1 files changed, 203 insertions, 17 deletions
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index cd5df5b..c3e90b6 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -99,12 +99,204 @@ extern void sub_8013984(u8 *); extern void sub_801A064(void); extern void sub_801A0D8(void); extern void AddMenuCursorSprite(void *); -extern s32 xxx_count_inv_unk230(); extern u8 sub_801A37C(void); extern u16 gUnknown_203B228; extern u16 gUnknown_203B22A; extern struct UnkTextStruct2 gUnknown_80DB95C; +extern void sub_801A010(void); +extern void sub_801A3DC(void); +extern void sub_801AD34(u32); +extern void PlaySound(u16 songIndex); + +extern void xxx_init_inv_unk250_at_8091A74(u8 index); +extern void xxx_fill_inv_unk250_gaps_8091AA8(void); + +u32 sub_8019D8C(void); + +void sub_8019730(void) +{ + s32 local_8; + + if (sub_80144A4(&local_8) != 0) + return; + if (local_8 != 1) + gUnknown_203B210->unk28 = local_8; + switch(local_8) { + case 2: + if (sub_8019D8C() == 0) + UpdateKecleonStoreState(5); + else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) + UpdateKecleonStoreState(0xA); + else + UpdateKecleonStoreState(0xF); + break; + case 3: + if (GetNumberOfFilledInventorySlots() == 0) + UpdateKecleonStoreState(9); + else if (gUnknown_203B210->unk14 == 0) + UpdateKecleonStoreState(8); + else if (gTeamInventory_203B460->teamMoney < 99999) + UpdateKecleonStoreState(0x17); + else + UpdateKecleonStoreState(7); + break; + case 4: + if (GetNumberOfFilledInventorySlots() == 0) + UpdateKecleonStoreState(9); + else if (gUnknown_203B210->unk14 == 0) + UpdateKecleonStoreState(8); + else if (gUnknown_203B210->unk18 + gTeamInventory_203B460->teamMoney > 99999) + UpdateKecleonStoreState(7); + else + UpdateKecleonStoreState(0x1f); + break; + case 7: + UpdateKecleonStoreState(2); + break; + case 1: + UpdateKecleonStoreState(3); + break; + } +} + +void sub_8019850(void) +{ + s32 local_c; + + if (sub_80144A4(&local_c) == 0) { + switch(local_c) + { + case 5: + AddToTeamMoney(-gUnknown_203B210->itemSellPrice); + if (gUnknown_203B210->unk4 != '\0') { + AddHeldItemToInventory(xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20)); + xxx_init_unk230_substruct(gUnknown_203B210->unk20); + xxx_fill_unk230_gaps(); + } + else { + AddHeldItemToInventory(xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21)); + xxx_init_inv_unk250_at_8091A74(gUnknown_203B210->unk21); + xxx_fill_inv_unk250_gaps_8091AA8(); + } + PlaySound(0x14c); + UpdateKecleonStoreState(0x11); + break; + case 6: + case 1: + UpdateKecleonStoreState(0x10); + break; + } + } +} + +void sub_80198E8(void) +{ + s32 local_c; + + if (sub_80144A4(&local_c) == 0) { + switch(local_c) + { + case 5: + AddToTeamMoney(gUnknown_203B210->itemSellPrice); + ShiftItemsDownFrom(gUnknown_203B210->unk24); + PlaySound(0x14c); + UpdateKecleonStoreState(0x19); + break; + case 6: + case 1: + UpdateKecleonStoreState(0x18); + break; + } + } +} + +void sub_8019944(void) +{ + s32 slotIndex; + s32 local_10; + struct ItemSlot *itemSlot; + + if (sub_80144A4(&local_10) == 0) { + switch(local_10) + { + case 5: + for(slotIndex = 0; slotIndex < INVENTORY_SIZE; slotIndex++) + { + itemSlot = &gTeamInventory_203B460->teamItems[slotIndex]; + if ((itemSlot->itemFlags & ITEM_FLAG_EXISTS) && CanSellItem(itemSlot->itemIndex)) { + ClearItemSlotAt(slotIndex); + } + } + FillInventoryGaps(); + AddToTeamMoney(gUnknown_203B210->unk18); + PlaySound(0x14c); + UpdateKecleonStoreState(0x20); + break; + case 1: + case 6: + UpdateKecleonStoreState(1); + break; + } + } +} + +void sub_80199CC(void) +{ + u32 uVar2; + struct HeldItem *puVar3; + + if (gUnknown_203B210->unk4 != '\0') { + uVar2 = sub_8019EDC(1); + } + else { + uVar2 = sub_801A2A8(1); + } + + switch(uVar2) + { + case 3: + if (gUnknown_203B210->unk4) { + gUnknown_203B210->unk20 = sub_8019FB0(); + puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20); + } + else { + gUnknown_203B210->unk21 = sub_801A37C(); + puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21); + } + xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0); + gUnknown_203B210->unk1C.numItems =puVar3->numItems; + gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C); + UpdateKecleonStoreState(0x14); + break; + case 4: + if (gUnknown_203B210->unk4) { + gUnknown_203B210->unk20 = sub_8019FB0(); + puVar3 = xxx_get_inv_unk230_at_809185C(gUnknown_203B210->unk20); + } + else { + gUnknown_203B210->unk21 = sub_801A37C(); + puVar3 = xxx_get_unk250_at_8091A90(gUnknown_203B210->unk21); + } + xxx_init_itemslot_8090A8C(&gUnknown_203B210->unk1C,puVar3->itemIndex,0); + gUnknown_203B210->unk1C.numItems = puVar3->numItems; + gUnknown_203B210->itemSellPrice = GetStackBuyPrice(&gUnknown_203B210->unk1C); + UpdateKecleonStoreState(0x15); + break; + case 2: + if (gUnknown_203B210->unk4) + sub_801A010(); + else + sub_801A3DC(); + UpdateKecleonStoreState(1); + break; + case 1: + sub_801AD34(0); + DrawTeamMoneyBox(1); + break; + } +} + void sub_8019B08(void) { switch(sub_801A6E8(1)) @@ -151,15 +343,12 @@ void sub_8019BBC(void) } switch(menuAction){ case 2: - if (gTeamInventory_203B460->teamMoney == 0) { + if (gTeamInventory_203B460->teamMoney == 0) UpdateKecleonStoreState(0x6); - } - else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney) { + else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney) UpdateKecleonStoreState(0xC); - } - else { + else UpdateKecleonStoreState(0x16); - } break; case 7: UpdateKecleonStoreState(0x15); @@ -182,15 +371,12 @@ void sub_8019C78(void) switch(menuAction){ case 3: sub_8099690(0); - if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex)) { + if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex)) UpdateKecleonStoreState(0xd); - } - else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999) { + else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999) UpdateKecleonStoreState(0xe); - } - else { + else UpdateKecleonStoreState(0x1e); - } break; case 7: sub_8099690(0); @@ -253,15 +439,15 @@ u32 sub_8019D8C(void) void sub_8019DAC(void) { s32 iVar3; - struct ItemSlot *pbVar4; + struct ItemSlot *itemSlot; s32 iVar5; gUnknown_203B210->unk14 = 0; gUnknown_203B210->unk18 = 0; for(iVar5 = 0; iVar5 < INVENTORY_SIZE; iVar5++){ - pbVar4 = &gTeamInventory_203B460->teamItems[iVar5]; - if (((pbVar4->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(pbVar4->itemIndex))) { - iVar3 = GetStackSellPrice(pbVar4); + itemSlot = &gTeamInventory_203B460->teamItems[iVar5]; + if (((itemSlot->itemFlags & ITEM_FLAG_EXISTS) != 0) && (CanSellItem(itemSlot->itemIndex))) { + iVar3 = GetStackSellPrice(itemSlot); gUnknown_203B210->unk18 += iVar3; gUnknown_203B210->unk14++; } |