Add this to DBCReader class public DBCRecord GetRecord(int row) { return m_List[row]; } for each of the gtXXX.dbc, replace foreach (DBCRecord record in dbcRdr.Records) { m_baseSpellCritChance[record.Id] = record.GetFloat(record.Id); } with this for (int i=0;i