Getting Started

Routine Actor & File Layout

Create your rotation actor and organize your files

With your core config file ready, it's time to create your first rotation actor. This page walks through setting up a Beast Mastery Hunter rotation—the same structure applies to any class and spec.

1. Create Class and Spec Folders

Inside your project folder (synq/routines/example/), create a folder for the class you're scripting. For Beast Mastery Hunter:

hunter/

Inside the class folder, create two files for your specialization:

hunter/bm-actor.lua
hunter/bm-spells.lua
  • bm-actor.lua — Contains your rotation priority logic
  • bm-spells.lua — Defines your spellbook with spell objects and callbacks

This separation keeps your code organized: spells live in one place, rotation logic in another.

2. Update Your Config File

Modify synq-config.json to load your new files:

{
  "load": [
    "example.lua",
    "hunter/bm-actor.lua",
    "hunter/bm-spells.lua"
  ]
}

Load order matters: your core file (example.lua) loads first, then actor and spells. SYNQ processes files in the order listed.

3. Register the Actor

In example.lua, register your Beast Mastery Hunter actor:

local Unlocker, synq, example = ...

example.hunter = {}
example.hunter.bm = synq.Actor:New({ class = "hunter", spec = 1 })

Parameters explained:

  • class = "hunter" — The class you're scripting for
  • spec = 1 — Your specialization index (Beast Mastery is typically spec 1 for Hunter)

To find your spec index, run /dump C_SpecializationInfo.GetSpecialization() in game, or count the spec tabs from left to right (1, 2, 3).

4. Initialize the Actor

Create hunter/bm-actor.lua and add your first actor initialization:

local Unlocker, synq, example = ...
local bm = example.hunter.bm

print("BM Hunter routine loaded successfully!")

bm:Init(function()
    print("Actor tick executing - routine is running!")
end)

The bm:Init() function runs every frame when your routine is active. Right now it just prints a message—we'll add real rotation logic next.

5. Test Your Setup

Verify everything works:

  1. Reload your UI: /reload
  2. Toggle your routine: /synq toggle

If you see both print messages, your actor is loaded and running. You now have a working skeleton that executes every frame—next we'll add spells and actual rotation logic.


Next: Learn how to create your spellbook and build a working rotation in Spellbook & Basic Rotation.