private VeterancyModification?SetVeterancyLevelArrayModificationData(XElement?modificationElement) { if (modificationElement == null) { return(null); } VeterancyModification veterancyModification = new VeterancyModification(); if (double.TryParse(modificationElement.Attribute("KillXPBonus")?.Value, out double killXpBonusResult)) { veterancyModification.KillXpBonus = killXpBonusResult; } foreach (XElement element in modificationElement.Elements()) { string elementName = element.Name.LocalName.ToUpperInvariant(); if (elementName == "DAMAGEDEALTSCALED") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.DamageDealtScaledCollection.Add(new VeterancyDamageDealtScaled() { Type = index, Value = valueResult, }); } } else if (elementName == "DAMAGEDEALTFRACTION") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.DamageDealtFractionCollection.Add(new VeterancyDamageDealtFraction() { Type = index, Value = valueResult, }); } } else if (elementName == "VITALMAXARRAY") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.VitalMaxCollection.Add(new VeterancyVitalMax() { Type = index, Value = valueResult, }); } } else if (elementName == "VITALMAXFRACTIONARRAY") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.VitalMaxFractionCollection.Add(new VeterancyVitalMaxFraction() { Type = index, Value = valueResult, }); } } else if (elementName == "VITALREGENARRAY") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.VitalRegenCollection.Add(new VeterancyVitalRegen() { Type = index, Value = valueResult, }); } } else if (elementName == "VITALREGENFRACTIONARRAY") { string?index = element.Attribute("index")?.Value; string?value = GameData.GetValueFromAttribute(element.Attribute("value")?.Value ?? string.Empty); if (!string.IsNullOrEmpty(index) && double.TryParse(value, out double valueResult)) { veterancyModification.VitalRegenFractionCollection.Add(new VeterancyVitalRegenFraction() { Type = index, Value = valueResult, }); } } } return(veterancyModification); }
protected override void SetTestData() { BehaviorVeterancy behaviorVeterancy = new BehaviorVeterancy() { CombineModifications = true, CombineXP = true, Id = "Vet1", }; var veterancyModification = new VeterancyModification { KillXpBonus = 10, }; veterancyModification.DamageDealtScaledCollection.Add( new VeterancyDamageDealtScaled() { Type = "basic", Value = 0.2, }); veterancyModification.DamageDealtScaledCollection.Add( new VeterancyDamageDealtScaled() { Type = "ability", Value = 0.6, }); veterancyModification.VitalRegenFractionCollection.Add( new VeterancyVitalRegenFraction() { Type = "life", Value = 0.02, }); behaviorVeterancy.VeterancyLevels.Add(new VeterancyLevel() { MinimumVeterancyXP = 5, VeterancyModification = veterancyModification, }); var veterancyModification2 = new VeterancyModification() { KillXpBonus = 0, }; veterancyModification2.DamageDealtScaledCollection.Add( new VeterancyDamageDealtScaled() { Type = "basic", Value = 0.4, }); veterancyModification2.DamageDealtScaledCollection.Add( new VeterancyDamageDealtScaled() { Type = "ability", Value = 0.5, }); veterancyModification2.VitalRegenFractionCollection.Add( new VeterancyVitalRegenFraction() { Type = "life", Value = 0.03, }); behaviorVeterancy.VeterancyLevels.Add(new VeterancyLevel() { MinimumVeterancyXP = 9, VeterancyModification = veterancyModification2, }); TestData.Add(behaviorVeterancy); }