using System.Globalization; using InnerSpaceAPI; using LavishScriptAPI; using MRBot.IsxEq2.Helpers; namespace MRBot.IsxEq2.AbilityEffect { public class Ability : LavishScriptObject { public Ability(LavishScriptObject copy) : base(copy) { } public uint Id => this.GetUIntFromLSO("ID"); public bool IsReady => this.GetBoolFromLSO("IsReady"); public float TimeUntilReady => this.GetFloatFromLSO("TimeUntilReady"); public float IsQueued => this.GetFloatFromLSO("IsQueued"); public bool IsAbilityInfoAvailable => this.GetBoolFromLSO("IsAbilityInfoAvailable"); public AbilityInfo AbilityInfo => new AbilityInfo(GetMember("ToAbilityInfo")); public bool Use() => ExecuteMethod("Use"); public bool Examine() => ExecuteMethod("Examine"); } public class AbilityInfo : LavishScriptObject { public AbilityInfo(LavishScriptObject copy) : base(copy) { } public string Name => this.GetStringFromLSO("Name"); public string Description => this.GetStringFromLSO("Description"); public string Tier => this.GetStringFromLSO("Tier"); public int HealthCost => this.GetIntFromLSO("HealthCost"); public int PowerCost => this.GetIntFromLSO("PowerCost"); public int DissonanceCost => this.GetIntFromLSO("DissonanceCost"); public int SavageryCost => this.GetIntFromLSO("SavageryCost"); public int ConcentrationCost => this.GetIntFromLSO("ConcentrationCost"); public int MainIconID => this.GetIntFromLSO("MainIconID"); public int HOIconID => this.GetIntFromLSO("HOIconID"); public float CastingTime => this.GetFloatFromLSO("CastingTime"); public float RecoveryTime => this.GetFloatFromLSO("RecoveryTime"); public float RecastTime => this.GetFloatFromLSO("RecastTime"); public float MaxDuration => this.GetFloatFromLSO("MaxDuration"); public int NumClasses => this.GetIntFromLSO("NumClasses"); public int NumEffects => this.GetIntFromLSO("NumEffects"); public AbilityEffect Effect(int index) => new AbilityEffect(GetMember("Effect", index.ToString(CultureInfo.InvariantCulture))); public int BackDropIconID => this.GetIntFromLSO("BackDropIconID"); public int HealthCostPerTick => this.GetIntFromLSO("HealthCostPerTick"); public int PowerCostPerTick => this.GetIntFromLSO("PowerCostPerTick"); public int DissonanceCostPerTick => this.GetIntFromLSO("DissonanceCostPerTick"); public int SavageryCostPerTick => this.GetIntFromLSO("SavageryCostPerTick"); public int MaxAOETargets => this.GetIntFromLSO("MaxAOETargets"); public bool DoesNotExpire => this.GetBoolFromLSO("DoesNotExpire"); public bool GroupRestricted => this.GetBoolFromLSO("GroupRestricted"); public bool AllowRaid => this.GetBoolFromLSO("AllowRaid"); public bool IsBeneficial => this.GetBoolFromLSO("IsBeneficial"); public float EffectRadius => this.GetFloatFromLSO("EffectRadius"); public int TargetType => this.GetIntFromLSO("TargetType"); public int SpellBookType => this.GetIntFromLSO("SpellBookType"); public float MinRange => this.GetFloatFromLSO("MinRange"); public float MaxRange => this.GetFloatFromLSO("MaxRange"); public string ToLink => this.GetStringFromLSO("ToLink"); public Class Class(int index) => GetMember("Class", index.ToString(CultureInfo.InvariantCulture)); public Class Class(string className) => new Class(GetMember("Class", className)); } }