#pragma once #ifndef _ITEMDB_H_ #define _ITEMDB_H_ // ItemTypes enum ITEM_TYPE { ITEM_TYPE_NORMAL = 0, //Card, special, heal, event ITEM_TYPE_ARROW, //Arrow, ammo, Throwweapon ITEM_TYPE_EQUIP, //Armor, weapon, twohandweapon, gun ITEM_TYPE_PET, //-> used for eggs to store informations in serial/card slots.; ITEM_TYPE_QUEST, //guest ITEM_TYPE_UNKNOWN, }; // Item States (required to decide wich equipitem structure!) enum ITEM_STATE{ ITEMSTATE_UNKNOWN = 0x00, ITEMSTATE_IDENTIFIED, ITEMSTATE_UNKNOWN_SERIAL = 0x40, ITEMSTATE_IDENTIFIED_SERIAL, }; struct itemDB_Entry_S{ unsigned int ID; //char Name[25]; enum ITEM_TYPE type; }; typedef struct itemDB_Entry_S itemDB_Entry; // 00 00 // #pragma pack(1) //Normal Item struct Item_Normal_S{ UINT16 ItemID; UINT8 IsIdentified; UINT16 count; UINT16 slot[4]; }; typedef struct Item_Normal_S IData_Normal; //Arrow Item struct Item_Arrow_S{ UINT16 ItemID; UINT8 IsIdentified; UINT16 count; UINT16 WearState; }; typedef struct Item_Arrow_S IData_Arrow; // EQUIP Item // EGG (PET) // It depends on the ItemState,... struct Item_Equip_Base_S{ UINT16 ItemID; UINT8 ItemState; //0x00, 0x01 [Not Identified, Identified - without Serial], 0x40, 0x41 [Not Identified, Identified - with Serial] }; typedef struct Item_Equip_Base_S IData_Equip_Base; struct Item_Equip_Main_S{ UINT16 ItemID; UINT8 ItemState; UINT16 WearState; UINT8 IsDamaged; UINT8 RefiningLevel; UINT16 slot[4]; }; typedef struct Item_Equip_Main_S IData_Equip_Main; struct Item_Equip_MainSerial_S{ UINT16 ItemID; UINT8 ItemState; UINT16 WearState; UINT8 IsDamaged; UINT8 RefiningLevel; UINT16 slot[4]; UINT32 serial[2]; }; typedef struct Item_Equip_MainSerial_S IData_Equip_MainSerial; struct Item_Quest_S{ UINT16 ItemID; UINT16 count; }; typedef struct Item_Quest_S IData_Quest; #pragma pack() enum ITEM_TYPE ItemID2Type(unsigned int ID); void itemDB_init(); void itemDB_final(); #endif