private static List <ExportPower> ToPowers(this List <Character.Power> importPowers, Rules charRules, Rules d20Rules) { List <ExportPower> powers = new List <ExportPower>(); foreach (var importPower in importPowers) { Rule charRule; if (!charRules.TryGetFirstByTypeAndName("Power", importPower.Name, out charRule)) { continue; } // use the D20 rules instead of the character file's rules Rule rule = CompleteRule(charRule, d20Rules); importPower.Specifics = rule.Specifics; var power = new ExportPower(); power.ActionType = importPower.SafeGet("Action Type"); power.Attack = importPower.Attack; power.AttackType = importPower.SafeGet("Attack Type"); power.Display = importPower.Display.FixWhitespace(); power.Effect = importPower.Effect.FixWhitespace(); power.Flavor = (!String.IsNullOrWhiteSpace(importPower.Flavor) ? importPower.Flavor : rule.Flavor).FixWhitespace(); power.Hit = importPower.Hit.FixWhitespace(); power.Keywords = importPower.Keywords.ToList(); power.Name = importPower.Name; power.PowerType = importPower.SafeGet("Power Type"); power.Range = importPower.Range; power.Source = rule.Source.FixWhitespace(); power.Target = importPower.Target.FixWhitespace(); power.Text = rule.Text.FixWhitespace(); power.Usage = importPower.SafeGet("Power Usage"); power.Weapons = importPower.Weapons.Select(w => new ExportWeapon() { AttackBonus = w.AttackBonus, AttackStat = w.AttackStat.ToAbilityScore(), Conditions = w.Conditions.ToStringList(), Damage = w.Damage.Expression, DamageComponents = w.DamageComponents.ToStringList(), DamageType = w.DamageType.FixWhitespace(), Defense = w.Defense.ToDefense(), HitComponents = w.HitComponents.ToStringList(), Name = w.Name, }).ToList(); powers.Add(power); } return(powers); }
private static List<ExportPower> ToPowers(this List<Character.Power> importPowers, Rules charRules, Rules d20Rules) { List<ExportPower> powers = new List<ExportPower>(); foreach (var importPower in importPowers) { Rule charRule; if (!charRules.TryGetFirstByTypeAndName("Power", importPower.Name, out charRule)) { continue; } // use the D20 rules instead of the character file's rules Rule rule = CompleteRule(charRule, d20Rules); importPower.Specifics = rule.Specifics; var power = new ExportPower(); power.ActionType = importPower.SafeGet("Action Type"); power.Attack = importPower.Attack; power.AttackType = importPower.SafeGet("Attack Type"); power.Display = importPower.Display.FixWhitespace(); power.Effect = importPower.Effect.FixWhitespace(); power.Flavor = (!String.IsNullOrWhiteSpace(importPower.Flavor) ? importPower.Flavor : rule.Flavor).FixWhitespace(); power.Hit = importPower.Hit.FixWhitespace(); power.Keywords = importPower.Keywords.ToList(); power.Name = importPower.Name; power.PowerType = importPower.SafeGet("Power Type"); power.Range = importPower.Range; power.Source = rule.Source.FixWhitespace(); power.Target = importPower.Target.FixWhitespace(); power.Text = rule.Text.FixWhitespace(); power.Usage = importPower.SafeGet("Power Usage"); power.Weapons = importPower.Weapons.Select(w => new ExportWeapon() { AttackBonus = w.AttackBonus, AttackStat = w.AttackStat.ToAbilityScore(), Conditions = w.Conditions.ToStringList(), Damage = w.Damage.Expression, DamageComponents = w.DamageComponents.ToStringList(), DamageType = w.DamageType.FixWhitespace(), Defense = w.Defense.ToDefense(), HitComponents = w.HitComponents.ToStringList(), Name = w.Name, }).ToList(); powers.Add(power); } return powers; }