Core Concepts

SYNQ Objects

Understanding SYNQ objects and how to work with units, players, and game objects

SYNQ Objects are intelligent tables containing attributes and functions used to easily get information about and interact with units, players, and other objects in game.

All SYNQ objects with an existing underlying unit will have all of the expected attributes and functions available for you to access.

Key Features

  • Static SYNQ objects always available for common units (target, focus, etc.)
    • You can make an amazing routine using mostly these
  • Object lists are filtered arrays of SYNQ objects by type (e.g., enemies, friends, objects) generated and returned each frame they are referenced

Accessing Object Data

We access attributes by referencing them, and functions by calling them.

Attribute Example

target.hp

Function Example

target.isUnit(focus)

Attributes & Functions

Every SYNQ object with an existing underlying unit has access to a full set of attributes and functions. Attributes are accessed by reference (target.hp), while functions require parentheses (target.isUnit(focus)).

For complete references, see:

Empty Objects

Empty objects are a shell, containing only isUnit. They are only generated by functions which generate an object when there is no relevant underlying object:

  • object.castTarget - Returns the destination target of a spell cast as a SYNQ object
  • object.target - Returns the object's target as a SYNQ object

Tip: This is so you can always rule out things like object.castTarget.isUnit(healer) without the need to redundantly check for existence of the castTarget.

Existence Checking

Always check if an object exists before querying its data. Most boolean attributes like object.enemy or object.friend also prove existence when they return true.

Good existence checks:

  • object.exists - Explicit existence check
  • object.enemy - Checks existence AND confirms enemy status
  • object.combat - Checks existence AND confirms in combat

Avoid these patterns:

  • Negated booleans like not object.combat don't prove existence
  • Number comparisons like object.hp < 30 may fail gracefully but won't work as intended without existence check first

Next: Learn how to create and use Spell Objects for your rotations.