Abilityinfo (Data Type)


This datatype's primary function is to store and return ability "details".   The client does not need to know these details all of the time, so when the player examines an ability, or when ISXEQ2 requests it, the details are downloaded from the server and stored in a cache. 

The typical method of acquiring an instance of this datatype is via the ToAbilityInfo member of ability.

Technical Considerations

The abilityinfo datatype is almost always used with UI elements by the EverQuest 2 client.   Therefore, there are some limitations on how well ISXEQ2 can manage dealing with data that changes (e.g., ToAbilityInfo.CastingTime).    Basically, ability.IsAbilityInfoAvailable only indicates that ability.ToAbilityInfo is currently VALID, not that it's the most up-to-date information!   So, script writers are encouraged to give the game a few seconds to update when retrieving data from abilityinfo that may change.   For example, when checking the CastingTime of an ability, a script might check ability.IsAbilityInfoAvailable; then, if it's TRUE, check ability.ToAbilityInfo.CastingTime once then wait a few seconds and check it again.   If the values are different, then it means that the "CastingTime" of the ability has recently changed.    (Please note that this is only an issue for abilityinfo members that change.   For most things, it only matters that ability.IsAbilityInfoAvailable is TRUE.)


  • string Name
  • string Description
  • string Tier
  • int HealthCost
  • int PowerCost
  • int DissonanceCost
  • int SavageryCost
  • int ConcentrationCost
  • int MainIconID
  • int HOIconID
    • A result of -1 indicates 'no icon'
  • float CastingTime
  • float RecoveryTime
  • float RecastTime
  • float MaxDuration
    • Abilities without a duration will return zero. Abilities with unlimited duration will return -1.
  • int NumClasses
    • Returns the number of classes that can use the ability
  • class Class[#]
  • class Class["classname"]
    • Abilities that are usable by ALL will have one class in the array, which will have the name "commoner". Remember, 'commoner' is a class of which everyone is a member.  For example, you can get the level of an ability like so:   echo ${Me.Ability[Prismatic Havoc].Class[${Me.SubClass}].Level}
  • int NumEffects
    • Number of effect 'lines' in the ability description
  • AbilityEffect Effect[#]
    • One for each bulleted effect in the ability description
  • int BackDropIconID
  • int HealthCostPerTick
  • int PowerCostPerTick
  • int DissonanceCostPerTick
  • int SavageryCostPerTick
  • int MaxAOETargets
  • bool DoesNotExpire
  • bool GroupRestricted
  • bool AllowRaid
  • bool IsBeneficial
  • float EffectRadius
  • int TargetType
  • int SpellBookType
  • float MinRange
  • float MaxRange
  • string ToLink