mirror of
https://github.com/pret/pmd-red.git
synced 2026-03-21 17:46:39 -05:00
147 lines
4.3 KiB
C
147 lines
4.3 KiB
C
#ifndef GUARD_ITEMS_H
|
|
#define GUARD_ITEMS_H
|
|
|
|
#include "data_serializer.h"
|
|
#include "structs/str_items.h"
|
|
#include "structs/str_pokemon.h"
|
|
#include "structs/str_status_text.h"
|
|
|
|
extern ItemDataEntry *gItemParametersData;
|
|
extern TeamInventory *gTeamInventoryRef;
|
|
|
|
#define ITEM_SETS_RANDOM_CAP 9999
|
|
#define ITEM_SETS_SKIP_NUMBER 30000
|
|
enum
|
|
{
|
|
RANDOM_ITEMS_SET_1 = 1,
|
|
RANDOM_ITEMS_SET_2,
|
|
RANDOM_ITEMS_SET_3,
|
|
RANDOM_ITEMS_SET_4,
|
|
RANDOM_ITEMS_SET_5,
|
|
RANDOM_ITEMS_SET_6,
|
|
RANDOM_ITEMS_SET_7,
|
|
RANDOM_ITEMS_SET_8,
|
|
RANDOM_ITEMS_SET_9,
|
|
RANDOM_ITEMS_SET_10,
|
|
RANDOM_ITEMS_SET_11,
|
|
RANDOM_ITEMS_SET_12,
|
|
RANDOM_ITEMS_SET_13,
|
|
RANDOM_ITEMS_SET_14,
|
|
RANDOM_ITEMS_SET_15,
|
|
RANDOM_ITEMS_SET_KECLEON_SHOP_1,
|
|
RANDOM_ITEMS_SET_KECLEON_WARES_1,
|
|
RANDOM_ITEMS_SET_KECLEON_SHOP_2,
|
|
RANDOM_ITEMS_SET_KECLEON_WARES_2,
|
|
RANDOM_ITEMS_SET_KECLEON_SHOP_3,
|
|
RANDOM_ITEMS_SET_KECLEON_WARES_3,
|
|
RANDOM_ITEMS_SET_KECLEON_SHOP_4,
|
|
RANDOM_ITEMS_SET_KECLEON_WARES_4,
|
|
RANDOM_ITEMS_SET_24,
|
|
RANDOM_ITEMS_SET_25,
|
|
RANDOM_ITEMS_SET_26,
|
|
};
|
|
|
|
void LoadItemParameters(void);
|
|
TeamInventory *GetMoneyItemsInfo(void);
|
|
void InitializeMoneyItems(void);
|
|
s32 GetNumberOfFilledInventorySlots(void);
|
|
bool8 IsThrownItem(u8 id);
|
|
void ItemIdToItem(Item *item, u8 id, bool8 makeSticky);
|
|
void InitBulkItem(BulkItem *dst, u8 id);
|
|
void BulkItemToItem(Item *dst, BulkItem *src);
|
|
void ItemToBulkItem(BulkItem *dst, Item *src);
|
|
u8 GetItemCategory(u8 index);
|
|
s32 GetStackBuyValue(Item *param_1);
|
|
s32 GetStackSellValue(Item *param_1);
|
|
s32 GetActualBuyPrice(Item *param_1);
|
|
s32 GetActualSellPrice(Item *param_1);
|
|
s32 GetItemBuyPrice(u8 id);
|
|
s32 GetItemSellPrice(u8 id);
|
|
s32 GetItemOrder(u8 id);
|
|
s32 GetItemPalette(u8 id);
|
|
u32 GetItemActionType(u8 id);
|
|
u32 GetThrownItemQuantityLimit(u8 id, u32 r1);
|
|
u8 *GetItemDescription(u8 id);
|
|
bool8 TestItemAIFlag(u8 id, u32 aiFlag);
|
|
void BufferItemName(u8 *, u8 id, unkStruct_8090F58 *);
|
|
void sub_8090E14(u8 *ext_buffer, Item *slot, const unkStruct_8090F58 *);
|
|
bool8 AddItemToInventory(const Item* slot);
|
|
void ConvertMoneyItemToMoney();
|
|
void AddToTeamMoney(s32 amount);
|
|
u32 GetMoneyValue(Item* slot);
|
|
u16 GetItemMoveID(u8 index);
|
|
bool8 IsShoppableItem(u32 id);
|
|
bool8 IsGummiItem(u8);
|
|
void ShiftItemsDownFrom(s32 start);
|
|
void ClearItemSlotAt(u32 index);
|
|
void MoveToStorage(Item *slot);
|
|
s32 CountKecleonShopItems(void);
|
|
void InitKecleonShopItem(u8 index);
|
|
BulkItem *GetKecleonShopItem(u8 index);
|
|
void FillKecleonShopGaps(void);
|
|
void ChooseKecleonShopInventory(u8 index);
|
|
bool8 AddKecleonShopItem(u8 itemIndex);
|
|
u32 CountKecleonWareItems(void);
|
|
void InitKecleonWareItem(u8 index);
|
|
BulkItem* GetKecleonWareItem(u8 index);
|
|
void FillKecleonWareGaps(void);
|
|
void SortKecleonWareInventory(void);
|
|
void ChooseKecleonWareInventory(u8 index);
|
|
void FillInventoryGaps(void);
|
|
bool8 AddItemIdToInventory(u8 id, bool8 makeSticky);
|
|
bool8 AddHeldItemToInventory(BulkItem* slot);
|
|
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
|
bool8 IsNotSpecialItem(u8 id);
|
|
s32 FindItemInInventory(u8 id);
|
|
bool8 IsHMItem(u8 id);
|
|
bool8 IsEdibleItem(u8 id);
|
|
u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1);
|
|
bool8 HasGummiItem(void);
|
|
void GetGummiItemStatBoost(Pokemon* pokemon, u8 id, bool8 checkBoostFlags, Gummi *gummi);
|
|
void ReadHeldItemBits(DataSerializer *, BulkItem *);
|
|
void WriteHeldItemBits(DataSerializer *, BulkItem *);
|
|
void ReadItemSlotBits(DataSerializer *, Item *);
|
|
void WriteItemSlotBits(DataSerializer *, Item *);
|
|
s32 RestoreTeamInventory(u8 *, u32 size);
|
|
s32 SaveTeamInventory(u8 *, u32 size);
|
|
s32 GetItemPossessionCount(u8 id);
|
|
s32 WriteHighDecimal(s32, u8 *strbuf, u8);
|
|
u32 sub_80913E0(Item* slot, u32 windowId, STATUSTEXTS(statuses));
|
|
u8 GetRandomItemForSet(s32 a0, s32 a1, s32 a2);
|
|
void ClearAllItems_8091FB4(void);
|
|
bool8 IsInvalidItemReward(u8 itemID);
|
|
|
|
static inline void ZeroOutItem(Item *item)
|
|
{
|
|
item->id = 0;
|
|
item->quantity = 0;
|
|
item->flags = 0;
|
|
}
|
|
|
|
static inline bool8 ItemSticky(Item *item)
|
|
{
|
|
return (item->flags & ITEM_FLAG_STICKY);
|
|
}
|
|
|
|
static inline bool8 ItemExists(Item *item)
|
|
{
|
|
return (item->flags & ITEM_FLAG_EXISTS) != 0; // != 0 is necessary for Blue matching
|
|
}
|
|
|
|
static inline bool8 ItemSet(Item *item)
|
|
{
|
|
return (item->flags & ITEM_FLAG_SET);
|
|
}
|
|
|
|
static inline bool8 ItemInShop(Item *item)
|
|
{
|
|
return (item->flags & ITEM_FLAG_IN_SHOP);
|
|
}
|
|
|
|
static inline bool8 BulkItemExists(BulkItem *item)
|
|
{
|
|
return item->id != 0;
|
|
}
|
|
|
|
#endif // GUARD_ITEMS_H
|