/// <summary> /// /// </summary> /// <param name="files"></param> /// <param name="progress"></param> private static void OpenPlugins(string[] files, IProgress<string> progress) { ElderScrollsPlugin.OnProgressUpdate += ElderScrollsPluginOnProgressUpdate; Plugins = new List<ElderScrollsPlugin>(); ElderScrollsPlugin.Clear(); ElderScrollsPlugin.pluginLocations.Add(new KeyValuePair<string, bool>(Settings.DataPath, false)); foreach (var file in files) { if (ElderScrollsPlugin.LoadedPlugins.Any(esp => esp.Name == file)) Plugins.Add(ElderScrollsPlugin.LoadedPlugins.First(esp => esp.Name == file)); else { var plugin = new ElderScrollsPlugin(Path.GetFileName(file)); try { plugin.Read(file); Plugins.Add(plugin); progress.Report(""); // Gotta update the plugin list } catch (IOException ex) { Messenger.AddError("Aborting...", ex); return; } } } }
public override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (EditorID != null) { ele.TryPathTo("EditorID", true, out subEle); EditorID.WriteXML(subEle, master); } if (ObjectBounds != null) { ele.TryPathTo("ObjectBounds", true, out subEle); ObjectBounds.WriteXML(subEle, master); } if (Model != null) { ele.TryPathTo("Model", true, out subEle); Model.WriteXML(subEle, master); } if (Parts != null) { ele.TryPathTo("Parts", true, out subEle); List <string> xmlNames = new List <string> { "Part" }; int i = 0; Parts.Sort(); foreach (var entry in Parts) { i = i % xmlNames.Count(); XElement newEle = new XElement(xmlNames[i]); entry.WriteXML(newEle, master); subEle.Add(newEle); i++; } } }
public override void ReadXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Marker", false, out subEle)) { Marker.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 ReadXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Index", false, out subEle)) { if (Index == null) { Index = new SimpleSubrecord <Int32>(); } Index.ReadXML(subEle, master); } if (ele.TryPathTo("Description", false, out subEle)) { if (Description == null) { Description = new SimpleSubrecord <String>(); } Description.ReadXML(subEle, master); } if (ele.TryPathTo("Targets", false, out subEle)) { if (Targets == null) { Targets = new List <QuestTarget>(); } foreach (XElement e in subEle.Elements()) { QuestTarget temp = new QuestTarget(); temp.ReadXML(e, master); Targets.Add(temp); } } }
public override void ReadXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("BaseEffect", false, out subEle)) { if (BaseEffect == null) { BaseEffect = new RecordReference(); } BaseEffect.ReadXML(subEle, master); } if (ele.TryPathTo("EffectData", false, out subEle)) { if (EffectData == null) { EffectData = new EffectData(); } EffectData.ReadXML(subEle, master); } if (ele.TryPathTo("Conditions", false, out subEle)) { if (Conditions == null) { Conditions = new List <Condition>(); } foreach (XElement e in subEle.Elements()) { Condition temp = new Condition(); temp.ReadXML(e, master); Conditions.Add(temp); } } }
protected override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; ele.TryPathTo("Effect", true, out subEle); Effect.WriteXML(subEle, master); ele.TryPathTo("SkillRequirement", true, out subEle); subEle.Value = SkillRequirement.ToString("G15"); ele.TryPathTo("DamageMult", true, out subEle); subEle.Value = DamageMult.ToString("G15"); ele.TryPathTo("APCost", true, out subEle); subEle.Value = APCost.ToString("G15"); ele.TryPathTo("IsSilent", true, out subEle); subEle.Value = IsSilent.ToString(); ele.TryPathTo("RequiresMod", true, out subEle); subEle.Value = RequiresMod.ToString(); WriteUnusedXML(ele, master); }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Layer0", false, out subEle)) { Layer0.ReadXML(subEle, master); } if (ele.TryPathTo("Layer1", false, out subEle)) { Layer1.ReadXML(subEle, master); } if (ele.TryPathTo("Layer2", false, out subEle)) { Layer2.ReadXML(subEle, master); } if (ele.TryPathTo("Layer3", false, out subEle)) { Layer3.ReadXML(subEle, master); } }
public override void ReadXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Marker", false, out subEle)) { Marker.ReadXML(subEle, master); } if (ele.TryPathTo("HeadModels", false, out subEle)) { if (HeadModels == null) { HeadModels = new List <HeadModel>(); } foreach (XElement e in subEle.Elements()) { HeadModel temp = new HeadModel(); temp.ReadXML(e, master); HeadModels.Add(temp); } } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("DamageResistance", false, out subEle)) { DamageResistance = subEle.ToInt16(); } if (ele.TryPathTo("Flags", false, out subEle)) { Flags = subEle.ToEnum <ArmorFlags>(); } if (ele.TryPathTo("DamageThreshold", false, out subEle)) { DamageThreshold = subEle.ToSingle(); } if (ele.TryPathTo("Unknown", false, out subEle)) { Unknown = subEle.ToBytes(); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Right", false, out subEle)) { Right.ReadXML(subEle, master); } if (ele.TryPathTo("Left", false, out subEle)) { Left.ReadXML(subEle, master); } if (ele.TryPathTo("Bottom", false, out subEle)) { Bottom.ReadXML(subEle, master); } if (ele.TryPathTo("Top", false, out subEle)) { Top.ReadXML(subEle, master); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Health", false, out subEle)) { Health = subEle.ToInt32(); } if (ele.TryPathTo("Count", false, out subEle)) { Count = subEle.ToByte(); } if (ele.TryPathTo("Flags", false, out subEle)) { Flags = subEle.ToEnum <DestructableFlags>(); } if (ele.TryPathTo("Unknown", false, out subEle)) { Unknown = subEle.ToBytes(); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Skill", false, out subEle)) { Skill = subEle.ToEnum <ActorValues>(); } if (ele.TryPathTo("Level", false, out subEle)) { Level = subEle.ToUInt32(); } if (ele.TryPathTo("Category", false, out subEle)) { Category.ReadXML(subEle, master); } if (ele.TryPathTo("SubCategory", false, out subEle)) { SubCategory.ReadXML(subEle, master); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Comparison", false, out subEle)) { Comparison.ReadXML(subEle, master); } if (ele.TryPathTo("Function", false, out subEle)) { Function.ReadXML(subEle, master); } if (ele.TryPathTo("RunOn", false, out subEle)) { RunOn = subEle.ToEnum <FunctionTarget>(); } if (ele.TryPathTo("RunOnReference", false, out subEle)) { RunOnReference.ReadXML(subEle, master); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("RangeRadius", false, out subEle)) { RangeRadius = subEle.ToSingle(); } if (ele.TryPathTo("BroadcastRange", false, out subEle)) { BroadcastRange = subEle.ToEnum <BroadcastRangeType>(); } if (ele.TryPathTo("StaticPercentage", false, out subEle)) { StaticPercentage = subEle.ToSingle(); } if (ele.TryPathTo("PositionReference", false, out subEle)) { PositionReference.ReadXML(subEle, master); } }
protected override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; ele.TryPathTo("Width/Min", true, out subEle); subEle.Value = MinWidth.ToString("G15"); ele.TryPathTo("Width/Max", true, out subEle); subEle.Value = MaxWidth.ToString("G15"); ele.TryPathTo("Height/Min", true, out subEle); subEle.Value = MinHeight.ToString("G15"); ele.TryPathTo("Height/Max", true, out subEle); subEle.Value = MaxHeight.ToString("G15"); ele.TryPathTo("Depth", true, out subEle); subEle.Value = Depth.ToString("G15"); ele.TryPathTo("Shininess", true, out subEle); subEle.Value = Shininess.ToString("G15"); ele.TryPathTo("Parallax/Scale", true, out subEle); subEle.Value = ParallaxScale.ToString("G15"); ele.TryPathTo("Parallax/Passes", true, out subEle); subEle.Value = ParallaxPasses.ToString(); ele.TryPathTo("Flags", true, out subEle); subEle.Value = DecalFlags.ToString(); WriteUnusedXML(ele, master); ele.TryPathTo("Color", true, out subEle); Color.WriteXML(subEle, master); }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Layer0", false, out subEle)) { Layer0 = subEle.ToByte(); } if (ele.TryPathTo("Layer1", false, out subEle)) { Layer1 = subEle.ToByte(); } if (ele.TryPathTo("Layer2", false, out subEle)) { Layer2 = subEle.ToByte(); } if (ele.TryPathTo("Layer3", false, out subEle)) { Layer3 = subEle.ToByte(); } }
public LoadOrderFormID(FormID fileFormID, ElderScrollsPlugin file) { uint fileIndex = fileFormID.RawValue >> 24; uint recordIndex = fileFormID.RawValue & 0x00FFFFFF; if (fileIndex >= file.Masters.Count) { fileIndex = (uint)(file.Masters.Count - 1); } string masterName = file.Masters[(int)fileIndex]; ElderScrollsPlugin master = ElderScrollsPlugin.LoadedPlugins.FirstOrDefault(esp => esp.FileName == masterName); if (master == null) { throw new Exception(); } Master = master; uint newFileIndex = (uint)(ElderScrollsPlugin.LoadedPlugins.IndexOf(master) << 24); RawValue = newFileIndex | recordIndex; }
public void ReadXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Red", false, out subEle)) { Red = subEle.ToByte(); } if (ele.TryPathTo("Green", false, out subEle)) { Green = subEle.ToByte(); } if (ele.TryPathTo("Blue", false, out subEle)) { Blue = subEle.ToByte(); } if (ele.TryPathTo("Alpha_Unused", false, out subEle)) { Alpha_Unused = subEle.ToByte(); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Direct", false, out subEle)) { Direct.ReadXML(subEle, master); } if (ele.TryPathTo("Indirect/World", false, out subEle)) { IndirectWorld.ReadXML(subEle, master); } if (ele.TryPathTo("Indirect/GridY", false, out subEle)) { IndirectGridY = subEle.ToInt16(); } if (ele.TryPathTo("Indirect/GridX", false, out subEle)) { IndirectGridX = subEle.ToInt16(); } }
public override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (EditorID != null) { ele.TryPathTo("EditorID", true, out subEle); EditorID.WriteXML(subEle, master); } if (Name != null) { ele.TryPathTo("Name", true, out subEle); Name.WriteXML(subEle, master); } if (Data != null) { ele.TryPathTo("Data", true, out subEle); Data.WriteXML(subEle, master); } if (Effects != null) { ele.TryPathTo("Effects", true, out subEle); List <string> xmlNames = new List <string> { "Effect" }; int i = 0; foreach (var entry in Effects) { i = i % xmlNames.Count(); XElement newEle = new XElement(xmlNames[i]); entry.WriteXML(newEle, master); subEle.Add(newEle); i++; } } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Effect", false, out subEle)) { Effect.ReadXML(subEle, master); } if (ele.TryPathTo("SkillRequirement", false, out subEle)) { SkillRequirement = subEle.ToSingle(); } if (ele.TryPathTo("DamageMult", false, out subEle)) { DamageMult = subEle.ToSingle(); } if (ele.TryPathTo("APCost", false, out subEle)) { APCost = subEle.ToSingle(); } if (ele.TryPathTo("IsSilent", false, out subEle)) { IsSilent = subEle.ToEnum <NoYesByte>(); } if (ele.TryPathTo("RequiresMod", false, out subEle)) { RequiresMod = subEle.ToEnum <NoYesByte>(); } ReadUnusedXML(ele, master); }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("Flags", false, out subEle)) { Flags = subEle.ToEnum <BookFlags>(); } if (ele.TryPathTo("Skill", false, out subEle)) { Skill = subEle.ToEnum <ActorValuesByte>(); } if (ele.TryPathTo("Value", false, out subEle)) { Value = subEle.ToInt32(); } if (ele.TryPathTo("Weight", false, out subEle)) { Weight = subEle.ToSingle(); } }
partial void ReadValue2XML(XElement ele, ElderScrollsPlugin master);
partial void WriteUnusedXML(XElement ele, ElderScrollsPlugin master);
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("Icon/Large", false, out subEle)) { if (LargeIcon == null) { LargeIcon = new SimpleSubrecord <String>(); } LargeIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Icon/Small", false, out subEle)) { if (SmallIcon == null) { SmallIcon = new SimpleSubrecord <String>(); } SmallIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Script", false, out subEle)) { if (Script == null) { Script = new RecordReference(); } Script.ReadXML(subEle, master); } if (ele.TryPathTo("Description", false, out subEle)) { if (Description == null) { Description = new SimpleSubrecord <String>(); } Description.ReadXML(subEle, master); } if (ele.TryPathTo("Data", false, out subEle)) { if (Data == null) { Data = new ChallengeData(); } Data.ReadXML(subEle, master); } ReadValue1XML(ele, master); ReadValue2XML(ele, master); }
partial void WriteValue1XML(XElement ele, ElderScrollsPlugin master);
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); } }
protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (ele.TryPathTo("CreatureType", false, out subEle)) { CreatureType = subEle.ToEnum <CreatureType>(); } if (ele.TryPathTo("Skill/Combat", false, out subEle)) { CombatSkill = subEle.ToByte(); } if (ele.TryPathTo("Skill/Magic", false, out subEle)) { MagicSkill = subEle.ToByte(); } if (ele.TryPathTo("Skill/Stealth", false, out subEle)) { StealthSkill = subEle.ToByte(); } if (ele.TryPathTo("Health", false, out subEle)) { Health = subEle.ToInt16(); } ReadUnusedXML(ele, master); if (ele.TryPathTo("Damage", false, out subEle)) { Damage = subEle.ToInt16(); } if (ele.TryPathTo("Strength", false, out subEle)) { Strength = subEle.ToByte(); } if (ele.TryPathTo("Perception", false, out subEle)) { Perception = subEle.ToByte(); } if (ele.TryPathTo("Endurance", false, out subEle)) { Endurance = subEle.ToByte(); } if (ele.TryPathTo("Charisma", false, out subEle)) { Charisma = subEle.ToByte(); } if (ele.TryPathTo("Intelligence", false, out subEle)) { Intelligence = subEle.ToByte(); } if (ele.TryPathTo("Agility", false, out subEle)) { Agility = subEle.ToByte(); } if (ele.TryPathTo("Luck", false, out subEle)) { Luck = subEle.ToByte(); } }
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("ObjectBounds", false, out subEle)) { if (ObjectBounds == null) { ObjectBounds = new ObjectBounds(); } ObjectBounds.ReadXML(subEle, master); } if (ele.TryPathTo("Name", false, out subEle)) { if (Name == null) { Name = new SimpleSubrecord <String>(); } Name.ReadXML(subEle, master); } if (ele.TryPathTo("Model", false, out subEle)) { if (Model == null) { Model = new Model(); } Model.ReadXML(subEle, master); } if (ele.TryPathTo("Icon/Large", false, out subEle)) { if (LargeIcon == null) { LargeIcon = new SimpleSubrecord <String>(); } LargeIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Icon/Small", false, out subEle)) { if (SmallIcon == null) { SmallIcon = new SimpleSubrecord <String>(); } SmallIcon.ReadXML(subEle, master); } if (ele.TryPathTo("Script", false, out subEle)) { if (Script == null) { Script = new RecordReference(); } Script.ReadXML(subEle, master); } if (ele.TryPathTo("PickUpSound", false, out subEle)) { if (PickUpSound == null) { PickUpSound = new RecordReference(); } PickUpSound.ReadXML(subEle, master); } if (ele.TryPathTo("DropSound", false, out subEle)) { if (DropSound == null) { DropSound = new RecordReference(); } DropSound.ReadXML(subEle, master); } if (ele.TryPathTo("Texture/Face", false, out subEle)) { if (TextureFace == null) { TextureFace = new SimpleSubrecord <String>(); } TextureFace.ReadXML(subEle, master); } if (ele.TryPathTo("Texture/Back", false, out subEle)) { if (TextureBack == null) { TextureBack = new SimpleSubrecord <String>(); } TextureBack.ReadXML(subEle, master); } if (ele.TryPathTo("CardData", false, out subEle)) { if (CardData == null) { CardData = new Card(); } CardData.ReadXML(subEle, master); } if (ele.TryPathTo("Value", false, out subEle)) { if (Value == null) { Value = new SimpleSubrecord <UInt32>(); } Value.ReadXML(subEle, master); } }
public override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; if (EditorID != null) { ele.TryPathTo("EditorID", true, out subEle); EditorID.WriteXML(subEle, master); } if (ObjectBounds != null) { ele.TryPathTo("ObjectBounds", true, out subEle); ObjectBounds.WriteXML(subEle, master); } if (Name != null) { ele.TryPathTo("Name", true, out subEle); Name.WriteXML(subEle, master); } if (Model != null) { ele.TryPathTo("Model", true, out subEle); Model.WriteXML(subEle, master); } if (LargeIcon != null) { ele.TryPathTo("Icon/Large", true, out subEle); LargeIcon.WriteXML(subEle, master); } if (SmallIcon != null) { ele.TryPathTo("Icon/Small", true, out subEle); SmallIcon.WriteXML(subEle, master); } if (Script != null) { ele.TryPathTo("Script", true, out subEle); Script.WriteXML(subEle, master); } if (PickUpSound != null) { ele.TryPathTo("PickUpSound", true, out subEle); PickUpSound.WriteXML(subEle, master); } if (DropSound != null) { ele.TryPathTo("DropSound", true, out subEle); DropSound.WriteXML(subEle, master); } if (TextureFace != null) { ele.TryPathTo("Texture/Face", true, out subEle); TextureFace.WriteXML(subEle, master); } if (TextureBack != null) { ele.TryPathTo("Texture/Back", true, out subEle); TextureBack.WriteXML(subEle, master); } if (CardData != null) { ele.TryPathTo("CardData", true, out subEle); CardData.WriteXML(subEle, master); } if (Value != null) { ele.TryPathTo("Value", true, out subEle); Value.WriteXML(subEle, master); } }
partial void ReadValue2XML(XElement ele, ElderScrollsPlugin master) { XElement subEle = new XElement("Dummy"); switch (Data.Type) { case ChallengeType.KillFromAFormList: if (ele.TryPathTo("WeaponList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; case ChallengeType.KillASpecificFormID: if (ele.TryPathTo("WeaponList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; case ChallengeType.KillAnyInACategory: if (ele.TryPathTo("WeaponList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; case ChallengeType.HitAnEnemy: if (ele.TryPathTo("WeaponList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; case ChallengeType.DiscoverAMapMarker: if (ele.TryPathTo("LocationList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; case ChallengeType.DoDamage: if (ele.TryPathTo("WeaponList", false, out subEle)) { Value2 = new RecordReference(); } else { return; } break; default: return; } Value2.ReadXML(subEle, master); }