ability (Data Type)¶
- ability (Data Type)
This DataType includes all of the data available to ISXEQ2 related to abilities. An 'ability' is defined as any skill found in your knowledge book. (Additional information is available in the abilityinfo datatype, which is accessible via the ToAbilityInfo member below.)
(Please note that all members of this datatype are available in memory at all times and never require a server or cache check.)
The best way to acquire an ability datatype object is via the Ability member or QueryAbilities method of character.
- uint ID
- bool IsReady
- float TimeUntilReady
- This is the amount of time (in seconds) before the ability can be used again.
- bool IsQueued
- bool IsAbilityInfoAvailable
- If the ability "details" are not already stored in a cache, then this will return FALSE until it is available. Script writers are encouraged to utilize the logic shown in the sample included with the Knowledgebase article "Iterating Abilities and Handling 'abilityinfo' Aquisition".
- abilityinfo ToAbilityInfo
- If the ability "details" are not already stored in a cache, then this will return NULL until it is available. Script writers are encouraged to utilize the logic shown in the sample included with the Knowledgebase article "Iterating Abilities and Handling 'abilityinfo' Aquisition".
- (Note: Due to how ISXEQ2 handles the acquisition of abilityinfo, script writers should check IsAbilityInfoAvailable until it's TRUE before using ToAbilityInfo (as opposed to checking ToAbilityInfo until it's not NULL.) This methodology will avoid spamming the server with requests.)
Technical Notes on AbilityInfo Acquisition and Use¶
- 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, IsAbilityInfoAvailable only indicates that 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 IsAbilityInfoAvailable; then, if it's TRUE, check 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 IsAbilityInfoAvailable is TRUE.)