public void FileRead(MpqFileStream stream, long offset)
 {
     stream.Position = offset + 12;
     Type = stream.ReadValueS32();
     stream.Position = offset + 16;
     Gbi = stream.ReadString(256);
     stream.Position = offset + 272;
     Xls = stream.ReadString(256);
     stream.Position = offset + 528;
     Field3 = stream.ReadValueS32();
     stream.Position = offset + 532;
     Field4 = stream.ReadValueS32();
     stream.Position = offset + 536;
     ItemType = new Items2();
     ItemType.FileRead(stream, stream.Position);
     stream.Position = offset + 552;
     Item = new Items();
     Item.FileRead(stream, stream.Position);
     stream.Position = offset + 568;
     Experience = new ExperienceTable();
     Experience.FileRead(stream, stream.Position);
     stream.Position = offset + 584;
     HelpCodes = new HelpCodes2();
     HelpCodes.FileRead(stream, stream.Position);
     stream.Position = offset + 600;
     MonsterLevel = new MonsterLevelTable();
     MonsterLevel.FileRead(stream, stream.Position);
     stream.Position = offset + 632;
     Heros = new Heros();
     Heros.FileRead(stream, stream.Position);
     stream.Position = offset + 648;
     MovementStyles = new MovementStyles();
     MovementStyles.FileRead(stream, stream.Position);
     stream.Position = offset + 664;
     Labels = new Labels();
     Labels.FileRead(stream, stream.Position);
     stream.Position = offset + 616;
     Affixes = new AffixTable();
     Affixes.FileRead(stream, stream.Position);
     stream.Position = offset + 680;
     LootDistribution = new LootDistributionTable();
     LootDistribution.FileRead(stream, stream.Position);
     stream.Position = offset + 696;
     RareItemNames = new RareItemNamesTable();
     RareItemNames.FileRead(stream, stream.Position);
     stream.Position = offset + 712;
     MonsterAffixes = new MonsterAffixesTable();
     MonsterAffixes.FileRead(stream, stream.Position);
     stream.Position = offset + 728;
     RareMonsterNames = new RareMonsterNamesTable();
     RareMonsterNames.FileRead(stream, stream.Position);
     stream.Position = offset + 744;
     SocketedEffects = new SocketedEffectsTable();
     SocketedEffects.FileRead(stream, stream.Position);
     stream.Position = offset + 760;
     ItemEnhancement = new ItemEnhancementTable();
     ItemEnhancement.FileRead(stream, stream.Position);
     stream.Position = offset + 776;
     ItemDropTable = new ItemDropTable();
     ItemDropTable.FileRead(stream, stream.Position);
     stream.Position = offset + 792;
     ItemLevelModifiers = new ItemLevelModTable();
     ItemLevelModifiers.FileRead(stream, stream.Position);
     stream.Position = offset + 808;
     QualityClasses = new QualityClassTable();
     QualityClasses.FileRead(stream, stream.Position);
     stream.Position = offset + 824;
     Hirelings = new Hirelings();
     Hirelings.FileRead(stream, stream.Position);
     stream.Position = offset + 840;
     SetItemBonus = new SetItemBonusTable();
     SetItemBonus.FileRead(stream, stream.Position);
     stream.Position = offset + 856;
     EliteModifiers = new EliteModifiers();
     EliteModifiers.FileRead(stream, stream.Position);
     stream.Position = offset + 872;
     ItemTiers = new ItemTiers();
     ItemTiers.FileRead(stream, stream.Position);
     stream.Position = offset + 888;
     PowerFormula = new PowerFormulaTable();
     PowerFormula.FileRead(stream, stream.Position);
     stream.Position = offset + 904;
     Recipes = new RecipesTable();
     Recipes.FileRead(stream, stream.Position);
     stream.Position = offset + 920;
     ScriptedAchievementEvents = new ScriptedAchievementEventsTable();
     ScriptedAchievementEvents.FileRead(stream, stream.Position);
 }