Worldy+ SimC APL Documentation

This guide covers the complete Action Priority List (APL) syntax supported by Worldy.

All logic expressions evaluate to 1 (true) or 0 (false).


Table of Contents

  1. File Structure
  2. Worldy Metadata Directives
  3. Entry Types & Parameters
  4. Expression Syntax & Operators
  5. Global & Combat Tokens
  6. Resources
  7. Toggles & Settings
  8. Unit Aliases & Properties
  9. Auras (Buffs, Debuffs, DoTs)
  10. Spells & Cooldowns
  11. Cast History
  12. Talents & Hero Trees
  13. Trinkets & Equipment
  14. Pets
  15. Variables
  16. Weapon Enchants
  17. Class-Specific Tokens
  18. Bare Tokens (Implicit Context)

File Structure

A .simc file consists of comments and action lines:


# Comments start with #
# worldy:name=My Rotation
# worldy:version=1.0.0

# Precombat list (non-harmful only)
actions.precombat=snapshot_stats

# Default action list (main rotation)
actions=auto_attack
actions+=/call_action_list,name=cooldowns
actions+=/call_action_list,name=rotation

# Named action lists
actions.rotation=spell_name,if=condition
actions.rotation+=/other_spell,if=other_condition

Line format: actions[.listname][+=]/action_name[,param=value,...]

Special non-harmful actions: snapshot_stats, auto_attack, potion, mana_potion, pool, pool_resource, wait


Worldy Metadata Directives

Worldy-specific metadata is declared in comments using # worldy:<directive>.

Metadata


# worldy:name=Holy Priest
# worldy:version=1.2.3
# worldy:class=5
# worldy:spec=257
Parameter Type Description
name string Rotation display name
version semver Rotation version (e.g. 1.2.3)
class uint WoW class ID
spec uint WoW specialization ID

Setting


# worldy:setting id=heal_threshold type=int default=70 min=10 max=100 step=5 label="Heal Threshold"
# worldy:setting id=mode type=enum default=aggressive options="aggressive|defensive|balanced" label="Mode"

Access in expressions: worldy.<setting_id>

Parameter Type Description
id string Unique setting identifier (required)
type string bool, int, float, enum, string
label string UI display label
default string Default value
description string Tooltip description
group string Group label for UI grouping
min number Minimum value (int/float)
max number Maximum value (int/float)
step number Step increment (int/float)
options string Pipe-separated options (enum)

Toggle


# worldy:toggle id=use_cds label="Cooldowns" default=true auto_off=30

Access in expressions: toggle.<toggle_id>

Parameter Type Description
id string Unique toggle identifier (required)
label string UI display label
overlay string Overlay display label
default bool Default on/off (true/false/1/0)
auto_off number Auto-disable after N seconds

Entry Types & Parameters

Each action line is parsed into one of the following entry types:

Spell (<spell_name>)

Cast an ability. This is the default entry type.

Parameter Description
if Boolean condition expression
target Cast on specific unit (target, focus, etc.)
target_if min:/max: — select target by formula
cancel_if Cancel current cast if expression is true
off_gcd 1 or true — can be cast during GCD
use_while_casting 1 or true — can be queued during another cast
cycle_targets 1 or true — cycle through available targets
empower_to — Evoker empower level (1-4)
line_cd — per-line cooldown to prevent spamming

CallList (call_action_list, run_action_list)

Call or run another named action list.

Parameter Description
name Name of the action list to call (required)
if Boolean condition expression

Variable (variable)

Define, update, or reset a variable.

Parameter Description
name Variable name (required)
default Default value (required for first declaration)
op set (default), reset, add, sub, setif
value Expression to evaluate as the new value
value_else Alternative value (used with setif)
condition Condition for setif: condition ? value : value_else
if Boolean condition — only execute if true

Item (use_item, use_items)

Use equipped items or trinkets.

Parameter Description
name Item name (SimC-normalized)
id Item ID (numeric)
slot trinket1, trinket2, main_hand, off_hand, neck
slots Colon-separated slots for use_items (e.g. trinket1:trinket2)
if Boolean condition expression

SetFocus (set_focus)

Set the player's focus target.

Parameter Description
target Unit to set as focus
if Boolean condition expression

Utility (desnare)

Utility actions (e.g. automatic snare removal).

Parameter Description
target Unit to desnare
if Boolean condition expression

Log (log)

Debug logging (development only).

Parameter Description
message Log message (supports %s placeholders)
msg Alias for message
level debug, info, warning, error
args Comma-separated expressions for %s substitution
if Boolean condition expression

Expression Syntax & Operators

Expressions are used in if, target_if, cancel_if, value, value_else, and condition parameters.

Precedence (1 = highest / binds tightest):

Operator Description Precedence
! Logical NOT (unary) 1
- Negation (unary) 1
* Multiplication 2
/ Division 2
% Division (SimC alias) 2
%% Modulo 2
+ Addition 3
- Subtraction 3
<? Minimum of two values 3
>? Maximum of two values 3
= Equal 4
!= Not equal 4
< Less than 4
> Greater than 4
<= Less than or equal 4
>= Greater than or equal 4
& Logical AND 5
| Logical OR 6

Notes:

Example:


if=cooldown.avenging_wrath.ready&(holy_power>=3|buff.divine_purpose.up)&fight_remains>30

Global & Combat Tokens

Tokens to check the general state of combat.

Token
active_enemies
cast_time
charges
charges_fractional
cooldown_react
execute_time
fight_remains
full_recharge_time
gcd
gcd.max
gcd.remains
group.non_player_count
health.max
health.pct
in_combat
interruptible_count
moving
recharge_time
refreshable
remains
spell_targets
stealthed
target.health.max
target.health.pct
target.is_boss
target.time_to_die
ticking
time
time_to_die.remains
usable_in

Examples from rotations:


Resources

Replace <resource> with any of: astral_power, chi, combo_points, energy, essence, focus, fury, holy_power, insanity, maelstrom, mana, pain, rage, rune, runic_power, soul_shard, stagger

Token Pattern Description
<resource> Current amount
<resource>.pct Percentage (0–100)
<resource>.deficit Missing amount to cap
<resource>.base_deficit Base deficit (without procs)
<resource>.max Maximum capacity
<resource>.regen Regeneration rate per second
<resource>.time_to_max Seconds until resource is full
<resource>.base_time_to_max Base time to max (without procs)

Additional: health, health.pct, health.max, target.health.pct, injured_allies.<threshold>, injured_allies.worldy.<setting_id>


Toggles & Settings

React to toggles set in the Worldy Loader UI.

Token Description
toggle.cooldowns Major cooldowns allowed
toggle.dispels Automatic dispels enabled
toggle.interrupts Automatic interrupts enabled
toggle.desnares Automatic snare removal enabled
toggle.<custom_id> Custom toggle defined via # worldy:toggle

Unit Aliases & Properties

Syntax: <unit>.<property>

Available Units

beacon_target, beacon_target_secondary, desnare_target, focus, heal_target, lowest_friend, mouseover, pet, player, priority_friend, tank_target, target

Simple Properties

Property
.exists
.friend
.enemy
.dead
.player
.is_player
.valid_friend
.valid_enemy
.in_melee
.casting
.channeling
.hp
.hp.pct
.health.pct
.health.max
.health
.distance
.in_dungeon
.in_raid
.should_interrupt
.should_stun
.should_purge_magic
.should_purge_enrage
.has_aggro

Parameterized Properties

Pattern Values
.role.<role> tank, heal, attack, dps, spell
.in_range.<yards> Numeric yard value
.valid_friend.<yards> Numeric yard value
.valid_enemy.<yards> Numeric yard value
.interruptible_count.<yards> Numeric yard value
.buff.<name>.<suffix> Aura suffixes
.debuff.<name>.<suffix> Aura suffixes
.dot.<name>.<suffix> Aura suffixes
.cooldown.<name>.<suffix> Cooldown suffixes
.casting.<spell> Spell name
.channeling.<spell> Spell name
.is_dispellable.<type> magic, curse, poison, disease, bleed

Auras (Buffs, Debuffs, DoTs)

Syntax: buff.<name>.<suffix>, debuff.<name>.<suffix>, dot.<name>.<suffix>

Suffix
.at_max_stacks
.down
.duration
.max_stack
.pmultiplier
.react
.refreshable
.remains
.stack
.ticking
.ticks_remain
.up
.value

Additional: active_dot.<name> — count of enemies with this DoT applied

Examples from rotations:

Examples from rotations:


Spells & Cooldowns

action.<name>.<suffix>

Suffix
.cast_time
.channeling
.charges
.cooldown
.cooldown_react
.cost
.damage
.demonsurge_available
.duration
.enabled
.energize_amount
.execute_remains
.execute_time
.executing
.full_recharge_time
.in_flight
.in_flight_remains
.in_flight_to_target
.in_flight_to_target_count
.last_used
.pmultiplier
.ready
.recharge_time
.souls_consumed
.usable
.usable_in

cooldown.<name>.<suffix>

Suffix
.charges
.charges_fractional
.duration
.full_recharge_time
.ready
.remains
.remains_expected
.up

spell.<name>.<suffix>

Suffix
.aura_active_count
.cast_count
.charges
.charges_fractional
.cooldown
.cooldown_react
.friendly_aura_active_count
.hostile_aura_active_count
.usable

Examples from rotations:


Cast History

Token Pattern Description
prev_gcd.<offset>.<spell> 1 if the GCD spell at steps ago matches
prev_off_gcd.<spell> 1 if the last off-GCD ability matches
prev.<spell> Alias for prev_gcd.1.
last_gcd_id Spell ID of the last GCD ability
current_action_id Spell ID of the current action being evaluated
combo_strike 1 if current spell differs from last (Monk Mastery)

Examples from rotations:


Talents & Hero Trees

Token Pattern Description
talent.<name>.enabled 1 if the talent is selected
talent.<name>.disabled 1 if the talent is NOT selected
hero_tree.<name>.enabled 1 if the hero talent tree is active
set_bonus.<name> 1 if the tier set bonus is active

Examples from rotations:


Trinkets & Equipment

Token Pattern Description
equipped.<item_name> 1 if item is equipped
trinket.1.<suffix> Top trinket slot
trinket.2.<suffix> Bottom trinket slot
trinket.<name>.cooldown.ready 1 if named trinket is off cooldown
this_trinket.<suffix> Current trinket being evaluated
other_trinket.<suffix> The other trinket slot

Trinket suffixes: has_use_buff, has_cooldown, cooldown.remains, cooldown.duration

Examples from rotations:


Pets

Syntax: pet.<name>.<suffix>

Known pets: chiji, darkglare, demonic_tyrant, infernal, lesser_ghoul_army, mindbender, searing_totem, shadowfiend, surging_totem, voidwraith, whitemane, xuen_the_white_tiger, yulon

Suffixes: active, up, down, remains, stack

Pets also support all unit properties (e.g. pet.yulon.hp.pct).

Additional: raid_event.adds.exists, raid_event.adds.up, raid_event.adds.count

Examples from rotations:


Variables

Variables allow storing computed values for reuse across action lines.


# Declare and set
actions+=/variable,name=burn_phase,default=0,op=set,value=cooldown.combustion.ready

# Use in conditions
actions+=/fireball,if=variable.burn_phase

# Conditional set (ternary)
actions+=/variable,name=target_count,default=1,op=setif,condition=active_enemies>3,value=active_enemies,value_else=1

# Arithmetic
actions+=/variable,name=counter,default=0,op=add,value=1,if=time<5
actions+=/variable,name=counter,op=reset,if=time>=5

Operations: set (default), reset, add, sub, setif

Examples from rotations:


Weapon Enchants

Syntax: main_hand.<enchant>.<suffix> or off_hand.<enchant>.<suffix>

Suffixes: at_max_stacks, down, max_stack, react, remains, stack, ticking, up, value

Additional: main_hand.1h, main_hand.2h, off_hand.1h, off_hand.2h


Class-Specific Tokens

The following prefixes are recognized for class-specific tokens. Their sub-tokens are defined by each class's implementation.

Class prefixes: death_knight., demon_hunter., druid., evoker., hunter., mage., monk., paladin., priest., rogue., shaman., warlock., warrior.

Special prefixes:

Pattern Description
consecration.<suffix> Paladin consecration state
death_and_decay.<suffix> Death Knight D&D state
any_dnd.<suffix> Any Death and Decay variant
scorch_execute.<suffix> Mage scorch execute state
drw.<suffix> Death Knight Dancing Rune Weapon state

Stat tokens: crit_rating, haste_rating, mastery_rating, versatility_rating


Bare Tokens (Implicit Context)

These tokens can be used without a prefix and resolve based on the current context (e.g. charges implicitly refers to the current spell's charges).

Token
active_enemies
astral_power
attack_haste
cast_time
charges
charges_fractional
combo_strike
cooldown
cooldown_react
cost
cp_max_spend
current_action_id
demonic_art
demonsurge_available
desired_targets
diabolic_ritual
duration
energize_amount
essence
execute_time
expected_combat_length
fight_remains
floor
full_recharge_time
fury_of_the_wyvern_extendable
gcd
havoc_active
havoc_remains
health
holy_bulwark
hot_streak_spells_in_flight
icicles
in_boss_encounter
in_combat
interruptible_count
judgment_holy_power
last_gcd_id
lightning_rod
max_charges
max_prio_damage
moving
next_armament
persistent_multiplier
pmultiplier
priority_rotation
recharge_time
refreshable
remains
rtb_buffs
rune
runic_power
sacred_weapon
soul_fragments
soul_shard
spell_haste
spell_targets
target
ti_chain_lightning
ti_lightning_bolt
tick_time
ticking
ticks
ticks_remain
time
time_to_bloodlust
time_to_die
travel_time
two_cast_imps