Skip to content

Priorities and Optimization

Hekili edited this page Oct 25, 2024 · 3 revisions

The information on this page is intended for power users who write new priorities or customize their priorities. For the everyday user, you DO NOT need to import/revise the addon's default priorities.

In general, Hekili's priorities are translated or adapted from SimulationCraft to ensure that its recommendations will match up. Some expressions and syntax are automatically translated at import, but other nuances may require manual editing.

Translations

The following items must be manually translated before importing into the addon:

SimC Syntax Addon Syntax Reason
target_if=[min:/max:/]condition,
if=other_condition
With min: or max:
cycle_targets=1,
if=(condition)&(other_condition)

Without min: or max:
cycle_targets=1,
if=other_condition
Target selection involves a complicated system behind the scenes. Logic for target cycling must be built into the specialization itself, rather than the priority.

An important nuance is that a target_if condition that includes max: or min: will always end up selecting a target (even current target), but a target_if without max/min may fail for all targets and exclude them.

Example:
target_if=debuff.flame_shock.refreshable,
if=time>0
translates to
cycle_targets=1,
if=(debuff.flame_shock.refreshable)&(time>0)
...preserving both the refreshable and time requirements.

Example:
target_if=min:debuff.flame_shock.remains,
if=time=0
translates to
cycle_targets=1,
if=time=0
...because min:debuff.flame_shock.remains will not exclude any targets.

(Yes, weird.)