public override void Parse(GameBitBuffer buffer)
 {
     QuestType = buffer.ReadInt(2);
     NumberOfSteps = buffer.ReadInt(32);
     NumberOfCompletionSteps = buffer.ReadInt(32);
     Field3 = buffer.ReadInt(32);
     Field4 = new QuestUnassignedStep();
     Field4.Parse(buffer);
     serQuestSteps = new SerializeData();
     serQuestSteps.Parse(buffer);
     //still checking variablearrays
     this.QuestSteps = new List<QuestStep>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _QuestSteps.Count; loop12++)
     {
         _QuestSteps[loop12] = new QuestStep();
         _QuestSteps[loop12].Parse(buffer);
     }
     serQuestCompletionSteps = new SerializeData();
     serQuestCompletionSteps.Parse(buffer);
     //still checking variablearrays
     this.QuestCompletionSteps = new List<QuestCompletionStep>( buffer.ReadInt(0) );
     for(int loop12 = 0; loop12 < _QuestCompletionSteps.Count; loop12++)
     {
         _QuestCompletionSteps[loop12] = new QuestCompletionStep();
         _QuestCompletionSteps[loop12].Parse(buffer);
     }
     Field9 = buffer.ReadInt(32);
     Field10 = buffer.ReadInt(32);
     Field11 = buffer.ReadInt(32);
     LevelRange1 = new QuestLevelRange();
     LevelRange1.Parse(buffer);
     LevelRange2 = new QuestLevelRange();
     LevelRange2.Parse(buffer);
     LevelRange3 = new QuestLevelRange();
     LevelRange3.Parse(buffer);
     LevelRange4 = new QuestLevelRange();
     LevelRange4.Parse(buffer);
 }
 public void FileRead(MpqFileStream stream, long offset)
 {
     stream.Position = offset + 12;
     _QuestType = stream.ReadValueS32();
     stream.Position = offset + 16;
     NumberOfSteps = stream.ReadValueS32();
     stream.Position = offset + 20;
     NumberOfCompletionSteps = stream.ReadValueS32();
     stream.Position = offset + 24;
     Field3 = stream.ReadValueS32();
     stream.Position = offset + 40;
     Field4 = new QuestUnassignedStep();
     Field4.FileRead(stream, stream.Position);
     stream.Position = offset + 88;
     serQuestSteps = new SerializeData();
     serQuestSteps.FileRead(stream, stream.Position);
     stream.Position = offset + 80;
     //still checking variablearrays
     QuestSteps = new List<QuestStep>();
     for(int i = 0; i < (int)(serQuestSteps.Field1 / 224); i++)
     {
     stream.Position = serQuestSteps.Field0 + 16 + (224*i) ;
         QuestStep temp12_QuestSteps;
         temp12_QuestSteps = new QuestStep();
         temp12_QuestSteps.FileRead(stream, stream.Position);
         _QuestSteps.Add(temp12_QuestSteps);
     }
     stream.Position = offset + 104;
     serQuestCompletionSteps = new SerializeData();
     serQuestCompletionSteps.FileRead(stream, stream.Position);
     stream.Position = offset + 96;
     //still checking variablearrays
     QuestCompletionSteps = new List<QuestCompletionStep>();
     for(int i = 0; i < (int)(serQuestCompletionSteps.Field1 / 72); i++)
     {
     stream.Position = serQuestCompletionSteps.Field0 + 16 + (72*i) ;
         QuestCompletionStep temp12_QuestCompletionSteps;
         temp12_QuestCompletionSteps = new QuestCompletionStep();
         temp12_QuestCompletionSteps.FileRead(stream, stream.Position);
         _QuestCompletionSteps.Add(temp12_QuestCompletionSteps);
     }
     stream.Position = offset + 28;
     Field9 = stream.ReadValueS32();
     stream.Position = offset + 32;
     Field10 = stream.ReadValueS32();
     stream.Position = offset + 36;
     Field11 = stream.ReadValueS32();
     stream.Position = offset + 112;
     LevelRange1 = new QuestLevelRange();
     LevelRange1.FileRead(stream, stream.Position);
     stream.Position = offset + 120;
     LevelRange2 = new QuestLevelRange();
     LevelRange2.FileRead(stream, stream.Position);
     stream.Position = offset + 128;
     LevelRange3 = new QuestLevelRange();
     LevelRange3.FileRead(stream, stream.Position);
     stream.Position = offset + 136;
     LevelRange4 = new QuestLevelRange();
     LevelRange4.FileRead(stream, stream.Position);
 }