using System.Collections.Generic; using System.Linq; using MRBot.IsxEq2; using MRBot.IsxEq2.AbilityEffect; namespace MRBot.Bot.AbilityExporter { internal class ExportableAbility { public ExportableAbility(Ability ability) { // copy properties from ability to this Id = ability.Id; Name = ability.AbilityInfo.Name; Description = ability.AbilityInfo.Description; Level = ability.AbilityInfo.Class(Extension.Me.SubClass).Level; Tier = ability.AbilityInfo.Tier; HealthCost = ability.AbilityInfo.HealthCost; PowerCost = ability.AbilityInfo.PowerCost; DissonanceCost = ability.AbilityInfo.DissonanceCost; SavageryCost = ability.AbilityInfo.SavageryCost; ConcentrationCost = ability.AbilityInfo.ConcentrationCost; MainIconId = ability.AbilityInfo.MainIconID; HoIconId = ability.AbilityInfo.HOIconID; CastingTime = ability.AbilityInfo.CastingTime; RecoveryTime = ability.AbilityInfo.RecoveryTime; RecastTime = ability.AbilityInfo.RecastTime; MaxDuration = ability.AbilityInfo.MaxDuration; Effects = Enumerable .Range(1, ability.AbilityInfo.NumEffects) .Select(idx => new ExportableAbilityEffect(ability.AbilityInfo.Effect(idx))) .ToList(); BackDropIconId = ability.AbilityInfo.BackDropIconID; HealthCostPerTick = ability.AbilityInfo.HealthCostPerTick; PowerCostPerTick = ability.AbilityInfo.PowerCostPerTick; DissonanceCostPerTick = ability.AbilityInfo.DissonanceCostPerTick; SavageryCostPerTick = ability.AbilityInfo.SavageryCostPerTick; MaxAoeTargets = ability.AbilityInfo.MaxAOETargets; DoesNotExpire = ability.AbilityInfo.DoesNotExpire; GroupRestricted = ability.AbilityInfo.GroupRestricted; AllowRaid = ability.AbilityInfo.AllowRaid; IsBeneficial = ability.AbilityInfo.IsBeneficial; EffectRadius = ability.AbilityInfo.EffectRadius; TargetType = ability.AbilityInfo.TargetType; SpellBookType = ability.AbilityInfo.SpellBookType; MinRange = ability.AbilityInfo.MinRange; MaxRange = ability.AbilityInfo.MaxRange; } public uint Id { get; set; } public string Name { get; set; } public int Level { get; set; } public string Description { get; set; } public string Tier { get; set; } public int HealthCost { get; set; } public int PowerCost { get; set; } public int DissonanceCost { get; set; } public int SavageryCost { get; set; } public int ConcentrationCost { get; set; } public int MainIconId { get; set; } public int HoIconId { get; set; } public float CastingTime { get; set; } public float RecoveryTime { get; set; } public float RecastTime { get; set; } public float MaxDuration { get; set; } public List Effects { get; set; } public int BackDropIconId { get; set; } public int HealthCostPerTick { get; set; } public int PowerCostPerTick { get; set; } public int DissonanceCostPerTick { get; set; } public int SavageryCostPerTick { get; set; } public int MaxAoeTargets { get; set; } public bool DoesNotExpire { get; set; } public bool GroupRestricted { get; set; } public bool AllowRaid { get; set; } public bool IsBeneficial { get; set; } public float EffectRadius { get; set; } public int TargetType { get; set; } public int SpellBookType { get; set; } public float MinRange { get; set; } public float MaxRange { get; set; } } }