Beispiel #1
0
 public DestructionStage(DestructionStageData StageData, SimpleSubrecord <String> ModelFilename, SimpleSubrecord <Byte[]> ModelTextureHash, SubMarker EndMarker)
 {
     this.StageData        = StageData;
     this.ModelFilename    = ModelFilename;
     this.ModelTextureHash = ModelTextureHash;
     this.EndMarker        = EndMarker;
 }
Beispiel #2
0
 public ReferencePatrolData(SimpleSubrecord <Single> IdleTime, SubMarker ScriptMarker, RecordReference Idle, EmbeddedScript Script, RecordReference Topic)
 {
     this.IdleTime     = IdleTime;
     this.ScriptMarker = ScriptMarker;
     this.Idle         = Idle;
     this.Script       = Script;
     this.Topic        = Topic;
 }
 public FaceGenData()
 {
     Marker             = new SubMarker();
     GeometrySymmetric  = new SimpleSubrecord <Byte[]>();
     GeometryAsymmetric = new SimpleSubrecord <Byte[]>();
     TextureSymmetric   = new SimpleSubrecord <Byte[]>();
     Unknown            = new SimpleSubrecord <Byte[]>();
 }
Beispiel #4
0
 public PerkEffect(PerkEffectHeader Header, SimpleSubrecord <Byte[]> EffectData, List <PerkCondition> Conditions, SimpleSubrecord <EntryPointFunctionType> EntryPointFunctionType, SimpleSubrecord <Byte[]> EntryPointFunctionData, SimpleSubrecord <String> ButtonLabel, SimpleSubrecord <NoYesShort> RunImmediately, EmbeddedScript Script, SubMarker EndMarker)
 {
     this.Header                 = Header;
     this.EffectData             = EffectData;
     this.Conditions             = Conditions;
     this.EntryPointFunctionType = EntryPointFunctionType;
     this.EntryPointFunctionData = EntryPointFunctionData;
     this.ButtonLabel            = ButtonLabel;
     this.RunImmediately         = RunImmediately;
     this.Script                 = Script;
     this.EndMarker              = EndMarker;
 }
Beispiel #5
0
        public override void ReadXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("IdleTime", false, out subEle))
            {
                if (IdleTime == null)
                {
                    IdleTime = new SimpleSubrecord <Single>();
                }

                IdleTime.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ScriptMarker", false, out subEle))
            {
                if (ScriptMarker == null)
                {
                    ScriptMarker = new SubMarker();
                }

                ScriptMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Idle", false, out subEle))
            {
                if (Idle == null)
                {
                    Idle = new RecordReference();
                }

                Idle.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new EmbeddedScript();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Topic", false, out subEle))
            {
                if (Topic == null)
                {
                    Topic = new RecordReference();
                }

                Topic.ReadXML(subEle, master);
            }
        }
        public override void ReadBinary(ESPReader reader)
        {
            List <string> readTags = new List <string>();

            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "NEXT":
                    if (readTags.Contains("NEXT"))
                    {
                        return;
                    }
                    if (EndScriptMarker == null)
                    {
                        EndScriptMarker = new SubMarker();
                    }

                    EndScriptMarker.ReadBinary(reader);
                    break;

                case "SCHR":
                    if (readTags.Contains("SCHR"))
                    {
                        return;
                    }
                    if (EmbeddedScript == null)
                    {
                        EmbeddedScript = new EmbeddedScript();
                    }

                    EmbeddedScript.ReadBinary(reader);
                    break;

                default:
                    return;
                }

                readTags.Add(subTag);
            }
        }
Beispiel #7
0
 public Race()
 {
     EditorID          = new SimpleSubrecord <String>("EDID");
     Description       = new SimpleSubrecord <String>("DESC");
     Data              = new RaceData("DATA");
     UnknownMarker     = new SubMarker("NAM2");
     DefaultVoices     = new RaceDefaultVoices("VTCK");
     DefaultHairStyles = new RaceDefaultHairStyles("DNAM");
     DefaultHairColors = new RaceDefaultHairColors("CNAM");
     FaceGenMainClamp  = new SimpleSubrecord <Single>("PNAM");
     FaceGenFaceClamp  = new SimpleSubrecord <Single>("UNAM");
     Unknown           = new SimpleSubrecord <Byte[]>("ATTR");
     HeadData          = new RaceHeadData();
     BodyData          = new RaceBodyData();
     Hairs             = new FormArray("HNAM");
     Eyes              = new FormArray("ENAM");
     MaleFaceGenData   = new FaceGenData();
     FemaleFaceGenData = new FaceGenData();
 }
Beispiel #8
0
        public override void ReadXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("StageData", false, out subEle))
            {
                if (StageData == null)
                {
                    StageData = new DestructionStageData();
                }

                StageData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ModelFilename", false, out subEle))
            {
                if (ModelFilename == null)
                {
                    ModelFilename = new SimpleSubrecord <String>();
                }

                ModelFilename.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ModelTextureHash", false, out subEle))
            {
                if (ModelTextureHash == null)
                {
                    ModelTextureHash = new SimpleSubrecord <Byte[]>();
                }

                ModelTextureHash.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EndMarker", false, out subEle))
            {
                if (EndMarker == null)
                {
                    EndMarker = new SubMarker();
                }

                EndMarker.ReadXML(subEle, master);
            }
        }
        public override void ReadXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EndScriptMarker", false, out subEle))
            {
                if (EndScriptMarker == null)
                {
                    EndScriptMarker = new SubMarker();
                }

                EndScriptMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EmbeddedScript", false, out subEle))
            {
                if (EmbeddedScript == null)
                {
                    EmbeddedScript = new EmbeddedScript();
                }

                EmbeddedScript.ReadXML(subEle, master);
            }
        }
Beispiel #10
0
 public Race(SimpleSubrecord <String> EditorID, SimpleSubrecord <String> Name, SimpleSubrecord <String> Description, List <Relationship> Relationships, RaceData Data, RecordReference OlderRace, RecordReference YoungerRace, SubMarker UnknownMarker, RaceDefaultVoices DefaultVoices, RaceDefaultHairStyles DefaultHairStyles, RaceDefaultHairColors DefaultHairColors, SimpleSubrecord <Single> FaceGenMainClamp, SimpleSubrecord <Single> FaceGenFaceClamp, SimpleSubrecord <Byte[]> Unknown, RaceHeadData HeadData, RaceBodyData BodyData, FormArray Hairs, FormArray Eyes, FaceGenData MaleFaceGenData, FaceGenData FemaleFaceGenData)
 {
     this.EditorID          = EditorID;
     this.Description       = Description;
     this.Data              = Data;
     this.UnknownMarker     = UnknownMarker;
     this.DefaultVoices     = DefaultVoices;
     this.DefaultHairStyles = DefaultHairStyles;
     this.DefaultHairColors = DefaultHairColors;
     this.FaceGenMainClamp  = FaceGenMainClamp;
     this.FaceGenFaceClamp  = FaceGenFaceClamp;
     this.Unknown           = Unknown;
     this.HeadData          = HeadData;
     this.BodyData          = BodyData;
     this.Hairs             = Hairs;
     this.Eyes              = Eyes;
     this.MaleFaceGenData   = MaleFaceGenData;
     this.FemaleFaceGenData = FemaleFaceGenData;
 }
Beispiel #11
0
 public GenderHeadData()
 {
     Marker = new SubMarker();
 }
Beispiel #12
0
 public PlacedCreature(SimpleSubrecord <String> EditorID, RecordReference Base, RecordReference EncounterZone, SimpleSubrecord <Byte[]> RagdollData, SimpleSubrecord <Byte[]> RagdollBipedData, ReferencePatrolData Patrol, SimpleSubrecord <Int32> LevelModifier, RecordReference Owner, SimpleSubrecord <Int32> FactionRank, RecordReference MerchantContainer, SimpleSubrecord <Int32> Count, SimpleSubrecord <Single> Radius, SimpleSubrecord <Single> Health, List <SimpleSubrecord <Byte[]> > Decals, RecordReference LinkedReference, LinkedReferenceColor LinkedReferenceColor, SimpleSubrecord <NoYesByte> ParentActivateOnly, List <ActivateParent> ActivateParents, SimpleSubrecord <String> ActivationPrompt, EnableParent EnableParent, RecordReference Emittance, RecordReference MultiBound, SubMarker IgnoredBySandbox, SimpleSubrecord <Single> Scale, PositionRotation PositionRotation)
 {
 }
Beispiel #13
0
 public ReferenceAudio()
 {
     Marker = new SubMarker();
 }
Beispiel #14
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "NAME":
                    if (Base == null)
                    {
                        Base = new RecordReference();
                    }

                    Base.ReadBinary(reader);
                    break;

                case "XEZN":
                    if (EncounterZone == null)
                    {
                        EncounterZone = new RecordReference();
                    }

                    EncounterZone.ReadBinary(reader);
                    break;

                case "XRGD":
                    if (RagdollData == null)
                    {
                        RagdollData = new SimpleSubrecord <Byte[]>();
                    }

                    RagdollData.ReadBinary(reader);
                    break;

                case "XRGB":
                    if (RagdollBipedData == null)
                    {
                        RagdollBipedData = new SimpleSubrecord <Byte[]>();
                    }

                    RagdollBipedData.ReadBinary(reader);
                    break;

                case "XPRD":
                    if (Patrol == null)
                    {
                        Patrol = new ReferencePatrolData();
                    }

                    Patrol.ReadBinary(reader);
                    break;

                case "XLCM":
                    if (LevelModifier == null)
                    {
                        LevelModifier = new SimpleSubrecord <Int32>();
                    }

                    LevelModifier.ReadBinary(reader);
                    break;

                case "XOWN":
                    if (Owner == null)
                    {
                        Owner = new RecordReference();
                    }

                    Owner.ReadBinary(reader);
                    break;

                case "XRNK":
                    if (FactionRank == null)
                    {
                        FactionRank = new SimpleSubrecord <Int32>();
                    }

                    FactionRank.ReadBinary(reader);
                    break;

                case "XMRC":
                    if (MerchantContainer == null)
                    {
                        MerchantContainer = new RecordReference();
                    }

                    MerchantContainer.ReadBinary(reader);
                    break;

                case "XCNT":
                    if (Count == null)
                    {
                        Count = new SimpleSubrecord <Int32>();
                    }

                    Count.ReadBinary(reader);
                    break;

                case "XRDS":
                    if (Radius == null)
                    {
                        Radius = new SimpleSubrecord <Single>();
                    }

                    Radius.ReadBinary(reader);
                    break;

                case "XHLP":
                    if (Health == null)
                    {
                        Health = new SimpleSubrecord <Single>();
                    }

                    Health.ReadBinary(reader);
                    break;

                case "XDCR":
                    if (Decals == null)
                    {
                        Decals = new List <SimpleSubrecord <Byte[]> >();
                    }

                    SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>();
                    tempXDCR.ReadBinary(reader);
                    Decals.Add(tempXDCR);
                    break;

                case "XLKR":
                    if (LinkedReference == null)
                    {
                        LinkedReference = new RecordReference();
                    }

                    LinkedReference.ReadBinary(reader);
                    break;

                case "XCLP":
                    if (LinkedReferenceColor == null)
                    {
                        LinkedReferenceColor = new LinkedReferenceColor();
                    }

                    LinkedReferenceColor.ReadBinary(reader);
                    break;

                case "XAPD":
                    if (ParentActivateOnly == null)
                    {
                        ParentActivateOnly = new SimpleSubrecord <NoYesByte>();
                    }

                    ParentActivateOnly.ReadBinary(reader);
                    break;

                case "XAPR":
                    if (ActivateParents == null)
                    {
                        ActivateParents = new List <ActivateParent>();
                    }

                    ActivateParent tempXAPR = new ActivateParent();
                    tempXAPR.ReadBinary(reader);
                    ActivateParents.Add(tempXAPR);
                    break;

                case "XATO":
                    if (ActivationPrompt == null)
                    {
                        ActivationPrompt = new SimpleSubrecord <String>();
                    }

                    ActivationPrompt.ReadBinary(reader);
                    break;

                case "XESP":
                    if (EnableParent == null)
                    {
                        EnableParent = new EnableParent();
                    }

                    EnableParent.ReadBinary(reader);
                    break;

                case "XEMI":
                    if (Emittance == null)
                    {
                        Emittance = new RecordReference();
                    }

                    Emittance.ReadBinary(reader);
                    break;

                case "XMBR":
                    if (MultiBound == null)
                    {
                        MultiBound = new RecordReference();
                    }

                    MultiBound.ReadBinary(reader);
                    break;

                case "XIBS":
                    if (IgnoredBySandbox == null)
                    {
                        IgnoredBySandbox = new SubMarker();
                    }

                    IgnoredBySandbox.ReadBinary(reader);
                    break;

                case "XSCL":
                    if (Scale == null)
                    {
                        Scale = new SimpleSubrecord <Single>();
                    }

                    Scale.ReadBinary(reader);
                    break;

                case "DATA":
                    if (PositionRotation == null)
                    {
                        PositionRotation = new PositionRotation();
                    }

                    PositionRotation.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
Beispiel #15
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Base", false, out subEle))
            {
                if (Base == null)
                {
                    Base = new RecordReference();
                }

                Base.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EncounterZone", false, out subEle))
            {
                if (EncounterZone == null)
                {
                    EncounterZone = new RecordReference();
                }

                EncounterZone.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RagdollData", false, out subEle))
            {
                if (RagdollData == null)
                {
                    RagdollData = new SimpleSubrecord <Byte[]>();
                }

                RagdollData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RagdollBipedData", false, out subEle))
            {
                if (RagdollBipedData == null)
                {
                    RagdollBipedData = new SimpleSubrecord <Byte[]>();
                }

                RagdollBipedData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Patrol", false, out subEle))
            {
                if (Patrol == null)
                {
                    Patrol = new ReferencePatrolData();
                }

                Patrol.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("LevelModifier", false, out subEle))
            {
                if (LevelModifier == null)
                {
                    LevelModifier = new SimpleSubrecord <Int32>();
                }

                LevelModifier.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Owner", false, out subEle))
            {
                if (Owner == null)
                {
                    Owner = new RecordReference();
                }

                Owner.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FactionRank", false, out subEle))
            {
                if (FactionRank == null)
                {
                    FactionRank = new SimpleSubrecord <Int32>();
                }

                FactionRank.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("MerchantContainer", false, out subEle))
            {
                if (MerchantContainer == null)
                {
                    MerchantContainer = new RecordReference();
                }

                MerchantContainer.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Count", false, out subEle))
            {
                if (Count == null)
                {
                    Count = new SimpleSubrecord <Int32>();
                }

                Count.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Radius", false, out subEle))
            {
                if (Radius == null)
                {
                    Radius = new SimpleSubrecord <Single>();
                }

                Radius.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Health", false, out subEle))
            {
                if (Health == null)
                {
                    Health = new SimpleSubrecord <Single>();
                }

                Health.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Decals", false, out subEle))
            {
                if (Decals == null)
                {
                    Decals = new List <SimpleSubrecord <Byte[]> >();
                }

                foreach (XElement e in subEle.Elements())
                {
                    SimpleSubrecord <Byte[]> tempXDCR = new SimpleSubrecord <Byte[]>();
                    tempXDCR.ReadXML(e, master);
                    Decals.Add(tempXDCR);
                }
            }
            if (ele.TryPathTo("LinkedReference", false, out subEle))
            {
                if (LinkedReference == null)
                {
                    LinkedReference = new RecordReference();
                }

                LinkedReference.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("LinkedReferenceColor", false, out subEle))
            {
                if (LinkedReferenceColor == null)
                {
                    LinkedReferenceColor = new LinkedReferenceColor();
                }

                LinkedReferenceColor.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ParentActivateOnly", false, out subEle))
            {
                if (ParentActivateOnly == null)
                {
                    ParentActivateOnly = new SimpleSubrecord <NoYesByte>();
                }

                ParentActivateOnly.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ActivateParents", false, out subEle))
            {
                if (ActivateParents == null)
                {
                    ActivateParents = new List <ActivateParent>();
                }

                foreach (XElement e in subEle.Elements())
                {
                    ActivateParent tempXAPR = new ActivateParent();
                    tempXAPR.ReadXML(e, master);
                    ActivateParents.Add(tempXAPR);
                }
            }
            if (ele.TryPathTo("ActivationPrompt", false, out subEle))
            {
                if (ActivationPrompt == null)
                {
                    ActivationPrompt = new SimpleSubrecord <String>();
                }

                ActivationPrompt.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EnableParent", false, out subEle))
            {
                if (EnableParent == null)
                {
                    EnableParent = new EnableParent();
                }

                EnableParent.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Emittance", false, out subEle))
            {
                if (Emittance == null)
                {
                    Emittance = new RecordReference();
                }

                Emittance.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("MultiBound", false, out subEle))
            {
                if (MultiBound == null)
                {
                    MultiBound = new RecordReference();
                }

                MultiBound.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("IgnoredBySandbox", false, out subEle))
            {
                if (IgnoredBySandbox == null)
                {
                    IgnoredBySandbox = new SubMarker();
                }

                IgnoredBySandbox.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Scale", false, out subEle))
            {
                if (Scale == null)
                {
                    Scale = new SimpleSubrecord <Single>();
                }

                Scale.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("PositionRotation", false, out subEle))
            {
                if (PositionRotation == null)
                {
                    PositionRotation = new PositionRotation();
                }

                PositionRotation.ReadXML(subEle, master);
            }
        }
 public DialogEndScript(SubMarker EndScriptMarker, EmbeddedScript EmbeddedScript)
 {
     this.EndScriptMarker = EndScriptMarker;
     this.EmbeddedScript  = EmbeddedScript;
 }
Beispiel #17
0
 public Package(SimpleSubrecord <String> EditorID, PackageData Data, PackageLocation Location1, PackageLocation Location2, PackageScheduleData Schedule, PackageTarget Target1, List <Condition> Conditions, SimpleSubrecord <PackageIdleFlags> IdleFlags, SimpleSubrecord <Byte> IdleCount, SimpleSubrecord <Single> IdleTimerSetting, FormArray IdleAnimations, SimpleSubrecord <Byte[]> Unused, RecordReference CombatStyle, SubMarker EatMarker, SimpleSubrecord <UInt32> EscortDistance, SimpleSubrecord <UInt32> FollowDistance_StartLocation_TriggerRadius, SimpleSubrecord <NoYesByte> PatrolIsRepeatable, PackageUseWeaponData UseWeaponData, PackageTarget Target2, SubMarker UseItemMarker, SubMarker AmbushMarker, PackageDialogData DialogData, PackageLocation DummyIgnore, PackageEvent OnBegin, PackageEvent OnEnd, PackageEvent OnChange)
 {
     this.EditorID = EditorID;
     this.Data     = Data;
     this.Schedule = Schedule;
 }
Beispiel #18
0
        public override void ReadXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("Header", false, out subEle))
            {
                if (Header == null)
                {
                    Header = new PerkEffectHeader();
                }

                Header.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EffectData", false, out subEle))
            {
                switch (Header.Type)
                {
                case PerkType.QuestStage:
                    EffectData = new PerkQuestStageData();
                    break;

                case PerkType.Ability:
                    EffectData = new PerkAbilityData();
                    break;

                case PerkType.EntryPoint:
                    EffectData = new PerkEntryPointData();
                    break;
                }

                EffectData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Conditions", false, out subEle))
            {
                if (Conditions == null)
                {
                    Conditions = new List <PerkCondition>();
                }

                foreach (XElement e in subEle.Elements())
                {
                    PerkCondition temp = new PerkCondition();
                    temp.ReadXML(e, master);
                    Conditions.Add(temp);
                }
            }
            if (ele.TryPathTo("EntryPoint/FunctionType", false, out subEle))
            {
                if (EntryPointFunctionType == null)
                {
                    EntryPointFunctionType = new SimpleSubrecord <EntryPointFunctionType>();
                }

                EntryPointFunctionType.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EntryPoint/FunctionData", false, out subEle))
            {
                switch (EntryPointFunctionType.Value)
                {
                case Enums.EntryPointFunctionType.None:
                    EntryPointFunctionData = new SimpleSubrecord <byte[]>();
                    break;

                case Enums.EntryPointFunctionType.Float:
                    EntryPointFunctionData = new SimpleSubrecord <float>();
                    break;

                case Enums.EntryPointFunctionType.FloatFloat:
                    EntryPointFunctionData = new EntryPointRandRange();
                    break;

                case Enums.EntryPointFunctionType.LeveledItem:
                    EntryPointFunctionData = new RecordReference();
                    break;

                case Enums.EntryPointFunctionType.Script:
                    EntryPointFunctionData = new SimpleSubrecord <byte[]>();
                    break;

                case Enums.EntryPointFunctionType.ActorValueMult:
                    EntryPointFunctionData = new EntryPointActorValMult();
                    break;
                }

                EntryPointFunctionData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("ButtonLabel", false, out subEle))
            {
                if (ButtonLabel == null)
                {
                    ButtonLabel = new SimpleSubrecord <String>();
                }

                ButtonLabel.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("RunImmediately", false, out subEle))
            {
                if (RunImmediately == null)
                {
                    RunImmediately = new SimpleSubrecord <NoYesShort>();
                }

                RunImmediately.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Script", false, out subEle))
            {
                if (Script == null)
                {
                    Script = new EmbeddedScript();
                }

                Script.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EndMarker", false, out subEle))
            {
                if (EndMarker == null)
                {
                    EndMarker = new SubMarker();
                }

                EndMarker.ReadXML(subEle, master);
            }
        }
Beispiel #19
0
        public override void ReadBinary(ESPReader reader)
        {
            List <string> readTags = new List <string>();

            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "XPRD":
                    if (readTags.Contains("XPRD"))
                    {
                        return;
                    }
                    IdleTime.ReadBinary(reader);
                    break;

                case "XPPA":
                    if (readTags.Contains("XPPA"))
                    {
                        return;
                    }
                    if (ScriptMarker == null)
                    {
                        ScriptMarker = new SubMarker();
                    }

                    ScriptMarker.ReadBinary(reader);
                    break;

                case "INAM":
                    if (readTags.Contains("INAM"))
                    {
                        return;
                    }
                    if (Idle == null)
                    {
                        Idle = new RecordReference();
                    }

                    Idle.ReadBinary(reader);
                    break;

                case "SCHR":
                    if (readTags.Contains("SCHR"))
                    {
                        return;
                    }
                    if (Script == null)
                    {
                        Script = new EmbeddedScript();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "TNAM":
                    if (readTags.Contains("TNAM"))
                    {
                        return;
                    }
                    if (Topic == null)
                    {
                        Topic = new RecordReference();
                    }

                    Topic.ReadBinary(reader);
                    break;

                default:
                    return;
                }

                readTags.Add(subTag);
            }
        }
Beispiel #20
0
 public RaceHeadData()
 {
     Marker = new SubMarker();
     Male   = new GenderHeadData();
     Female = new GenderHeadData();
 }
Beispiel #21
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new PackageData();
                }

                Data.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Location1", false, out subEle))
            {
                if (Location1 == null)
                {
                    Location1 = new PackageLocation();
                }

                Location1.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Location2", false, out subEle))
            {
                if (Location2 == null)
                {
                    Location2 = new PackageLocation();
                }

                Location2.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Schedule", false, out subEle))
            {
                if (Schedule == null)
                {
                    Schedule = new PackageScheduleData();
                }

                Schedule.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Target1", false, out subEle))
            {
                if (Target1 == null)
                {
                    Target1 = new PackageTarget();
                }

                Target1.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Conditions", false, out subEle))
            {
                if (Conditions == null)
                {
                    Conditions = new List <Condition>();
                }

                foreach (XElement e in subEle.Elements())
                {
                    Condition tempCTDA = new Condition();
                    tempCTDA.ReadXML(e, master);
                    Conditions.Add(tempCTDA);
                }
            }
            if (ele.TryPathTo("Idle/Flags", false, out subEle))
            {
                if (IdleFlags == null)
                {
                    IdleFlags = new SimpleSubrecord <PackageIdleFlags>();
                }

                IdleFlags.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Idle/Count", false, out subEle))
            {
                if (IdleCount == null)
                {
                    IdleCount = new SimpleSubrecord <Byte>();
                }

                IdleCount.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Idle/TimerSetting", false, out subEle))
            {
                if (IdleTimerSetting == null)
                {
                    IdleTimerSetting = new SimpleSubrecord <Single>();
                }

                IdleTimerSetting.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Idle/Animations", false, out subEle))
            {
                if (IdleAnimations == null)
                {
                    IdleAnimations = new FormArray();
                }

                IdleAnimations.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Unused", false, out subEle))
            {
                if (Unused == null)
                {
                    Unused = new SimpleSubrecord <Byte[]>();
                }

                Unused.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("CombatStyle", false, out subEle))
            {
                if (CombatStyle == null)
                {
                    CombatStyle = new RecordReference();
                }

                CombatStyle.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EatMarker", false, out subEle))
            {
                if (EatMarker == null)
                {
                    EatMarker = new SubMarker();
                }

                EatMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("EscortDistance", false, out subEle))
            {
                if (EscortDistance == null)
                {
                    EscortDistance = new SimpleSubrecord <UInt32>();
                }

                EscortDistance.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FollowDistance_StartLocation_TriggerRadius", false, out subEle))
            {
                if (FollowDistance_StartLocation_TriggerRadius == null)
                {
                    FollowDistance_StartLocation_TriggerRadius = new SimpleSubrecord <UInt32>();
                }

                FollowDistance_StartLocation_TriggerRadius.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("PatrolIsRepeatable", false, out subEle))
            {
                if (PatrolIsRepeatable == null)
                {
                    PatrolIsRepeatable = new SimpleSubrecord <NoYesByte>();
                }

                PatrolIsRepeatable.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("UseWeaponData", false, out subEle))
            {
                if (UseWeaponData == null)
                {
                    UseWeaponData = new PackageUseWeaponData();
                }

                UseWeaponData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Target2", false, out subEle))
            {
                if (Target2 == null)
                {
                    Target2 = new PackageTarget();
                }

                Target2.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("UseItemMarker", false, out subEle))
            {
                if (UseItemMarker == null)
                {
                    UseItemMarker = new SubMarker();
                }

                UseItemMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("AmbushMarker", false, out subEle))
            {
                if (AmbushMarker == null)
                {
                    AmbushMarker = new SubMarker();
                }

                AmbushMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("DialogData", false, out subEle))
            {
                if (DialogData == null)
                {
                    DialogData = new PackageDialogData();
                }

                DialogData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("DummyIgnore", false, out subEle))
            {
                if (DummyIgnore == null)
                {
                    DummyIgnore = new PackageLocation();
                }

                DummyIgnore.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("OnBegin", false, out subEle))
            {
                if (OnBegin == null)
                {
                    OnBegin = new PackageEvent();
                }

                OnBegin.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("OnEnd", false, out subEle))
            {
                if (OnEnd == null)
                {
                    OnEnd = new PackageEvent();
                }

                OnEnd.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("OnChange", false, out subEle))
            {
                if (OnChange == null)
                {
                    OnChange = new PackageEvent();
                }

                OnChange.ReadXML(subEle, master);
            }
        }
Beispiel #22
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "PKDT":
                    if (Data == null)
                    {
                        Data = new PackageData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "PLDT":
                    if (Location1 == null)
                    {
                        Location1 = new PackageLocation();
                    }

                    Location1.ReadBinary(reader);
                    break;

                case "PLD2":
                    if (Location2 == null)
                    {
                        Location2 = new PackageLocation();
                    }

                    Location2.ReadBinary(reader);
                    break;

                case "PSDT":
                    if (Schedule == null)
                    {
                        Schedule = new PackageScheduleData();
                    }

                    Schedule.ReadBinary(reader);
                    break;

                case "PTDT":
                    if (Target1 == null)
                    {
                        Target1 = new PackageTarget();
                    }

                    Target1.ReadBinary(reader);
                    break;

                case "CTDA":
                    if (Conditions == null)
                    {
                        Conditions = new List <Condition>();
                    }

                    Condition tempCTDA = new Condition();
                    tempCTDA.ReadBinary(reader);
                    Conditions.Add(tempCTDA);
                    break;

                case "IDLF":
                    if (IdleFlags == null)
                    {
                        IdleFlags = new SimpleSubrecord <PackageIdleFlags>();
                    }

                    IdleFlags.ReadBinary(reader);
                    break;

                case "IDLC":
                    if (IdleCount == null)
                    {
                        IdleCount = new SimpleSubrecord <Byte>();
                    }

                    IdleCount.ReadBinary(reader);
                    break;

                case "IDLT":
                    if (IdleTimerSetting == null)
                    {
                        IdleTimerSetting = new SimpleSubrecord <Single>();
                    }

                    IdleTimerSetting.ReadBinary(reader);
                    break;

                case "IDLA":
                    if (IdleAnimations == null)
                    {
                        IdleAnimations = new FormArray();
                    }

                    IdleAnimations.ReadBinary(reader);
                    break;

                case "IDLB":
                    if (Unused == null)
                    {
                        Unused = new SimpleSubrecord <Byte[]>();
                    }

                    Unused.ReadBinary(reader);
                    break;

                case "CNAM":
                    if (CombatStyle == null)
                    {
                        CombatStyle = new RecordReference();
                    }

                    CombatStyle.ReadBinary(reader);
                    break;

                case "PKED":
                    if (EatMarker == null)
                    {
                        EatMarker = new SubMarker();
                    }

                    EatMarker.ReadBinary(reader);
                    break;

                case "PKE2":
                    if (EscortDistance == null)
                    {
                        EscortDistance = new SimpleSubrecord <UInt32>();
                    }

                    EscortDistance.ReadBinary(reader);
                    break;

                case "PKFD":
                    if (FollowDistance_StartLocation_TriggerRadius == null)
                    {
                        FollowDistance_StartLocation_TriggerRadius = new SimpleSubrecord <UInt32>();
                    }

                    FollowDistance_StartLocation_TriggerRadius.ReadBinary(reader);
                    break;

                case "PKPT":
                    if (PatrolIsRepeatable == null)
                    {
                        PatrolIsRepeatable = new SimpleSubrecord <NoYesByte>();
                    }

                    PatrolIsRepeatable.ReadBinary(reader);
                    break;

                case "PKW3":
                    if (UseWeaponData == null)
                    {
                        UseWeaponData = new PackageUseWeaponData();
                    }

                    UseWeaponData.ReadBinary(reader);
                    break;

                case "PTD2":
                    if (Target2 == null)
                    {
                        Target2 = new PackageTarget();
                    }

                    Target2.ReadBinary(reader);
                    break;

                case "PUID":
                    if (UseItemMarker == null)
                    {
                        UseItemMarker = new SubMarker();
                    }

                    UseItemMarker.ReadBinary(reader);
                    break;

                case "PKAM":
                    if (AmbushMarker == null)
                    {
                        AmbushMarker = new SubMarker();
                    }

                    AmbushMarker.ReadBinary(reader);
                    break;

                case "PKDD":
                    if (DialogData == null)
                    {
                        DialogData = new PackageDialogData();
                    }

                    DialogData.ReadBinary(reader);
                    break;

                case "DUMY":
                    if (DummyIgnore == null)
                    {
                        DummyIgnore = new PackageLocation();
                    }

                    DummyIgnore.ReadBinary(reader);
                    break;

                case "POBA":
                    if (OnBegin == null)
                    {
                        OnBegin = new PackageEvent();
                    }

                    OnBegin.ReadBinary(reader);
                    break;

                case "POEA":
                    if (OnEnd == null)
                    {
                        OnEnd = new PackageEvent();
                    }

                    OnEnd.ReadBinary(reader);
                    break;

                case "POCA":
                    if (OnChange == null)
                    {
                        OnChange = new PackageEvent();
                    }

                    OnChange.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
 public PackageEvent()
 {
     Marker = new SubMarker();
 }
 public MapMarker()
 {
     Marker = new SubMarker();
     Name   = new SimpleSubrecord <String>();
     Data   = new MapMarkerData();
 }
Beispiel #25
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Name", false, out subEle))
            {
                if (Name == null)
                {
                    Name = new SimpleSubrecord <String>();
                }

                Name.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Description", false, out subEle))
            {
                if (Description == null)
                {
                    Description = new SimpleSubrecord <String>();
                }

                Description.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Relationships", false, out subEle))
            {
                if (Relationships == null)
                {
                    Relationships = new List <Relationship>();
                }

                foreach (XElement e in subEle.Elements())
                {
                    Relationship tempXNAM = new Relationship();
                    tempXNAM.ReadXML(e, master);
                    Relationships.Add(tempXNAM);
                }
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new RaceData();
                }

                Data.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Race/Older", false, out subEle))
            {
                if (OlderRace == null)
                {
                    OlderRace = new RecordReference();
                }

                OlderRace.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Race/Younger", false, out subEle))
            {
                if (YoungerRace == null)
                {
                    YoungerRace = new RecordReference();
                }

                YoungerRace.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("UnknownMarker", false, out subEle))
            {
                if (UnknownMarker == null)
                {
                    UnknownMarker = new SubMarker();
                }

                UnknownMarker.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Defaults/Voices", false, out subEle))
            {
                if (DefaultVoices == null)
                {
                    DefaultVoices = new RaceDefaultVoices();
                }

                DefaultVoices.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Defaults/HairStyles", false, out subEle))
            {
                if (DefaultHairStyles == null)
                {
                    DefaultHairStyles = new RaceDefaultHairStyles();
                }

                DefaultHairStyles.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Defaults/HairColors", false, out subEle))
            {
                if (DefaultHairColors == null)
                {
                    DefaultHairColors = new RaceDefaultHairColors();
                }

                DefaultHairColors.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FaceGen/Clamps/Main", false, out subEle))
            {
                if (FaceGenMainClamp == null)
                {
                    FaceGenMainClamp = new SimpleSubrecord <Single>();
                }

                FaceGenMainClamp.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FaceGen/Clamps/Face", false, out subEle))
            {
                if (FaceGenFaceClamp == null)
                {
                    FaceGenFaceClamp = new SimpleSubrecord <Single>();
                }

                FaceGenFaceClamp.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Unknown", false, out subEle))
            {
                if (Unknown == null)
                {
                    Unknown = new SimpleSubrecord <Byte[]>();
                }

                Unknown.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("HeadData", false, out subEle))
            {
                if (HeadData == null)
                {
                    HeadData = new RaceHeadData();
                }

                HeadData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("BodyData", false, out subEle))
            {
                if (BodyData == null)
                {
                    BodyData = new RaceBodyData();
                }

                BodyData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Hairs", false, out subEle))
            {
                if (Hairs == null)
                {
                    Hairs = new FormArray();
                }

                Hairs.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Eyes", false, out subEle))
            {
                if (Eyes == null)
                {
                    Eyes = new FormArray();
                }

                Eyes.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FaceGen/Male", false, out subEle))
            {
                if (MaleFaceGenData == null)
                {
                    MaleFaceGenData = new FaceGenData();
                }

                MaleFaceGenData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("FaceGen/Female", false, out subEle))
            {
                if (FemaleFaceGenData == null)
                {
                    FemaleFaceGenData = new FaceGenData();
                }

                FemaleFaceGenData.ReadXML(subEle, master);
            }
        }
Beispiel #26
0
 public RaceBodyData()
 {
     Marker = new SubMarker();
     Male   = new GenderBodyData();
     Female = new GenderBodyData();
 }
Beispiel #27
0
        public override void ReadBinary(ESPReader reader)
        {
            List <string> readTags = new List <string>();

            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "PRKE":
                    if (readTags.Contains("PRKE"))
                    {
                        return;
                    }
                    Header.ReadBinary(reader);
                    break;

                case "DATA":
                    if (readTags.Contains("DATA"))
                    {
                        return;
                    }

                    switch (Header.Type)
                    {
                    case PerkType.QuestStage:
                        EffectData = new PerkQuestStageData();
                        break;

                    case PerkType.Ability:
                        EffectData = new PerkAbilityData();
                        break;

                    case PerkType.EntryPoint:
                        EffectData = new PerkEntryPointData();
                        break;
                    }

                    EffectData.ReadBinary(reader);
                    break;

                case "PRKC":
                    if (Conditions == null)
                    {
                        Conditions = new List <PerkCondition>();
                    }

                    PerkCondition tempPRKC = new PerkCondition();
                    tempPRKC.ReadBinary(reader);
                    Conditions.Add(tempPRKC);
                    break;

                case "EPFT":
                    if (readTags.Contains("EPFT"))
                    {
                        return;
                    }
                    if (EntryPointFunctionType == null)
                    {
                        EntryPointFunctionType = new SimpleSubrecord <EntryPointFunctionType>();
                    }

                    EntryPointFunctionType.ReadBinary(reader);
                    break;

                case "EPFD":
                    if (readTags.Contains("EPFD"))
                    {
                        return;
                    }
                    switch (EntryPointFunctionType.Value)
                    {
                    case Enums.EntryPointFunctionType.None:
                        EntryPointFunctionData = new SimpleSubrecord <byte[]>();
                        break;

                    case Enums.EntryPointFunctionType.Float:
                        EntryPointFunctionData = new SimpleSubrecord <float>();
                        break;

                    case Enums.EntryPointFunctionType.FloatFloat:
                        EntryPointFunctionData = new EntryPointRandRange();
                        break;

                    case Enums.EntryPointFunctionType.LeveledItem:
                        EntryPointFunctionData = new RecordReference();
                        break;

                    case Enums.EntryPointFunctionType.Script:
                        EntryPointFunctionData = new SimpleSubrecord <byte[]>();
                        break;

                    case Enums.EntryPointFunctionType.ActorValueMult:
                        EntryPointFunctionData = new EntryPointActorValMult();
                        break;
                    }

                    EntryPointFunctionData.ReadBinary(reader);
                    break;

                case "EPF2":
                    if (readTags.Contains("EPF2"))
                    {
                        return;
                    }
                    if (ButtonLabel == null)
                    {
                        ButtonLabel = new SimpleSubrecord <String>();
                    }

                    ButtonLabel.ReadBinary(reader);
                    break;

                case "EPF3":
                    if (readTags.Contains("EPF3"))
                    {
                        return;
                    }
                    if (RunImmediately == null)
                    {
                        RunImmediately = new SimpleSubrecord <NoYesShort>();
                    }

                    RunImmediately.ReadBinary(reader);
                    break;

                case "SCHR":
                    if (readTags.Contains("SCHR"))
                    {
                        return;
                    }
                    if (Script == null)
                    {
                        Script = new EmbeddedScript();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "PRKF":
                    if (readTags.Contains("PRKF"))
                    {
                        return;
                    }
                    if (EndMarker == null)
                    {
                        EndMarker = new SubMarker();
                    }

                    EndMarker.ReadBinary(reader);
                    break;

                default:
                    return;
                }

                readTags.Add(subTag);
            }
        }
Beispiel #28
0
 public GenderBodyData()
 {
     Marker = new SubMarker();
 }
Beispiel #29
0
        public override void ReadBinary(ESPReader reader)
        {
            List <string> readTags = new List <string>();

            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "DSTD":
                    if (readTags.Contains("DSTD"))
                    {
                        return;
                    }
                    StageData.ReadBinary(reader);
                    break;

                case "DMDL":
                    if (readTags.Contains("DMDL"))
                    {
                        return;
                    }
                    if (ModelFilename == null)
                    {
                        ModelFilename = new SimpleSubrecord <String>();
                    }

                    ModelFilename.ReadBinary(reader);
                    break;

                case "DMDT":
                    if (readTags.Contains("DMDT"))
                    {
                        return;
                    }
                    if (ModelTextureHash == null)
                    {
                        ModelTextureHash = new SimpleSubrecord <Byte[]>();
                    }

                    ModelTextureHash.ReadBinary(reader);
                    break;

                case "DSTF":
                    if (readTags.Contains("DSTF"))
                    {
                        return;
                    }
                    if (EndMarker == null)
                    {
                        EndMarker = new SubMarker();
                    }

                    EndMarker.ReadBinary(reader);
                    break;

                default:
                    return;
                }

                readTags.Add(subTag);
            }
        }
Beispiel #30
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "DESC":
                    if (Description == null)
                    {
                        Description = new SimpleSubrecord <String>();
                    }

                    Description.ReadBinary(reader);
                    break;

                case "XNAM":
                    if (Relationships == null)
                    {
                        Relationships = new List <Relationship>();
                    }

                    Relationship tempXNAM = new Relationship();
                    tempXNAM.ReadBinary(reader);
                    Relationships.Add(tempXNAM);
                    break;

                case "DATA":
                    if (Data == null)
                    {
                        Data = new RaceData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "ONAM":
                    if (OlderRace == null)
                    {
                        OlderRace = new RecordReference();
                    }

                    OlderRace.ReadBinary(reader);
                    break;

                case "YNAM":
                    if (YoungerRace == null)
                    {
                        YoungerRace = new RecordReference();
                    }

                    YoungerRace.ReadBinary(reader);
                    break;

                case "NAM2":
                    if (UnknownMarker == null)
                    {
                        UnknownMarker = new SubMarker();
                    }

                    UnknownMarker.ReadBinary(reader);
                    break;

                case "VTCK":
                    if (DefaultVoices == null)
                    {
                        DefaultVoices = new RaceDefaultVoices();
                    }

                    DefaultVoices.ReadBinary(reader);
                    break;

                case "DNAM":
                    if (DefaultHairStyles == null)
                    {
                        DefaultHairStyles = new RaceDefaultHairStyles();
                    }

                    DefaultHairStyles.ReadBinary(reader);
                    break;

                case "CNAM":
                    if (DefaultHairColors == null)
                    {
                        DefaultHairColors = new RaceDefaultHairColors();
                    }

                    DefaultHairColors.ReadBinary(reader);
                    break;

                case "PNAM":
                    if (FaceGenMainClamp == null)
                    {
                        FaceGenMainClamp = new SimpleSubrecord <Single>();
                    }

                    FaceGenMainClamp.ReadBinary(reader);
                    break;

                case "UNAM":
                    if (FaceGenFaceClamp == null)
                    {
                        FaceGenFaceClamp = new SimpleSubrecord <Single>();
                    }

                    FaceGenFaceClamp.ReadBinary(reader);
                    break;

                case "ATTR":
                    if (Unknown == null)
                    {
                        Unknown = new SimpleSubrecord <Byte[]>();
                    }

                    Unknown.ReadBinary(reader);
                    break;

                case "NAM0":
                    if (HeadData == null)
                    {
                        HeadData = new RaceHeadData();
                    }

                    HeadData.ReadBinary(reader);
                    break;

                case "NAM1":
                    if (BodyData == null)
                    {
                        BodyData = new RaceBodyData();
                    }

                    BodyData.ReadBinary(reader);
                    break;

                case "HNAM":
                    if (Hairs == null)
                    {
                        Hairs = new FormArray();
                    }

                    Hairs.ReadBinary(reader);
                    break;

                case "ENAM":
                    if (Eyes == null)
                    {
                        Eyes = new FormArray();
                    }

                    Eyes.ReadBinary(reader);
                    break;

                case "MNAM":
                    if (MaleFaceGenData == null)
                    {
                        MaleFaceGenData = new FaceGenData();
                    }

                    MaleFaceGenData.ReadBinary(reader);
                    break;

                case "FNAM":
                    if (FemaleFaceGenData == null)
                    {
                        FemaleFaceGenData = new FaceGenData();
                    }

                    FemaleFaceGenData.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }