public override void Parse(GameBitBuffer buffer)
 {
     Type = buffer.ReadInt(32);
     Gbi = buffer.ReadCharArray(256);
     Xls = buffer.ReadCharArray(256);
     Field3 = buffer.ReadInt(32);
     Field4 = buffer.ReadInt(32);
     ItemType = new Items2();
     ItemType.Parse(buffer);
     Item = new Items();
     Item.Parse(buffer);
     Experience = new ExperienceTable();
     Experience.Parse(buffer);
     HelpCodes = new HelpCodes2();
     HelpCodes.Parse(buffer);
     MonsterLevel = new MonsterLevelTable();
     MonsterLevel.Parse(buffer);
     Heros = new Heros();
     Heros.Parse(buffer);
     MovementStyles = new MovementStyles();
     MovementStyles.Parse(buffer);
     Labels = new Labels();
     Labels.Parse(buffer);
     Affixes = new AffixTable();
     Affixes.Parse(buffer);
     LootDistribution = new LootDistributionTable();
     LootDistribution.Parse(buffer);
     RareItemNames = new RareItemNamesTable();
     RareItemNames.Parse(buffer);
     MonsterAffixes = new MonsterAffixesTable();
     MonsterAffixes.Parse(buffer);
     RareMonsterNames = new RareMonsterNamesTable();
     RareMonsterNames.Parse(buffer);
     SocketedEffects = new SocketedEffectsTable();
     SocketedEffects.Parse(buffer);
     ItemEnhancement = new ItemEnhancementTable();
     ItemEnhancement.Parse(buffer);
     ItemDropTable = new ItemDropTable();
     ItemDropTable.Parse(buffer);
     ItemLevelModifiers = new ItemLevelModTable();
     ItemLevelModifiers.Parse(buffer);
     QualityClasses = new QualityClassTable();
     QualityClasses.Parse(buffer);
     Hirelings = new Hirelings();
     Hirelings.Parse(buffer);
     SetItemBonus = new SetItemBonusTable();
     SetItemBonus.Parse(buffer);
     EliteModifiers = new EliteModifiers();
     EliteModifiers.Parse(buffer);
     ItemTiers = new ItemTiers();
     ItemTiers.Parse(buffer);
     PowerFormula = new PowerFormulaTable();
     PowerFormula.Parse(buffer);
     Recipes = new RecipesTable();
     Recipes.Parse(buffer);
     ScriptedAchievementEvents = new ScriptedAchievementEventsTable();
     ScriptedAchievementEvents.Parse(buffer);
 }
 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);
 }