Ovale Spell Priority 6.0.42

Changes from version 6.0.41:

- Generate rogue scripts from MMO-Champion SimC profiles.

- Mirror changes from SimulationCraft rogue APLs to MMO-Champion APLs.

- Don't throw an error for SimulationCraft's "nonlethal" poisons.

- Add MMO-Champion rogue profiles from the forum thread, updated 2015-01-09.

These profiles are slightly different from the default ones distributed
with SimulationCraft and are a testbed for changes to increase DPS in the
simulations.

- Update default scripts to changes in reference scripts.

Changes were mostly that the previous changes from the reference scripts
have been pushed into the SimulationCraft profiles from which the
reference scripts were generated.  This makes the default scripts simpler
to maintain going forward.

- Regenerate reference scripts from modified SimulationCraft profiles.

- When generating scripts, choose register the scripts depending on source.

Scripts generated from SimulationCraft profiles are always "reference"
scripts while those generated from other sources are normal (selectable)
scripts.

- Mage: Move Frost Bomb to the shortcd icon.

Frost Bomb can be suggested repeatedly prior to suggesting Prismatic
Crystal.  Move Frost Bomb from the main icon to the shortcd icon so that
it's more obviously blocking for Pristmatic Crystal.

This addresses ticket 475 by @draak2883.

- Summon the water elemental in-combat in case it died.

- Only refresh Rune of Power out of combat if less than 150s remaining.

- Add raid buffs and interrupts to the Warrior APLs.

- Teach the SimulationCraft translator about the preferred warrior buffs.

DPS warriors prefer Battle Shout while warrior tanks prefer Commanding
Shout.

- Add "auto_attack" to the Rogue APLs at the appropriate non-stealth times.

- Minor adjustments to subtlety rogue APL.

* Only refresh Slice and Dice out of combat if less than 18s remaining.

* Change a comparator from "=" to ">=" since it still has the same meaning
  in SimulationCraft, but Ovale doesn't understand the integer division
  happening in the condition.

- Merge the precombat APLs for the shadow priest profiles.

- Add "silence" to the Priest APLs.

- Add "rebuke" to the Paladin APLs.

- Add raid buffs, Touch of Death, interrupts and Nimble Brew to monk APLs.

* Add raid buff with Legacy of the White Tiger.
* Use Touch of Death if it will kill the target.
* Use Spear Hand Strike on cooldown.
* Use Nimble Brew to break CC effects.

- Add "counter_shot" to the Hunter APL.

- Don't cast Healing Touch so aggressively to gain Bloodtalons out of combat.

Only cast it when the buff has less than 20s remaining.

- Add "mind_freeze" to the Death Knight APLs.

- Translate SimultaionCraft's "sync=action" modifier correctly.

"sync=action" returns true only if the named action from the APL is ready,
including any modifiers on that action.

- Translate off-gcd class interrupt abilities to InterruptActions().

- Translate SimulationCraft's "auto_attack" action into GetIntoMeleeRange().

By default, don't check that the player is in melee range.  Also add some
missing function definitions for melee classes to check for melee range.

- Add localized string for "interrupt" used in scripts.

- Make suggestions for moving into melee range and interrupts optional.

Add new checkboxes to toggle the checks for "not in melee range" and for
suggesting interrupt actions.

- Automatically translate Judgment if using Glyph of Double Jeopardy.

- When translating "nimble_brew", only suggest it to break CC effects.

- Regenerate priest scripts from SimulationCraft profiles.

- Import Tier17M profiles from SimulationCraft tag "release-603-22".

- Add script to import SimulationCraft profiles into the Ovale repository.

The profiles upon which the default scripts are based will be stored in a
top-level "simulationcraft" directory.

The generate.lua and simc.t scripts have been modified to run on all the
profiles found in the simulationcraft directory.

- Translate SimulationCraft's priest operand "mind_harvest".

"mind_harvest" is 1 or 0 depending on if the target has already been
damaged by Mind Blast.  Translate into "target.MindHarvest()" which
matches the exact semantics of "mind_harvest".

- Implement Glyph of Mind Harvest for shadow priests.

Glyph of Mind Harvest causes the priest to gain two additional Shadow Orbs
when damaging the target with Mind Blast for the first time.  Implement
this with a hidden debuff applied to the target when Mind Blast hits it.

- Translate SimulationCraft's priest operand "primary_target".

Ovale has no concept of the "primary", "main", or "boss" target, so
"primary_target" should always return 1 (for true).

This addresses ticket 510 by @Zorick by causing those actions that suggest
applying DoTs to non-primary targets to fail in the condition check.

- Fix translation of SimulationCraft's "max_cycle_targets" modifier.

max_cycle_targets=N means that when cycling targets applying DoTs, to only
perform the action on at most N targets.  The translation was applying the
DoT to one more enemy than was present, which always caused it to suggest
the DoT if active_enemies<N.

- Change formatting slightly to emphasize questions in the FAQ.

- Reorder FAQ so that the spell flash question is earlier.

- Change first FAQ to describe the accuracy of the scripts.

- Translate SimulationCraft's text templating mechanism.

Text templating is basically preprocessor macro expansion.  Assume that
there is an order to the template definitions so that templates defined
later can use ones defined earlier in the file (not sure if that's
actually supported or true).  Do a straight textual substitution in the
action list before parsing it.

Fixes ticket 505 by @ShmooDude.

- Code cleanup.
