D2Structs.h
struct ItemData {
...
WORD wRarePrefix; //0x32
WORD wRareSuffix; //0x34
WORD wAutoPrefix; //0x36
WORD wPrefix[3]; //0x38
WORD wSuffix[3]; //0x3E
...
};
It's used here for instance:
item/ItemDisplay.cpp
line 2903: if ((itemData->wPrefix[0] - PREFIX_OFFSET > 0) ? IntegerCompare(itemData->wPrefix[0] - PREFIX_OFFSET, operation, prefixID1, prefixID2) : false)
The PREFIX_OFFSET is initialised here:
item/Item.cpp
line 637
void GetAffixOffsets()
{
D2MagicAffixDataTbl* pMagicAffixInfo = D2COMMON_10492_DATATBLS_GetMagicAffixDataTables();
PREFIX_OFFSET = ((int)pMagicAffixInfo->pMagicPrefix - (int)pMagicAffixInfo->pMagicAffixTxt) / sizeof(AutoMagicTxt);
AUTOMOD_OFFSET = ((int)pMagicAffixInfo->pAutoMagic - (int)pMagicAffixInfo->pMagicAffixTxt) / sizeof(AutoMagicTxt);
}
D2DataTables.h
struct D2MagicAffixDataTbl //sgptDataTable + 0xEC8
{
int nMagicAffixTxtRecordCount; //0x00
AutoMagicTxt* pMagicAffixTxt; //0x04
AutoMagicTxt* pMagicSuffix; //0x08
AutoMagicTxt* pMagicPrefix; //0x0C
AutoMagicTxt* pAutoMagic; //0x10
};