Ovale Spell Priority

Ovale Spell Priority

6M Downloads

keep getting error when i try to input frm simcraft please help

t0ka87 opened this issue ยท 2 comments

commented

Based on SimulationCraft profile "Shortyfusey".

class=warrior

spec=fury

talents=http://us.battle.net/wow/en/tool/talent-calculator#ZZ!1222121

Include(ovale_common)
Include(ovale_trinkets_mop)
Include(ovale_trinkets_wod)
Include(ovale_warrior_spells)

AddCheckBox(opt_melee_range L(not_in_melee_range) specialization=fury)
AddCheckBox(opt_use_consumables L(opt_use_consumables) default specialization=fury)

AddFunction FuryUseItemActions
{
Item(Trinket0Slot text=13 usable=1)
Item(Trinket1Slot text=14 usable=1)
}

AddFunction FuryGetInMeleeRange
{
if CheckBoxOn(opt_melee_range) and not InFlightToTarget(charge) and not InFlightToTarget(heroic_leap)
{
if target.InRange(charge) Spell(charge)
if SpellCharges(charge) == 0 and target.Distance(atLeast 8) and target.Distance(atMost 40) Spell(heroic_leap)
if not target.InRange(pummel) Texture(misc_arrowlup help=L(not_in_melee_range))
}
}

actions.default

AddFunction FuryDefaultMainActions
{
#run_action_list,name=movement,if=movement.distance>5
if target.Distance() > 5 FuryMovementMainActions()

unless target.Distance() > 5 and FuryMovementMainPostConditions()
{
    #dragon_roar,if=(equipped.convergence_of_fates&cooldown.battle_cry.remains<2)|!equipped.convergence_of_fates&(!cooldown.battle_cry.remains<=10|cooldown.battle_cry.remains<2)
    if HasEquippedItem(convergence_of_fates) and SpellCooldown(battle_cry) < 2 or not HasEquippedItem(convergence_of_fates) and { not SpellCooldown(battle_cry) <= 10 or SpellCooldown(battle_cry) < 2 } Spell(dragon_roar)
    #rampage,if=cooldown.battle_cry.remains<4&target.health.pct>20
    if SpellCooldown(battle_cry) < 4 and target.HealthPercent() > 20 Spell(rampage)
    #bloodthirst,if=equipped.kazzalax_fujiedas_fury&buff.fujiedas_fury.down
    if HasEquippedItem(kazzalax_fujiedas_fury) and BuffExpires(fujiedas_fury_buff) Spell(bloodthirst)
    #bloodbath,if=buff.dragon_roar.up|!talent.dragon_roar.enabled&buff.battle_cry.up
    if BuffPresent(dragon_roar_buff) or not Talent(dragon_roar_talent) and BuffPresent(battle_cry_buff) Spell(bloodbath)
    #run_action_list,name=cooldowns,if=buff.battle_cry.up&spell_targets.whirlwind=1
    if BuffPresent(battle_cry_buff) and Enemies() == 1 FuryCooldownsMainActions()

    unless BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsMainPostConditions()
    {
        #call_action_list,name=three_targets,if=target.health.pct>20&(spell_targets.whirlwind=3|spell_targets.whirlwind=4)
        if target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } FuryThreeTargetsMainActions()

        unless target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsMainPostConditions()
        {
            #call_action_list,name=aoe,if=spell_targets.whirlwind>4
            if Enemies() > 4 FuryAoeMainActions()

            unless Enemies() > 4 and FuryAoeMainPostConditions()
            {
                #run_action_list,name=execute,if=target.health.pct<20
                if target.HealthPercent() < 20 FuryExecuteMainActions()

                unless target.HealthPercent() < 20 and FuryExecuteMainPostConditions()
                {
                    #run_action_list,name=single_target,if=target.health.pct>20
                    if target.HealthPercent() > 20 FurySingleTargetMainActions()
                }
            }
        }
    }
}

}

AddFunction FuryDefaultMainPostConditions
{
target.Distance() > 5 and FuryMovementMainPostConditions() or BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsMainPostConditions() or target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsMainPostConditions() or Enemies() > 4 and FuryAoeMainPostConditions() or target.HealthPercent() < 20 and FuryExecuteMainPostConditions() or target.HealthPercent() > 20 and FurySingleTargetMainPostConditions()
}

AddFunction FuryDefaultShortCdActions
{
#auto_attack
FuryGetInMeleeRange()
#charge
if CheckBoxOn(opt_melee_range) and target.InRange(charge) Spell(charge)
#run_action_list,name=movement,if=movement.distance>5
if target.Distance() > 5 FuryMovementShortCdActions()

unless target.Distance() > 5 and FuryMovementShortCdPostConditions()
{
    #heroic_leap,if=(raid_event.movement.distance>25&raid_event.movement.in>45)|!raid_event.movement.exists
    if { target.Distance() > 25 and 600 > 45 or not False(raid_event_movement_exists) } and CheckBoxOn(opt_melee_range) and target.Distance(atLeast 8) and target.Distance(atMost 40) Spell(heroic_leap)

    unless { HasEquippedItem(convergence_of_fates) and SpellCooldown(battle_cry) < 2 or not HasEquippedItem(convergence_of_fates) and { not SpellCooldown(battle_cry) <= 10 or SpellCooldown(battle_cry) < 2 } } and Spell(dragon_roar) or SpellCooldown(battle_cry) < 4 and target.HealthPercent() > 20 and Spell(rampage) or HasEquippedItem(kazzalax_fujiedas_fury) and BuffExpires(fujiedas_fury_buff) and Spell(bloodthirst)
    {
        #run_action_list,name=cooldowns,if=buff.battle_cry.up&spell_targets.whirlwind=1
        if BuffPresent(battle_cry_buff) and Enemies() == 1 FuryCooldownsShortCdActions()

        unless BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsShortCdPostConditions()
        {
            #call_action_list,name=three_targets,if=target.health.pct>20&(spell_targets.whirlwind=3|spell_targets.whirlwind=4)
            if target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } FuryThreeTargetsShortCdActions()

            unless target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsShortCdPostConditions()
            {
                #call_action_list,name=aoe,if=spell_targets.whirlwind>4
                if Enemies() > 4 FuryAoeShortCdActions()

                unless Enemies() > 4 and FuryAoeShortCdPostConditions()
                {
                    #run_action_list,name=execute,if=target.health.pct<20
                    if target.HealthPercent() < 20 FuryExecuteShortCdActions()

                    unless target.HealthPercent() < 20 and FuryExecuteShortCdPostConditions()
                    {
                        #run_action_list,name=single_target,if=target.health.pct>20
                        if target.HealthPercent() > 20 FurySingleTargetShortCdActions()
                    }
                }
            }
        }
    }
}

}

AddFunction FuryDefaultShortCdPostConditions
{
target.Distance() > 5 and FuryMovementShortCdPostConditions() or { HasEquippedItem(convergence_of_fates) and SpellCooldown(battle_cry) < 2 or not HasEquippedItem(convergence_of_fates) and { not SpellCooldown(battle_cry) <= 10 or SpellCooldown(battle_cry) < 2 } } and Spell(dragon_roar) or SpellCooldown(battle_cry) < 4 and target.HealthPercent() > 20 and Spell(rampage) or HasEquippedItem(kazzalax_fujiedas_fury) and BuffExpires(fujiedas_fury_buff) and Spell(bloodthirst) or BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsShortCdPostConditions() or target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsShortCdPostConditions() or Enemies() > 4 and FuryAoeShortCdPostConditions() or target.HealthPercent() < 20 and FuryExecuteShortCdPostConditions() or target.HealthPercent() > 20 and FurySingleTargetShortCdPostConditions()
}

AddFunction FuryDefaultCdActions
{
#run_action_list,name=movement,if=movement.distance>5
if target.Distance() > 5 FuryMovementCdActions()

unless target.Distance() > 5 and FuryMovementCdPostConditions()
{
    #potion,name=old_war,if=buff.battle_cry.up&(buff.avatar.up|!talent.avatar.enabled)
    if BuffPresent(battle_cry_buff) and { BuffPresent(avatar_buff) or not Talent(avatar_talent) } and CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(old_war_potion usable=1)

    unless { HasEquippedItem(convergence_of_fates) and SpellCooldown(battle_cry) < 2 or not HasEquippedItem(convergence_of_fates) and { not SpellCooldown(battle_cry) <= 10 or SpellCooldown(battle_cry) < 2 } } and Spell(dragon_roar) or SpellCooldown(battle_cry) < 4 and target.HealthPercent() > 20 and Spell(rampage) or HasEquippedItem(kazzalax_fujiedas_fury) and BuffExpires(fujiedas_fury_buff) and Spell(bloodthirst)
    {
        #avatar,if=buff.battle_cry.remains>6|cooldown.battle_cry.remains<10|(target.time_to_die<(cooldown.battle_cry.remains+10))
        if BuffRemaining(battle_cry_buff) > 6 or SpellCooldown(battle_cry) < 10 or target.TimeToDie() < SpellCooldown(battle_cry) + 10 Spell(avatar)
        #use_item,name=umbral_moonglaives,if=equipped.umbral_moonglaives&(cooldown.battle_cry.remains>gcd&cooldown.battle_cry.remains<2|cooldown.battle_cry.remains=0)
        if HasEquippedItem(umbral_moonglaives) and { SpellCooldown(battle_cry) > GCD() and SpellCooldown(battle_cry) < 2 or not SpellCooldown(battle_cry) > 0 } FuryUseItemActions()
        #battle_cry,if=gcd.remains=0&talent.reckless_abandon.enabled&(equipped.umbral_moonglaives&(prev_off_gcd.umbral_moonglaives|(trinket.cooldown.remains>3&trinket.cooldown.remains<90))|!equipped.umbral_moonglaives)
        if not 0 > 0 and Talent(reckless_abandon_talent) and { HasEquippedItem(umbral_moonglaives) and { PreviousOffGCDSpell(umbral_moonglaives) or FIXME_trinket.cooldown.remains > 3 and FIXME_trinket.cooldown.remains < 90 } or not HasEquippedItem(umbral_moonglaives) } Spell(battle_cry)
        #battle_cry,if=gcd.remains=0&talent.bladestorm.enabled&(raid_event.adds.in>90|!raid_event.adds.exists|spell_targets.bladestorm_mh>desired_targets)
        if not 0 > 0 and Talent(bladestorm_talent) and { 600 > 90 or not False(raid_event_adds_exists) or Enemies() > Enemies(tagged=1) } Spell(battle_cry)
        #battle_cry,if=gcd.remains=0&buff.dragon_roar.up&(cooldown.bloodthirst.remains=0|buff.enrage.remains>cooldown.bloodthirst.remains)
        if not 0 > 0 and BuffPresent(dragon_roar_buff) and { not SpellCooldown(bloodthirst) > 0 or EnrageRemaining() > SpellCooldown(bloodthirst) } Spell(battle_cry)
        #blood_fury,if=buff.battle_cry.up
        if BuffPresent(battle_cry_buff) Spell(blood_fury_ap)
        #berserking,if=buff.battle_cry.up
        if BuffPresent(battle_cry_buff) Spell(berserking)
        #arcane_torrent,if=rage<rage.max-40
        if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
        #run_action_list,name=cooldowns,if=buff.battle_cry.up&spell_targets.whirlwind=1
        if BuffPresent(battle_cry_buff) and Enemies() == 1 FuryCooldownsCdActions()

        unless BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsCdPostConditions()
        {
            #call_action_list,name=three_targets,if=target.health.pct>20&(spell_targets.whirlwind=3|spell_targets.whirlwind=4)
            if target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } FuryThreeTargetsCdActions()

            unless target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsCdPostConditions()
            {
                #call_action_list,name=aoe,if=spell_targets.whirlwind>4
                if Enemies() > 4 FuryAoeCdActions()

                unless Enemies() > 4 and FuryAoeCdPostConditions()
                {
                    #run_action_list,name=execute,if=target.health.pct<20
                    if target.HealthPercent() < 20 FuryExecuteCdActions()

                    unless target.HealthPercent() < 20 and FuryExecuteCdPostConditions()
                    {
                        #run_action_list,name=single_target,if=target.health.pct>20
                        if target.HealthPercent() > 20 FurySingleTargetCdActions()
                    }
                }
            }
        }
    }
}

}

AddFunction FuryDefaultCdPostConditions
{
target.Distance() > 5 and FuryMovementCdPostConditions() or { HasEquippedItem(convergence_of_fates) and SpellCooldown(battle_cry) < 2 or not HasEquippedItem(convergence_of_fates) and { not SpellCooldown(battle_cry) <= 10 or SpellCooldown(battle_cry) < 2 } } and Spell(dragon_roar) or SpellCooldown(battle_cry) < 4 and target.HealthPercent() > 20 and Spell(rampage) or HasEquippedItem(kazzalax_fujiedas_fury) and BuffExpires(fujiedas_fury_buff) and Spell(bloodthirst) or BuffPresent(battle_cry_buff) and Enemies() == 1 and FuryCooldownsCdPostConditions() or target.HealthPercent() > 20 and { Enemies() == 3 or Enemies() == 4 } and FuryThreeTargetsCdPostConditions() or Enemies() > 4 and FuryAoeCdPostConditions() or target.HealthPercent() < 20 and FuryExecuteCdPostConditions() or target.HealthPercent() > 20 and FurySingleTargetCdPostConditions()
}

actions.aoe

AddFunction FuryAoeMainActions
{
#bloodthirst,if=buff.enrage.down|rage<90
if not IsEnraged() or Rage() < 90 Spell(bloodthirst)
#whirlwind,if=buff.meat_cleaver.down
if BuffExpires(meat_cleaver_buff) Spell(whirlwind)
#rampage,if=buff.meat_cleaver.up&(buff.enrage.down&!talent.frothing_berserker.enabled|buff.massacre.react|rage>=100)
if BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } Spell(rampage)
#bloodthirst
Spell(bloodthirst)
#whirlwind
Spell(whirlwind)
}

AddFunction FuryAoeMainPostConditions
{
}

AddFunction FuryAoeShortCdActions
{
unless { not IsEnraged() or Rage() < 90 } and Spell(bloodthirst)
{
#bladestorm,if=buff.enrage.remains>2&(raid_event.adds.in>90|!raid_event.adds.exists|spell_targets.bladestorm_mh>desired_targets)
if EnrageRemaining() > 2 and { 600 > 90 or not False(raid_event_adds_exists) or Enemies() > Enemies(tagged=1) } Spell(bladestorm_fury)
}
}

AddFunction FuryAoeShortCdPostConditions
{
{ not IsEnraged() or Rage() < 90 } and Spell(bloodthirst) or BuffExpires(meat_cleaver_buff) and Spell(whirlwind) or BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } and Spell(rampage) or Spell(bloodthirst) or Spell(whirlwind)
}

AddFunction FuryAoeCdActions
{
}

AddFunction FuryAoeCdPostConditions
{
{ not IsEnraged() or Rage() < 90 } and Spell(bloodthirst) or EnrageRemaining() > 2 and { 600 > 90 or not False(raid_event_adds_exists) or Enemies() > Enemies(tagged=1) } and Spell(bladestorm_fury) or BuffExpires(meat_cleaver_buff) and Spell(whirlwind) or BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } and Spell(rampage) or Spell(bloodthirst) or Spell(whirlwind)
}

actions.cooldowns

AddFunction FuryCooldownsMainActions
{
#rampage,if=talent.massacre.enabled&buff.massacre.react&buff.enrage.remains<1
if Talent(massacre_talent) and BuffPresent(massacre_buff) and EnrageRemaining() < 1 Spell(rampage)
#bloodthirst,if=target.health.pct<20&buff.enrage.remains<1
if target.HealthPercent() < 20 and EnrageRemaining() < 1 Spell(bloodthirst)
#execute,if=equipped.draught_of_souls&cooldown.draught_of_souls.remains<1&buff.juggernaut.remains<3
if HasEquippedItem(draught_of_souls) and SpellCooldown(draught_of_souls) < 1 and BuffRemaining(juggernaut_buff) < 3 Spell(execute)
#odyns_fury,if=buff.enrage.up&cooldown.raging_blow.remains>0&target.health.pct>20
if IsEnraged() and SpellCooldown(raging_blow) > 0 and target.HealthPercent() > 20 Spell(odyns_fury)
#execute
Spell(execute)
#raging_blow,if=talent.inner_rage.enabled&buff.enrage.up
if Talent(inner_rage_talent) and IsEnraged() Spell(raging_blow)
#rampage,if=talent.reckless_abandon.enabled&!talent.frothing_berserker.enabled|(talent.frothing_berserker.enabled&rage>=100)
if Talent(reckless_abandon_talent) and not Talent(frothing_berserker_talent) or Talent(frothing_berserker_talent) and Rage() >= 100 Spell(rampage)
#bloodthirst,if=buff.enrage.remains<1&!talent.outburst.enabled
if EnrageRemaining() < 1 and not Talent(outburst_talent) Spell(bloodthirst)
#raging_blow
Spell(raging_blow)
#bloodthirst
Spell(bloodthirst)
#whirlwind,if=buff.wrecking_ball.react&buff.enrage.up
if BuffPresent(wrecking_ball_buff) and IsEnraged() Spell(whirlwind)
#furious_slash
Spell(furious_slash)
}

AddFunction FuryCooldownsMainPostConditions
{
}

AddFunction FuryCooldownsShortCdActions
{
unless Talent(massacre_talent) and BuffPresent(massacre_buff) and EnrageRemaining() < 1 and Spell(rampage) or target.HealthPercent() < 20 and EnrageRemaining() < 1 and Spell(bloodthirst) or HasEquippedItem(draught_of_souls) and SpellCooldown(draught_of_souls) < 1 and BuffRemaining(juggernaut_buff) < 3 and Spell(execute) or IsEnraged() and SpellCooldown(raging_blow) > 0 and target.HealthPercent() > 20 and Spell(odyns_fury) or Spell(execute) or Talent(inner_rage_talent) and IsEnraged() and Spell(raging_blow) or { Talent(reckless_abandon_talent) and not Talent(frothing_berserker_talent) or Talent(frothing_berserker_talent) and Rage() >= 100 } and Spell(rampage)
{
#berserker_rage,if=talent.outburst.enabled&buff.enrage.down&buff.battle_cry.up
if Talent(outburst_talent) and not IsEnraged() and BuffPresent(battle_cry_buff) Spell(berserker_rage)
}
}

AddFunction FuryCooldownsShortCdPostConditions
{
Talent(massacre_talent) and BuffPresent(massacre_buff) and EnrageRemaining() < 1 and Spell(rampage) or target.HealthPercent() < 20 and EnrageRemaining() < 1 and Spell(bloodthirst) or HasEquippedItem(draught_of_souls) and SpellCooldown(draught_of_souls) < 1 and BuffRemaining(juggernaut_buff) < 3 and Spell(execute) or IsEnraged() and SpellCooldown(raging_blow) > 0 and target.HealthPercent() > 20 and Spell(odyns_fury) or Spell(execute) or Talent(inner_rage_talent) and IsEnraged() and Spell(raging_blow) or { Talent(reckless_abandon_talent) and not Talent(frothing_berserker_talent) or Talent(frothing_berserker_talent) and Rage() >= 100 } and Spell(rampage) or EnrageRemaining() < 1 and not Talent(outburst_talent) and Spell(bloodthirst) or Spell(raging_blow) or Spell(bloodthirst) or BuffPresent(wrecking_ball_buff) and IsEnraged() and Spell(whirlwind) or Spell(furious_slash)
}

AddFunction FuryCooldownsCdActions
{
}

AddFunction FuryCooldownsCdPostConditions
{
Talent(massacre_talent) and BuffPresent(massacre_buff) and EnrageRemaining() < 1 and Spell(rampage) or target.HealthPercent() < 20 and EnrageRemaining() < 1 and Spell(bloodthirst) or HasEquippedItem(draught_of_souls) and SpellCooldown(draught_of_souls) < 1 and BuffRemaining(juggernaut_buff) < 3 and Spell(execute) or IsEnraged() and SpellCooldown(raging_blow) > 0 and target.HealthPercent() > 20 and Spell(odyns_fury) or Spell(execute) or Talent(inner_rage_talent) and IsEnraged() and Spell(raging_blow) or { Talent(reckless_abandon_talent) and not Talent(frothing_berserker_talent) or Talent(frothing_berserker_talent) and Rage() >= 100 } and Spell(rampage) or EnrageRemaining() < 1 and not Talent(outburst_talent) and Spell(bloodthirst) or Spell(raging_blow) or Spell(bloodthirst) or BuffPresent(wrecking_ball_buff) and IsEnraged() and Spell(whirlwind) or Spell(furious_slash)
}

actions.execute

AddFunction FuryExecuteMainActions
{
#bloodthirst,if=buff.fujiedas_fury.up&buff.fujiedas_fury.remains<2
if BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 Spell(bloodthirst)
#execute,if=artifact.juggernaut.enabled&(!buff.juggernaut.up|buff.juggernaut.remains<2)|buff.stone_heart.react
if HasArtifactTrait(juggernaut) and { not BuffPresent(juggernaut_buff) or BuffRemaining(juggernaut_buff) < 2 } or BuffPresent(stone_heart_buff) Spell(execute)
#furious_slash,if=talent.frenzy.enabled&buff.frenzy.remains<=2
if Talent(frenzy_talent) and BuffRemaining(frenzy_buff) <= 2 Spell(furious_slash)
#execute,if=cooldown.battle_cry.remains<5
if SpellCooldown(battle_cry) < 5 Spell(execute)
#rampage,if=buff.massacre.react&buff.enrage.remains<1
if BuffPresent(massacre_buff) and EnrageRemaining() < 1 Spell(rampage)
#execute
Spell(execute)
#bloodthirst
Spell(bloodthirst)
#furious_slash,if=set_bonus.tier19_2pc
if ArmorSetBonus(T19 2) Spell(furious_slash)
#raging_blow
Spell(raging_blow)
#odyns_fury,if=buff.enrage.up&rage<100
if IsEnraged() and Rage() < 100 Spell(odyns_fury)
#furious_slash
Spell(furious_slash)
}

AddFunction FuryExecuteMainPostConditions
{
}

AddFunction FuryExecuteShortCdActions
{
}

AddFunction FuryExecuteShortCdPostConditions
{
BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 and Spell(bloodthirst) or { HasArtifactTrait(juggernaut) and { not BuffPresent(juggernaut_buff) or BuffRemaining(juggernaut_buff) < 2 } or BuffPresent(stone_heart_buff) } and Spell(execute) or Talent(frenzy_talent) and BuffRemaining(frenzy_buff) <= 2 and Spell(furious_slash) or SpellCooldown(battle_cry) < 5 and Spell(execute) or BuffPresent(massacre_buff) and EnrageRemaining() < 1 and Spell(rampage) or Spell(execute) or Spell(bloodthirst) or ArmorSetBonus(T19 2) and Spell(furious_slash) or Spell(raging_blow) or IsEnraged() and Rage() < 100 and Spell(odyns_fury) or Spell(furious_slash)
}

AddFunction FuryExecuteCdActions
{
}

AddFunction FuryExecuteCdPostConditions
{
BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 and Spell(bloodthirst) or { HasArtifactTrait(juggernaut) and { not BuffPresent(juggernaut_buff) or BuffRemaining(juggernaut_buff) < 2 } or BuffPresent(stone_heart_buff) } and Spell(execute) or Talent(frenzy_talent) and BuffRemaining(frenzy_buff) <= 2 and Spell(furious_slash) or SpellCooldown(battle_cry) < 5 and Spell(execute) or BuffPresent(massacre_buff) and EnrageRemaining() < 1 and Spell(rampage) or Spell(execute) or Spell(bloodthirst) or ArmorSetBonus(T19 2) and Spell(furious_slash) or Spell(raging_blow) or IsEnraged() and Rage() < 100 and Spell(odyns_fury) or Spell(furious_slash)
}

actions.movement

AddFunction FuryMovementMainActions
{
}

AddFunction FuryMovementMainPostConditions
{
}

AddFunction FuryMovementShortCdActions
{
#heroic_leap
if CheckBoxOn(opt_melee_range) and target.Distance(atLeast 8) and target.Distance(atMost 40) Spell(heroic_leap)
}

AddFunction FuryMovementShortCdPostConditions
{
}

AddFunction FuryMovementCdActions
{
}

AddFunction FuryMovementCdPostConditions
{
}

actions.precombat

AddFunction FuryPrecombatMainActions
{
}

AddFunction FuryPrecombatMainPostConditions
{
}

AddFunction FuryPrecombatShortCdActions
{
}

AddFunction FuryPrecombatShortCdPostConditions
{
}

AddFunction FuryPrecombatCdActions
{
#flask,type=countless_armies
#food,type=lavish_suramar_feast
#augmentation,type=defiled
#snapshot_stats
#potion,name=old_war
if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(old_war_potion usable=1)
}

AddFunction FuryPrecombatCdPostConditions
{
}

actions.single_target

AddFunction FurySingleTargetMainActions
{
#bloodthirst,if=buff.fujiedas_fury.up&buff.fujiedas_fury.remains<2
if BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 Spell(bloodthirst)
#furious_slash,if=talent.frenzy.enabled&(buff.frenzy.down|buff.frenzy.remains<=2)
if Talent(frenzy_talent) and { BuffExpires(frenzy_buff) or BuffRemaining(frenzy_buff) <= 2 } Spell(furious_slash)
#raging_blow,if=buff.enrage.up&talent.inner_rage.enabled
if IsEnraged() and Talent(inner_rage_talent) Spell(raging_blow)
#rampage,if=target.health.pct>21&((buff.enrage.down&!talent.frothing_berserker.enabled)|buff.massacre.react|rage>=100)
if target.HealthPercent() > 21 and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } Spell(rampage)
#execute,if=buff.stone_heart.react&((talent.inner_rage.enabled&cooldown.raging_blow.remains>1)|buff.enrage.up)
if BuffPresent(stone_heart_buff) and { Talent(inner_rage_talent) and SpellCooldown(raging_blow) > 1 or IsEnraged() } Spell(execute)
#bloodthirst
Spell(bloodthirst)
#furious_slash,if=set_bonus.tier19_2pc&!talent.inner_rage.enabled
if ArmorSetBonus(T19 2) and not Talent(inner_rage_talent) Spell(furious_slash)
#raging_blow
Spell(raging_blow)
#whirlwind,if=buff.wrecking_ball.react&buff.enrage.up
if BuffPresent(wrecking_ball_buff) and IsEnraged() Spell(whirlwind)
#furious_slash
Spell(furious_slash)
}

AddFunction FurySingleTargetMainPostConditions
{
}

AddFunction FurySingleTargetShortCdActions
{
}

AddFunction FurySingleTargetShortCdPostConditions
{
BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 and Spell(bloodthirst) or Talent(frenzy_talent) and { BuffExpires(frenzy_buff) or BuffRemaining(frenzy_buff) <= 2 } and Spell(furious_slash) or IsEnraged() and Talent(inner_rage_talent) and Spell(raging_blow) or target.HealthPercent() > 21 and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } and Spell(rampage) or BuffPresent(stone_heart_buff) and { Talent(inner_rage_talent) and SpellCooldown(raging_blow) > 1 or IsEnraged() } and Spell(execute) or Spell(bloodthirst) or ArmorSetBonus(T19 2) and not Talent(inner_rage_talent) and Spell(furious_slash) or Spell(raging_blow) or BuffPresent(wrecking_ball_buff) and IsEnraged() and Spell(whirlwind) or Spell(furious_slash)
}

AddFunction FurySingleTargetCdActions
{
}

AddFunction FurySingleTargetCdPostConditions
{
BuffPresent(fujiedas_fury_buff) and BuffRemaining(fujiedas_fury_buff) < 2 and Spell(bloodthirst) or Talent(frenzy_talent) and { BuffExpires(frenzy_buff) or BuffRemaining(frenzy_buff) <= 2 } and Spell(furious_slash) or IsEnraged() and Talent(inner_rage_talent) and Spell(raging_blow) or target.HealthPercent() > 21 and { not IsEnraged() and not Talent(frothing_berserker_talent) or BuffPresent(massacre_buff) or Rage() >= 100 } and Spell(rampage) or BuffPresent(stone_heart_buff) and { Talent(inner_rage_talent) and SpellCooldown(raging_blow) > 1 or IsEnraged() } and Spell(execute) or Spell(bloodthirst) or ArmorSetBonus(T19 2) and not Talent(inner_rage_talent) and Spell(furious_slash) or Spell(raging_blow) or BuffPresent(wrecking_ball_buff) and IsEnraged() and Spell(whirlwind) or Spell(furious_slash)
}

actions.three_targets

AddFunction FuryThreeTargetsMainActions
{
#execute,if=buff.stone_heart.react
if BuffPresent(stone_heart_buff) Spell(execute)
#rampage,if=buff.meat_cleaver.up&((buff.enrage.down&!talent.frothing_berserker.enabled)|(rage>=100&talent.frothing_berserker.enabled))|buff.massacre.react
if BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or Rage() >= 100 and Talent(frothing_berserker_talent) } or BuffPresent(massacre_buff) Spell(rampage)
#raging_blow,if=talent.inner_rage.enabled
if Talent(inner_rage_talent) Spell(raging_blow)
#bloodthirst
Spell(bloodthirst)
#whirlwind
Spell(whirlwind)
}

AddFunction FuryThreeTargetsMainPostConditions
{
}

AddFunction FuryThreeTargetsShortCdActions
{
}

AddFunction FuryThreeTargetsShortCdPostConditions
{
BuffPresent(stone_heart_buff) and Spell(execute) or { BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or Rage() >= 100 and Talent(frothing_berserker_talent) } or BuffPresent(massacre_buff) } and Spell(rampage) or Talent(inner_rage_talent) and Spell(raging_blow) or Spell(bloodthirst) or Spell(whirlwind)
}

AddFunction FuryThreeTargetsCdActions
{
}

AddFunction FuryThreeTargetsCdPostConditions
{
BuffPresent(stone_heart_buff) and Spell(execute) or { BuffPresent(meat_cleaver_buff) and { not IsEnraged() and not Talent(frothing_berserker_talent) or Rage() >= 100 and Talent(frothing_berserker_talent) } or BuffPresent(massacre_buff) } and Spell(rampage) or Talent(inner_rage_talent) and Spell(raging_blow) or Spell(bloodthirst) or Spell(whirlwind)
}

Fury icons.

AddCheckBox(opt_warrior_fury_aoe L(AOE) default specialization=fury)

AddIcon checkbox=!opt_warrior_fury_aoe enemies=1 help=shortcd specialization=fury
{
if not InCombat() FuryPrecombatShortCdActions()
unless not InCombat() and FuryPrecombatShortCdPostConditions()
{
FuryDefaultShortCdActions()
}
}

AddIcon checkbox=opt_warrior_fury_aoe help=shortcd specialization=fury
{
if not InCombat() FuryPrecombatShortCdActions()
unless not InCombat() and FuryPrecombatShortCdPostConditions()
{
FuryDefaultShortCdActions()
}
}

AddIcon enemies=1 help=main specialization=fury
{
if not InCombat() FuryPrecombatMainActions()
unless not InCombat() and FuryPrecombatMainPostConditions()
{
FuryDefaultMainActions()
}
}

AddIcon checkbox=opt_warrior_fury_aoe help=aoe specialization=fury
{
if not InCombat() FuryPrecombatMainActions()
unless not InCombat() and FuryPrecombatMainPostConditions()
{
FuryDefaultMainActions()
}
}

AddIcon checkbox=!opt_warrior_fury_aoe enemies=1 help=cd specialization=fury
{
if not InCombat() FuryPrecombatCdActions()
unless not InCombat() and FuryPrecombatCdPostConditions()
{
FuryDefaultCdActions()
}
}

AddIcon checkbox=opt_warrior_fury_aoe help=cd specialization=fury
{
if not InCombat() FuryPrecombatCdActions()
unless not InCombat() and FuryPrecombatCdPostConditions()
{
FuryDefaultCdActions()
}
}

Required symbols

arcane_torrent_rage

avatar

avatar_buff

avatar_talent

battle_cry

battle_cry_buff

berserker_rage

berserking

bladestorm_fury

bladestorm_talent

blood_fury_ap

bloodbath

bloodthirst

charge

convergence_of_fates

dragon_roar

dragon_roar_buff

dragon_roar_talent

draught_of_souls

execute

frenzy_buff

frenzy_talent

frothing_berserker_talent

fujiedas_fury_buff

furious_slash

heroic_leap

inner_rage_talent

juggernaut

juggernaut_buff

kazzalax_fujiedas_fury

massacre_buff

massacre_talent

meat_cleaver_buff

odyns_fury

old_war_potion

outburst_talent

pummel

raging_blow

rampage

reckless_abandon_talent

stone_heart_buff

umbral_moonglaives

whirlwind

wrecking_ball_buff

commented

Should be fixed in beta version

commented

this is where the error occurs

#avatar,if=buff.battle_cry.remains>6|cooldown.battle_cry.remains<10|(target.time_to_die<(cooldown.battle_cry.remains+10)) if BuffRemaining(battle_cry_buff) > 6 or SpellCooldown(battle_cry) < 10 or target.TimeToDie() < SpellCooldown(battle_cry) + 10 Spell(avatar) #use_item,name=umbral_moonglaives,if=equipped.umbral_moonglaives&(cooldown.battle_cry.remains>gcd&cooldown.battle_cry.remains<2|cooldown.battle_cry.remains=0) if HasEquippedItem(umbral_moonglaives) and { SpellCooldown(battle_cry) > GCD() and SpellCooldown(battle_cry) < 2 or not SpellCooldown(battle_cry) > 0 } FuryUseItemActions() #battle_cry,if=gcd.remains=0&talent.reckless_abandon.enabled&(equipped.umbral_moonglaives&(prev_off_gcd.umbral_moonglaives|(trinket.cooldown.remains>3&trinket.cooldown.remains<90))|!equipped.umbral_moonglaives) if not 0 > 0 and Talent(reckless_abandon_talent) and { HasEquippedItem(umbral_moonglaives) and { PreviousOffGCDSpell(umbral_moonglaives) or FIXME_trinket.cooldown.remains > 3 and FIXME_trinket.cooldown.remains < 90 } or not HasEquippedItem(umbral_moonglaives) } Spell(battle_cry) #battle_cry,if=gcd.remains=0&talent.bladestorm.enabled&(raid_event.adds.in>90|!raid_event.adds.exists|spell_targets.bladestorm_mh>desired_targets) if not 0 > 0 and Talent(bladestorm_talent) and { 600 > 90 or not False(raid_event_adds_exists) or Enemies() > Enemies(tagged=1) } Spell(battle_cry) #battle_cry,if=gcd.remains=0&buff.dragon_roar.up&(cooldown.bloodthirst.remains=0|buff.enrage.remains>cooldown.bloodthirst.remains) if not 0 > 0 and BuffPresent(dragon_roar_buff) and { not SpellCooldown(bloodthirst) > 0 or EnrageRemaining() > SpellCooldown(bloodthirst) } Spell(battle_cry) #blood_fury,if=buff.battle_cry.up if BuffPresent(battle_cry_buff) Spell(blood_fury_ap) #berserking,if=buff.battle_cry.up if BuffPresent(battle_cry_buff) Spell(berserking) #arcane_torrent,if=rage<rage.max-40 if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage) #run_action_list,name=cooldowns,if=buff.battle_cry.up&spell_targets.whirlwind=1 if BuffPresent(battle_cry_buff) and Enemies() == 1 FuryCooldownsCdActions()