Skip to content

rostermember

One slot in a group or raid roster. A cheap, always-available read that works even when the member is out of range and has no loaded actor.

Returned by Group.Member[n], Group.Members(), and the Raid equivalents.

This is not an actor. It carries what the roster manager knows, which is less — no position, no effects, no encounter data — but it is available for members who aren't loaded in your zone. To get the full actor for a nearby member, look their ID() up:

for _, m in ipairs(mq.TLO.Group.Members()) do
  local a = mq.TLO.Spawn[m.ID()]          -- may be an unresolved actor
  if a and a.ID() ~= 0 then
    eq2.print(("%s is %.1fm away"):format(m.Name(), a.Distance()))
  end
end

Members

number Index

1-based slot index.

string Name

Member name.

number ID

Member spawn id. 0 when the slot is empty or the member isn't resolvable.

number Level

number EffectiveLevel

Level and mentored level.

number PctHP

number PctPower

Health and power, 0100.

number RaidGroup

The member's raid sub-group number, 0-based (03). -1 when the member isn't in a raid sub-group — which includes every member on a Group roster, since group rosters have no sub-groups of their own.

Warning

Zero-based, not one-based — RaidGroup() == 0 means "first sub-group", not "no sub-group". Test against -1 for absence, never 0.

string Zone

The member's zone name. Group only — always "" on a Raid member.

bool ZoneKnown

Is the zone field populated? Group only — always false on a Raid member.

bool InZone

True when this member is physically in your zone. Group only — always false on a Raid member. Useful for filtering cure/heal targets to people you can actually reach.

Cure classes

Group only. Every member below returns false / 0 on a Raid member.

Same signed-counter semantics as Me.Afflictions(): -1 means present but not curable, 0 means none, > 0 is a curable count.

number Trauma

number Arcane

number Noxious

number Elemental

number Curse

The five signed counters. Use these when you need to tell -1 (incurable) from 0 (nothing).

bool HasTrauma

bool HasArcane

bool HasNoxious

bool HasElemental

bool HasCurse

Per-class predicates. Each tests its counter > 0, not ~= 0.

bool HasCurableDetriment

The OR of the five Has*() predicates above. The correct cure gate.

bool HasIncurableDetriment

True when any counter is < 0.
for _, m in ipairs(mq.TLO.Group.Members()) do
  if m.HasNoxious() then
    eq2.cmdf('/target %s', m.Name())
    eq2.cmd('/useability "Cure Noxious"')
    break
  end
end

Group vs Raid

Member Group Raid
Index, Name, ID
Level, EffectiveLevel
PctHP, PctPower
RaidGroup always -1
Zone always ""
ZoneKnown always false
InZone always false
TraumaCurse always 0
HasTraumaHasCurse always false
HasCurableDetriment always false
HasIncurableDetriment always false

Raid members do not error on those columns — they return the fail-soft zero value. A raid-wide cure loop written against HasCurableDetriment() will run silently and cure nobody. That data path only exists for Group today.

See also