ability¶
One entry from your known-ability book: a spell, combat art, or other usable ability, with its recast state and icons.
Returned by Me.Ability(key),
Me.AbilityID(id), and
Me.AbilityByName(name) — each of which
returns nil when nothing matches, so check before calling members.
local ab = mq.TLO.Me.Ability("Fireball")
if ab then
eq2.print(("%s ready=%s recast=%.1fs")
:format(ab.Name(), tostring(ab.IsReady()), ab.RecastRemaining()))
end
Members¶
number ID¶
- Raw ability id.
string Name¶
- Ability name. Empty until the client has warmed this ability's info — see
InfoAvailable().
bool IsReady¶
-
Is the ability off recast?
This is derived from
RecastRemaining() == 0.An ability that never lands never starts a recast
Because "ready" means "no recast is ticking", an ability that is scribed but can never actually be cast — an unslotted advantage, a spell whose prerequisites are never met — reads as permanently ready. A rotation that walks rows in order and casts the first ready one will stop at that row forever, starving every row below it.
If a rotation appears to stop working, look for a row that is always ready and never fires.
number RecastRemaining¶
- Seconds left on recast, as a float.
0when ready.
number RecastDuration¶
-
Full recast duration in seconds.
Warning
Currently returns
0for everything. UseRecastDurationTenths()for the raw value, orRecastTime()below if the ability has already been examined — it reads the same duration from a different cache and is not affected by this bug.
number RecastDurationTenths¶
- Raw recast duration in tenths of a second.
number MainIconID¶
- Main icon id. Pairs with
BackDropIconID()to identify an effect on a buff bar — seeHaveMaintainedIcon.
number BackDropIconID¶
-
Backdrop icon id.
Note
Note the capital
D. The effect tables useBackdropIconID(lowercased) instead — the two spellings are not interchangeable.
number SpellBookIconID¶
- Spell-book icon id.
number Flags¶
-
Raw flags bitfield.
Warning
The decode is not settled. The read is also unaligned, so the upper half of the returned value is bleed from adjacent fields. Don't build buff-vs-combat-art classification on this yet.
bool InfoAvailable¶
-
Has the client warmed this ability's name and info yet?
Ability names arrive asynchronously. Until this is
true,Name()may be empty even thoughID()is valid. SeeAbilityCacheReady()for the book-wide version of this question.
Spell description (async)¶
A second, separate cache — the client's own examine/description data — backs
the members below. It fills in only once the ability has actually been
examined at least once this session (opening the tooltip, or the client
warming it on its own); there's no explicit "prime this" call the way
eq2.item_examine() exists for items.
bool DescAvailable¶
- Has the description cache filled in for this ability? Check this before
reading anything else in this section — every member below returns
nil, not0orfalse, while it'sfalse.
local ab = mq.TLO.Me.Ability("Fireball")
if ab and ab.DescAvailable() then
eq2.print(("range %.0f-%.0f, cast %.1fs, recast %.1fs")
:format(ab.RangeMin(), ab.RangeMax(), ab.CastTime(), ab.RecastTime()))
end
number CastTime¶
number RecoveryTime¶
number RecastTime¶
- Cast time, recovery time, and recast time, all in seconds.
RecastTime()is the working alternative to the brokenRecastDuration()above.
number RangeMin¶
number RangeMax¶
- Minimum and maximum range.
number ManaCost¶
number HealthCost¶
number SavageryCost¶
number DissonanceCost¶
number ConcCost¶
- Resource costs.
SavageryCost(Beastlord) andDissonanceCost(Channeler) read0for every other class.
number MinDuration¶
number MaxDuration¶
- Duration bounds, in seconds.
bool IsBeneficial¶
bool IsMaintained¶
bool AllowRaid¶
bool GroupRestricted¶
bool DoesNotExpire¶
- Beneficial/buff, maintained-bar, raid-targetable, group-only, and never-expires flags.
number AOERadius¶
number AOEMaxTargets¶
- Area-of-effect radius and max target count.
0on a single-target ability.
number TargetType¶
number SpellbookType¶
- Raw enum values. The decode isn't settled — read these as opaque numbers to compare against each other, not against a known table yet.
See also¶
mq.TLOability helpers — by-name and by-id lookups that skip fetching the object.character