From 52db1aaf9c13d13f46fca31dd4000ef4a4e83c35 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Sun, 6 Apr 2014 18:46:13 +0000 Subject: [PATCH] Reorganize file layout a bit to allow for class-specific state to be kept. Also rename a few XML files to "files.xml" when listing/loading all of the files in a directory. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1269 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- Ovale.toc | 6 +- class/DeathKnight.lua | 196 ++++++++++++++++++++++++++ class/Druid.lua | 282 ++++++++++++++++++++++++++++++++++++++ class/Hunter.lua | 245 +++++++++++++++++++++++++++++++++ class/Mage.lua | 237 ++++++++++++++++++++++++++++++++ class/Monk.lua | 104 ++++++++++++++ class/Paladin.lua | 108 +++++++++++++++ class/Priest.lua | 128 +++++++++++++++++ class/Rogue.lua | 209 ++++++++++++++++++++++++++++ class/Shaman.lua | 219 +++++++++++++++++++++++++++++ class/Warlock.lua | 310 ++++++++++++++++++++++++++++++++++++++++++ class/Warrior.lua | 284 ++++++++++++++++++++++++++++++++++++++ class/files.xml | 13 ++ compiler.pl | 2 +- conditions/conditions.xml | 107 --------------- conditions/files.xml | 107 +++++++++++++++ locales/files.xml | 15 ++ locales/locales.xml | 15 -- scripts/OvaleDeathKnight.lua | 196 -------------------------- scripts/OvaleDruid.lua | 282 -------------------------------------- scripts/OvaleHunter.lua | 245 --------------------------------- scripts/OvaleMage.lua | 237 -------------------------------- scripts/OvaleMonk.lua | 104 -------------- scripts/OvalePaladin.lua | 108 --------------- scripts/OvalePriest.lua | 128 ----------------- scripts/OvaleRogue.lua | 209 ---------------------------- scripts/OvaleShaman.lua | 219 ----------------------------- scripts/OvaleWarlock.lua | 310 ------------------------------------------ scripts/OvaleWarrior.lua | 284 -------------------------------------- scripts/scripts.xml | 13 -- 30 files changed, 2461 insertions(+), 2461 deletions(-) create mode 100644 class/DeathKnight.lua create mode 100644 class/Druid.lua create mode 100644 class/Hunter.lua create mode 100644 class/Mage.lua create mode 100644 class/Monk.lua create mode 100644 class/Paladin.lua create mode 100644 class/Priest.lua create mode 100644 class/Rogue.lua create mode 100644 class/Shaman.lua create mode 100644 class/Warlock.lua create mode 100644 class/Warrior.lua create mode 100644 class/files.xml delete mode 100644 conditions/conditions.xml create mode 100644 conditions/files.xml create mode 100644 locales/files.xml delete mode 100644 locales/locales.xml delete mode 100644 scripts/OvaleDeathKnight.lua delete mode 100644 scripts/OvaleDruid.lua delete mode 100644 scripts/OvaleHunter.lua delete mode 100644 scripts/OvaleMage.lua delete mode 100644 scripts/OvaleMonk.lua delete mode 100644 scripts/OvalePaladin.lua delete mode 100644 scripts/OvalePriest.lua delete mode 100644 scripts/OvaleRogue.lua delete mode 100644 scripts/OvaleShaman.lua delete mode 100644 scripts/OvaleWarlock.lua delete mode 100644 scripts/OvaleWarrior.lua delete mode 100644 scripts/scripts.xml diff --git a/Ovale.toc b/Ovale.toc index 72ad35f..2ee460d 100644 --- a/Ovale.toc +++ b/Ovale.toc @@ -14,7 +14,7 @@ #@no-lib-strip@ embeds.xml #@end-no-lib-strip@ -locales\locales.xml +locales\files.xml Ovale.lua @@ -61,5 +61,5 @@ OvaleRunes.lua OvaleSkada.lua OvaleSpellDamage.lua OvaleSwing.lua -conditions\conditions.xml -scripts\scripts.xml +class\files.xml +conditions\files.xml diff --git a/class/DeathKnight.lua b/class/DeathKnight.lua new file mode 100644 index 0000000..725720b --- /dev/null +++ b/class/DeathKnight.lua @@ -0,0 +1,196 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Frost, Unholy" + local code = [[ +Define(army_of_the_dead 42650) + SpellInfo(army_of_the_dead duration=4 frost=1 blood=1 unholy=1 runicpower=-300 cd=600 ) + SpellAddBuff(army_of_the_dead army_of_the_dead=1) +Define(blood_charge 114851) + SpellInfo(blood_charge duration=25 ) + SpellAddBuff(blood_charge blood_charge=1) +Define(blood_fury 20572) + SpellInfo(blood_fury duration=15 cd=120 ) + SpellAddBuff(blood_fury blood_fury=1) +Define(blood_plague 55078) + SpellInfo(blood_plague duration=30 tick=3 ) + SpellAddTargetDebuff(blood_plague blood_plague=1) +Define(blood_tap 45529) +Define(dark_transformation 63560) + SpellInfo(dark_transformation duration=30 unholy=1 runicpower=-100 ) + SpellAddBuff(dark_transformation dark_transformation=1) +Define(death_and_decay 43265) + SpellInfo(death_and_decay duration=10 unholy=1 runicpower=-100 cd=30 ) + SpellAddBuff(death_and_decay death_and_decay=1) +Define(death_coil 47541) + SpellInfo(death_coil runicpower=400 ) +Define(empower_rune_weapon 47568) + SpellInfo(empower_rune_weapon runicpower=-250 cd=300 ) +Define(festering_strike 85948) + SpellInfo(festering_strike frost=1 blood=1 runicpower=-200 ) +Define(frost_fever 55095) + SpellInfo(frost_fever duration=30 tick=3 ) + SpellAddTargetDebuff(frost_fever frost_fever=1) +Define(frost_presence 48266) + SpellAddBuff(frost_presence frost_presence=1) +Define(frost_strike 49143) + SpellInfo(frost_strike runicpower=350 ) +Define(golems_strength 79634) + SpellInfo(golems_strength duration=25 cd=1 ) + SpellAddBuff(golems_strength golems_strength=1) +Define(horn_of_winter 57330) + SpellInfo(horn_of_winter duration=300 runicpower=-100 cd=20 ) + SpellAddBuff(horn_of_winter horn_of_winter=1) +Define(howling_blast 49184) + SpellInfo(howling_blast frost=1 runicpower=-100 ) +Define(killing_machine 51128) +Define(mogu_power_potion_aura 105706) + SpellInfo(mogu_power_potion_aura duration=25 cd=1 ) + SpellAddBuff(mogu_power_potion_aura mogu_power_potion_aura=1) +Define(obliterate 49020) + SpellInfo(obliterate frost=1 unholy=1 runicpower=-200 ) +Define(outbreak 77575) + SpellInfo(outbreak runicpower=0 cd=60 ) +Define(pillar_of_frost 51271) + SpellInfo(pillar_of_frost duration=20 frost=1 runicpower=-100 cd=60 ) + SpellAddBuff(pillar_of_frost pillar_of_frost=1) +Define(plague_leech 123693) + SpellInfo(plague_leech cd=25 ) +Define(plague_strike 45462) + SpellInfo(plague_strike unholy=1 runicpower=-100 ) +Define(raise_dead 46584) + SpellInfo(raise_dead cd=120 ) + SpellAddBuff(raise_dead raise_dead=1) +Define(rime 59057) +Define(runic_corruption 51460) + SpellInfo(runic_corruption duration=3 ) + SpellAddBuff(runic_corruption runic_corruption=1) +Define(scourge_strike 55090) + SpellInfo(scourge_strike unholy=1 runicpower=-100 ) +Define(shadow_infusion 49572) +Define(soul_reaper 114866) + SpellInfo(soul_reaper duration=5 blood=1 runicpower=-100 cd=6 ) + SpellAddBuff(soul_reaper soul_reaper=1) +Define(sudden_doom 49530) +Define(summon_gargoyle 49206) + SpellInfo(summon_gargoyle duration=40 cd=180 ) + SpellAddBuff(summon_gargoyle summon_gargoyle=1) +Define(unholy_blight 115989) + SpellInfo(unholy_blight duration=10 cd=90 ) + SpellAddBuff(unholy_blight unholy_blight=1) +Define(unholy_frenzy 49016) + SpellInfo(unholy_frenzy duration=30 cd=180 ) + SpellAddBuff(unholy_frenzy unholy_frenzy=1) +Define(unholy_presence 48265) + SpellAddBuff(unholy_presence unholy_presence=1) +Define(blood_tap_talent 13) +Define(plague_leech_talent 2) +Define(runic_corruption_talent 15) +Define(runic_empowerment_talent 14) +Define(unholy_blight_talent 3) +AddIcon mastery=2 help=main +{ + if not InCombat() + { + unless Stance(2) Spell(frost_presence) + Spell(horn_of_winter) + } + if BuffStacks(killing_machine) or RunicPower() >88 Spell(frost_strike) + if TalentPoints(plague_leech_talent) and {target.DebuffRemains(blood_plague) <3 or target.DebuffRemains(frost_fever) <3 or SpellCooldown(outbreak) <1 } Spell(plague_leech) + if target.DebuffRemains(frost_fever) <3 or target.DebuffRemains(blood_plague) <3 Spell(outbreak) + if target.HealthPercent() -{3 *target.HealthPercent() /target.DeadIn() } <=35 Spell(soul_reaper) + if not target.DebuffPresent(frost_fever) Spell(howling_blast) + if not target.DebuffPresent(blood_plague) Spell(plague_strike) + if BuffStacks(rime) Spell(howling_blast) + if RunicPower() >76 Spell(frost_strike) + if RuneCount(unholy) >1 Spell(obliterate) + if RuneCount(death) >1 or RuneCount(frost) >1 Spell(howling_blast) + Spell(horn_of_winter) + if RuneCount(unholy) >0 Spell(obliterate) + Spell(howling_blast) + if TalentPoints(runic_empowerment_talent) and {RuneCount(frost) ==0 or RuneCount(blood) ==0 } Spell(frost_strike) + if TalentPoints(runic_corruption_talent) and BuffExpires(runic_corruption) Spell(frost_strike) + Spell(death_and_decay) + if RunicPower() >=40 Spell(frost_strike) +} +AddIcon mastery=2 help=offgcd +{ + if not InCombat() + { + Spell(pillar_of_frost) + } + Spell(pillar_of_frost) + if TalentPoints(blood_tap_talent) and BuffStacks(blood_charge) >10 and {RunicPower() >76 or {RunicPower() >=20 and BuffStacks(killing_machine) } } Spell(blood_tap) + if TalentPoints(blood_tap_talent) and {target.HealthPercent() -{3 *target.HealthPercent() /target.DeadIn() } <=35 and SpellCooldown(soul_reaper) ==0 } Spell(blood_tap) + if TalentPoints(blood_tap_talent) and {target.HealthPercent() -{3 *target.HealthPercent() /target.DeadIn() } >35 or BuffStacks(blood_charge) >=8 } Spell(blood_tap) +} +AddIcon mastery=2 help=cd +{ + if not InCombat() + { + Spell(army_of_the_dead) + Spell(blood_fury) + Spell(raise_dead) + } + if target.DeadIn() <=60 and {BuffPresent(mogu_power_potion_aura) or BuffPresent(golems_strength) } Spell(empower_rune_weapon) + if BuffPresent(pillar_of_frost) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + Spell(blood_fury) + Spell(raise_dead) + if TalentPoints(unholy_blight_talent) and {target.DebuffRemains(frost_fever) <3 or target.DebuffRemains(blood_plague) <3 } Spell(unholy_blight) + Spell(empower_rune_weapon) +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + unless Stance(3) Spell(unholy_presence) + Spell(horn_of_winter) + } + if AttackPower() >{LastSpellAttackPower(blood_plague) +5000 } and TimeInCombat() >15 and not {SpellCooldown(unholy_blight) >49 } Spell(outbreak) + if AttackPower() >{LastSpellAttackPower(blood_plague) +5000 } and TimeInCombat() >15 and not {SpellCooldown(unholy_blight) >49 } Spell(plague_strike) + if target.DebuffRemains(frost_fever) <3 or target.DebuffRemains(blood_plague) <3 Spell(outbreak) + if target.HealthPercent() -{3 *target.HealthPercent() /target.DeadIn() } <=35 Spell(soul_reaper) + if not target.DebuffPresent(blood_plague) or not target.DebuffPresent(frost_fever) Spell(plague_strike) + Spell(dark_transformation) + if RunicPower() >90 Spell(death_coil) + if RuneCount(unholy) ==2 Spell(death_and_decay) + if RuneCount(unholy) ==2 Spell(scourge_strike) + if RuneCount(blood) ==2 and RuneCount(frost) ==2 Spell(festering_strike) + Spell(death_and_decay) + if BuffStacks(sudden_doom) or {BuffExpires(dark_transformation) and RuneCount(unholy) <=1 } Spell(death_coil) + Spell(scourge_strike) + if TalentPoints(plague_leech_talent) and SpellCooldown(outbreak) <1 Spell(plague_leech) + Spell(festering_strike) + Spell(horn_of_winter) + if BuffExpires(dark_transformation) or {SpellCooldown(summon_gargoyle) >8 and BuffRemains(dark_transformation) >8 } Spell(death_coil) +} +AddIcon mastery=3 help=offgcd +{ + if TalentPoints(blood_tap_talent) and BuffStacks(blood_charge) >10 and RunicPower() >=32 Spell(blood_tap) + if TalentPoints(blood_tap_talent) and {target.HealthPercent() -{3 *target.HealthPercent() /target.DeadIn() } <=35 and SpellCooldown(soul_reaper) ==0 } Spell(blood_tap) + if TalentPoints(blood_tap_talent) and BuffStacks(shadow_infusion) ==5 Spell(blood_tap) + if TalentPoints(blood_tap_talent) and RuneCount(unholy) ==2 and SpellCooldown(death_and_decay) ==0 Spell(blood_tap) + if TalentPoints(blood_tap_talent) and SpellCooldown(death_and_decay) ==0 Spell(blood_tap) + if TalentPoints(blood_tap_talent) and BuffStacks(blood_charge) >=8 Spell(blood_tap) +} +AddIcon mastery=3 help=cd +{ + if not InCombat() + { + Spell(army_of_the_dead) + Spell(blood_fury) + Spell(raise_dead) + } + if TimeInCombat() >=2 Spell(blood_fury) + if TimeInCombat() >=4 Spell(unholy_frenzy) + if TimeInCombat() >=4 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if TalentPoints(unholy_blight_talent) and {target.DebuffRemains(frost_fever) <3 or target.DebuffRemains(blood_plague) <3 } Spell(unholy_blight) + Spell(summon_gargoyle) + Spell(empower_rune_weapon) +} +]] + + OvaleScripts:RegisterScript("DEATHKNIGHT", name, desc, code) +end diff --git a/class/Druid.lua b/class/Druid.lua new file mode 100644 index 0000000..93b9cc5 --- /dev/null +++ b/class/Druid.lua @@ -0,0 +1,282 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Balance, Feral" + local code = [[ +Define(berserk 50334) + SpellInfo(berserk duration=10 cd=180 ) + SpellAddBuff(berserk berserk=1) +Define(berserking 26297) + SpellInfo(berserking duration=10 cd=180 ) + SpellAddBuff(berserking berserking=1) +Define(cat_form 768) + SpellAddBuff(cat_form cat_form=1) +Define(celestial_alignment 112071) + SpellInfo(celestial_alignment duration=15 cd=180 ) + SpellAddBuff(celestial_alignment celestial_alignment=1) +Define(chosen_of_elune 122114) +Define(dream_of_cenarius_damage 108381) + SpellInfo(dream_of_cenarius_damage duration=30 ) + SpellAddBuff(dream_of_cenarius_damage dream_of_cenarius_damage=1) +Define(faerie_fire 770) + SpellInfo(faerie_fire duration=300 ) + SpellAddBuff(faerie_fire faerie_fire=1) + AddCheckBox(faerie_fire_check SpellName(faerie_fire)) +Define(ferocious_bite 22568) + SpellInfo(ferocious_bite combo=0 energy=25 ) +Define(healing_touch 5185) +Define(hurricane 16914) + SpellInfo(hurricane duration=10 ) + SpellAddBuff(hurricane hurricane=1) +Define(incarnation 106731) + SpellInfo(incarnation duration=30 cd=180 ) +Define(lunar_eclipse 48518) + SpellAddBuff(lunar_eclipse lunar_eclipse=1) +Define(mangle 33876) + SpellInfo(mangle energy=35 ) +Define(mark_of_the_wild 1126) + SpellInfo(mark_of_the_wild duration=3600 ) + SpellAddBuff(mark_of_the_wild mark_of_the_wild=1) +Define(moonfire 8921) + SpellInfo(moonfire duration=14 tick=2 haste=spell ) + SpellAddTargetDebuff(moonfire moonfire=1) +Define(moonkin_form 24858) + SpellAddBuff(moonkin_form moonkin_form=1) +Define(natures_grace 16886) + SpellInfo(natures_grace duration=15 ) + SpellAddBuff(natures_grace natures_grace=1) +Define(natures_swiftness 132158) + SpellInfo(natures_swiftness cd=60 ) + SpellAddBuff(natures_swiftness natures_swiftness=1) +Define(natures_vigil 124974) + SpellInfo(natures_vigil duration=30 cd=90 ) + SpellAddBuff(natures_vigil natures_vigil=1) +Define(omen_of_clarity 16864) + SpellAddBuff(omen_of_clarity omen_of_clarity=1) +Define(predatory_swiftness 16974) +Define(rake 1822) + SpellInfo(rake duration=15 energy=35 tick=3 combo=1 ) + SpellAddTargetDebuff(rake rake=1) +Define(rip 1079) + SpellInfo(rip duration=16 combo=0 energy=30 tick=2 ) + SpellAddTargetDebuff(rip rip=1) +Define(savage_roar 52610) + SpellInfo(savage_roar duration=12 combo=0 energy=25 ) + SpellAddBuff(savage_roar savage_roar=1) +Define(shooting_stars 93399) +Define(shred 5221) + SpellInfo(shred energy=40 combo=1 ) +Define(skull_bash_cat 80965) + SpellInfo(skull_bash_cat cd=15 ) +Define(solar_eclipse 48517) + SpellAddBuff(solar_eclipse solar_eclipse=1) +Define(starfall 48505) + SpellInfo(starfall duration=10 cd=90 ) + SpellAddBuff(starfall starfall=1) +Define(starfire 2912) +Define(starsurge 78674) + SpellInfo(starsurge cd=15 ) +Define(sunfire 93402) + SpellInfo(sunfire duration=14 tick=2 haste=spell ) + SpellAddTargetDebuff(sunfire sunfire=1) +Define(thrash 106832) +Define(thrash 77758) + SpellInfo(thrash duration=16 tick=2 cd=6 ) + SpellAddTargetDebuff(thrash thrash=1) +Define(tigers_fury 5217) + SpellInfo(tigers_fury duration=6 energy=-60 cd=30 ) + SpellAddBuff(tigers_fury tigers_fury=1) +Define(treants 106737) + SpellInfo(treants duration=15 cd=60 ) +Define(virmens_bite 105697) + SpellInfo(virmens_bite duration=25 cd=1 ) + SpellAddBuff(virmens_bite virmens_bite=1) +Define(weakened_armor 113746) + SpellInfo(weakened_armor duration=30 ) + SpellAddBuff(weakened_armor weakened_armor=1) +Define(wild_mushroom 88747) + SpellInfo(wild_mushroom duration=300 ) +Define(wild_mushroom_detonate 78777) +Define(wrath 5176) +Define(dream_of_cenarius_talent 17) +Define(force_of_nature_talent 12) +Define(incarnation_talent 11) +Define(natures_swiftness_talent 4) +Define(natures_vigil_talent 18) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + if not BuffPresent(str_agi_int any=1) Spell(mark_of_the_wild) + if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch) + unless Stance(5) Spell(moonkin_form) + } + if TalentPoints(force_of_nature_talent) Spell(treants) + if TalentPoints(dream_of_cenarius_talent) and not BuffPresent(dream_of_cenarius_damage) and ManaPercent() >25 Spell(healing_touch) + if BuffStacks(shooting_stars) and {True() or not BuffPresent(solar_eclipse) } Spell(starsurge) + if BuffPresent(lunar_eclipse) and {target.DebuffRemains(moonfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(moonfire) + if BuffPresent(solar_eclipse) and {target.DebuffRemains(sunfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(sunfire) + if {target.DebuffRemains(moonfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(moonfire) + if {target.DebuffRemains(sunfire) <{BuffRemains(natures_grace) -2 +2 *ArmorSetParts(T14 more 4) } } Spell(sunfire) + if BuffPresent(lunar_eclipse) and target.TicksRemain(moonfire) <2 Spell(moonfire) + if BuffPresent(solar_eclipse) and target.TicksRemain(sunfire) <2 Spell(sunfire) + if SpellCooldown(starsurge) Spell(starsurge) + if BuffPresent(celestial_alignment) and CastTime(starfire) 0 } Spell(starfire) + if EclipseDir() ==0-1 or {EclipseDir() ==0 and Eclipse() <=0 } Spell(wrath) +} +AddIcon mastery=1 help=offgcd +{ + if BuffStacks(wild_mushroom) >0 and BuffPresent(solar_eclipse) Spell(wild_mushroom_detonate) + if TalentPoints(natures_swiftness_talent) and TalentPoints(dream_of_cenarius_talent) Spell(natures_swiftness) +} +AddIcon mastery=1 help=moving +{ + if target.TicksRemain(moonfire) <2 Spell(moonfire) + if target.TicksRemain(sunfire) <2 Spell(sunfire) + if BuffStacks(wild_mushroom) <0 Spell(wild_mushroom) + if BuffStacks(shooting_stars) Spell(starsurge) + if BuffPresent(lunar_eclipse) Spell(moonfire) + Spell(sunfire) +} +AddIcon mastery=1 help=aoe +{ + if BuffPresent(solar_eclipse) and BuffPresent(natures_grace) Spell(hurricane) + if BuffPresent(solar_eclipse) and ManaPercent() >25 Spell(hurricane) + if BuffPresent(solar_eclipse) and ManaPercent() >25 Spell(hurricane) +} +AddIcon mastery=1 help=cd +{ + if not BuffPresent(starfall) Spell(starfall) + if BuffPresent(celestial_alignment) Spell(berserking) + if BuffPresent(celestial_alignment) or SpellCooldown(celestial_alignment) >30 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if TalentPoints(incarnation_talent) and {BuffPresent(lunar_eclipse) or BuffPresent(solar_eclipse) } Spell(incarnation) + if {not BuffPresent(lunar_eclipse) and not BuffPresent(solar_eclipse) } and {BuffPresent(chosen_of_elune) or not TalentPoints(incarnation_talent) or SpellCooldown(incarnation) >10 } Spell(celestial_alignment) + if TalentPoints(natures_vigil_talent) Spell(natures_vigil) +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + if not BuffPresent(str_agi_int any=1) Spell(mark_of_the_wild) + if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch) + unless Stance(3) Spell(cat_form) + Spell(savage_roar) + } + if target.IsInterruptible() Spell(skull_bash_cat) + if BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage) Spell(healing_touch) + if BuffExpires(savage_roar) Spell(savage_roar) + if target.DebuffStacks(weakened_armor any=1) <3 if CheckBoxOn(faerie_fire_check) Spell(faerie_fire) + if BuffPresent(predatory_swiftness) and ComboPoints() >=4 and BuffStacks(dream_of_cenarius_damage) <2 Spell(healing_touch) + if BuffPresent(natures_swiftness) Spell(healing_touch) + if ComboPoints() >=1 and target.DebuffPresent(rip) and target.DebuffRemains(rip) <=3 and target.HealthPercent() <=25 Spell(ferocious_bite) + if {target.DeadIn() <=4 and ComboPoints() >=5 } or {target.DeadIn() <=1 and ComboPoints() >=3 } Spell(ferocious_bite) + if BuffRemains(savage_roar) <=3 and ComboPoints() >0 and target.HealthPercent() <25 Spell(savage_roar) + if ComboPoints() >=5 and BuffPresent(virmens_bite) and BuffPresent(dream_of_cenarius_damage) and target.HealthPercent() <=25 and target.DeadIn() >30 Spell(rip) + if ComboPoints() >=5 and target.DebuffPresent(rip) and target.HealthPercent() <=25 Spell(ferocious_bite) + if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2 and BuffPresent(dream_of_cenarius_damage) Spell(rip) + if ComboPoints() >=5 and target.DeadIn() >=6 and target.DebuffRemains(rip) <2 and {BuffPresent(berserk) or target.DebuffRemains(rip) +1.9 <=SpellCooldown(tigers_fury) } Spell(rip) + if BuffRemains(savage_roar) <=3 and ComboPoints() >0 and BuffRemains(savage_roar) +2 >target.DebuffRemains(rip) Spell(savage_roar) + if BuffRemains(savage_roar) <=6 and ComboPoints() >=5 and BuffRemains(savage_roar) +2 <=target.DebuffRemains(rip) Spell(savage_roar) + if ComboPoints() >=5 and target.DebuffRemains(rip) >6 Spell(ferocious_bite) + if target.DebuffRemains(rake) <9 and BuffPresent(dream_of_cenarius_damage) Spell(rake) + if target.DebuffRemains(rake) <3 Spell(rake) + if BuffStacks(omen_of_clarity) + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if {ComboPoints() <5 and target.DebuffRemains(rip) <3 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if BuffRemains(predatory_swiftness) >1 + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if target.DeadIn() <=8.5 + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if BuffPresent(tigers_fury) or BuffPresent(berserk) + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if SpellCooldown(tigers_fury) <=3 + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } + if TimeToMaxEnergy() <=1 + { + if BuffStacks(omen_of_clarity) Spell(shred) + if BuffPresent(berserk) Spell(shred) + if {{ComboPoints() <5 and target.DebuffRemains(rip) <3.0 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } } Spell(mangle) + Spell(shred) + } +} +AddIcon mastery=2 help=offgcd +{ + if {Energy() <=35 and not BuffStacks(omen_of_clarity) } Spell(tigers_fury) + if target.DeadIn() >=6 and BuffStacks(omen_of_clarity) and target.DebuffRemains(thrash) <3 Spell(thrash) + if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.HealthPercent() <=25 Spell(natures_swiftness) + if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and target.DebuffRemains(rip) <3 and {BuffPresent(berserk) or target.DebuffRemains(rip) +1.9 <=SpellCooldown(tigers_fury) } Spell(natures_swiftness) + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and {target.DebuffRemains(rip) >=4 or BuffPresent(berserk) } Spell(thrash) + if BuffStacks(omen_of_clarity) + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if {ComboPoints() <5 and target.DebuffRemains(rip) <3 } or {ComboPoints() ==0 and BuffRemains(savage_roar) <2 } + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if BuffRemains(predatory_swiftness) >1 + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if target.DeadIn() <=8.5 + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if BuffPresent(tigers_fury) or BuffPresent(berserk) + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if SpellCooldown(tigers_fury) <=3 + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } + if TimeToMaxEnergy() <=1 + { + if target.DebuffRemains(thrash) <3 and target.DeadIn() >=6 and ComboPoints() >=5 Spell(thrash) + } +} +AddIcon mastery=2 help=cd +{ + Spell(berserking) + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if BuffPresent(tigers_fury) or {target.DeadIn() <18 and SpellCooldown(tigers_fury) >6 } Spell(berserk) +} +]] + + OvaleScripts:RegisterScript("DRUID", name, desc, code) +end diff --git a/class/Hunter.lua b/class/Hunter.lua new file mode 100644 index 0000000..373968b --- /dev/null +++ b/class/Hunter.lua @@ -0,0 +1,245 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Beast Mastery, Marksmanship, Survival" + local code = [[ +Define(a_murder_of_crows 131900) +Define(aimed_shot 19434) + SpellInfo(aimed_shot focus=50 ) +Define(arcane_shot 3044) + SpellInfo(arcane_shot focus=20 ) +Define(aspect_of_the_hawk 13165) + SpellInfo(aspect_of_the_hawk cd=1 ) + SpellAddBuff(aspect_of_the_hawk aspect_of_the_hawk=1) +Define(barrage 120360) + SpellInfo(barrage duration=3 focus=30 cd=30 ) +Define(beast_within 34692) +Define(bestial_wrath 19574) + SpellInfo(bestial_wrath duration=10 cd=60 ) + SpellAddBuff(bestial_wrath bestial_wrath=1) +Define(black_arrow 3674) + SpellInfo(black_arrow duration=20 focus=35 tick=2 cd=30 ) + SpellAddTargetDebuff(black_arrow black_arrow=1) +Define(blood_fury 20572) + SpellInfo(blood_fury duration=15 cd=120 ) + SpellAddBuff(blood_fury blood_fury=1) +Define(call_pet_1 883) +Define(chimera_shot 53209) + SpellInfo(chimera_shot focus=45 cd=9 ) +Define(cobra_shot 77767) + SpellInfo(cobra_shot focus=-14 ) +Define(dire_beast 120679) + SpellInfo(dire_beast duration=15 cd=30 ) +Define(explosive_shot 53301) + SpellInfo(explosive_shot duration=2 focus=25 tick=1 cd=6 ) + SpellAddTargetDebuff(explosive_shot explosive_shot=1) +Define(explosive_trap 13812) + SpellInfo(explosive_trap duration=20 ) + SpellAddTargetDebuff(explosive_trap explosive_trap=1) +Define(fervor 82726) + SpellInfo(fervor duration=10 focus=-50 cd=30 ) + SpellAddBuff(fervor fervor=1) +Define(focus_fire 82692) + SpellInfo(focus_fire duration=20 ) + SpellAddBuff(focus_fire focus_fire=1) +Define(glaive_toss 120761) + SpellInfo(glaive_toss duration=3 ) + SpellAddBuff(glaive_toss glaive_toss=1) +Define(hunters_mark 1130) + SpellInfo(hunters_mark duration=300 ) + SpellAddTargetDebuff(hunters_mark hunters_mark=1) +Define(kill_command 34026) + SpellInfo(kill_command focus=40 cd=6 ) + SpellAddBuff(kill_command kill_command=1) +Define(kill_shot 53351) + SpellInfo(kill_shot cd=10 ) +Define(lock_and_load 56343) +Define(lynx_rush 120699) + SpellInfo(lynx_rush duration=15 tick=3 ) + SpellAddTargetDebuff(lynx_rush lynx_rush=1) +Define(master_marksman_fire 82926) + SpellInfo(master_marksman_fire duration=10 ) + SpellAddBuff(master_marksman_fire master_marksman_fire=1) +Define(multi_shot 2643) + SpellInfo(multi_shot focus=40 ) +Define(pet_frenzy 19615) + SpellInfo(pet_frenzy duration=30 ) + SpellAddBuff(pet_frenzy pet_frenzy=1) +Define(powershot 109259) + SpellInfo(powershot focus=20 cd=60 ) +Define(rapid_fire 3045) + SpellInfo(rapid_fire duration=15 cd=180 ) + SpellAddBuff(rapid_fire rapid_fire=1) +Define(readiness 23989) + SpellInfo(readiness cd=300 ) +Define(serpent_sting 1978) + SpellInfo(serpent_sting focus=25 ) + SpellAddTargetDebuff(serpent_sting serpent_sting_aura=1) +Define(serpent_sting_aura 118253) + SpellInfo(serpent_sting_aura duration=15 tick=3 ) + SpellAddTargetDebuff(serpent_sting_aura serpent_sting_aura=1) +Define(stampede 57386) + SpellInfo(stampede duration=30 cd=15 ) + SpellAddBuff(stampede stampede=1) +Define(steady_focus 53224) +Define(steady_shot 56641) + SpellInfo(steady_shot focus=-14 ) +Define(thrill_of_the_hunt 34720) + SpellInfo(thrill_of_the_hunt duration=15 ) + SpellAddBuff(thrill_of_the_hunt thrill_of_the_hunt=1) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + if target.DeadIn() >=21 and not target.DebuffPresent(ranged_vulnerability any=1) Spell(hunters_mark) + unless pet.Present() Spell(call_pet_1) + } + if BuffStacks(pet_frenzy any=1)>4 Spell(focus_fire) + if not target.DebuffPresent(serpent_sting_aura) Spell(serpent_sting) + if target.HealthPercent(less 20) Spell(kill_shot) + Spell(kill_command) + if SpellUsable(dire_beast) and Focus() <=90 Spell(dire_beast) + if SpellUsable(barrage) Spell(barrage) + if SpellUsable(powershot) Spell(powershot) + if BuffStacks(thrill_of_the_hunt) Spell(arcane_shot) + if not target.DebuffPresent(focus_fire) and not BuffPresent(beast_within) if BuffStacks(pet_frenzy any=1)>4 Spell(focus_fire) + if target.DebuffRemains(serpent_sting_aura) <6 Spell(cobra_shot) + if Focus() >=61 or BuffPresent(beast_within) Spell(arcane_shot) + Spell(cobra_shot) +} +AddIcon mastery=1 help=offgcd +{ + if not InCombat() + { + unless Stance(1) Spell(aspect_of_the_hawk) + } + unless Stance(1) Spell(aspect_of_the_hawk) + if SpellUsable(fervor) and not target.DebuffPresent(fervor) and Focus() <=65 Spell(fervor) + if Focus() >60 and not BuffPresent(beast_within) Spell(bestial_wrath) + if BuffPresent(rapid_fire) or BuffStacks(bloodlust any=1) or target.DeadIn() <=25 Spell(stampede) + if SpellUsable(a_murder_of_crows) and not target.DebuffPresent(a_murder_of_crows) Spell(a_murder_of_crows) + if SpellUsable(glaive_toss) Spell(glaive_toss) + if SpellUsable(lynx_rush) and not target.DebuffPresent(lynx_rush) Spell(lynx_rush) +} +AddIcon mastery=1 help=aoe +{ + Spell(explosive_trap) + Spell(multi_shot) + Spell(cobra_shot) +} +AddIcon mastery=1 help=cd +{ + Spell(blood_fury) + if not BuffPresent(rapid_fire) Spell(rapid_fire) + if BuffPresent(rapid_fire) Spell(readiness) +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + if target.DeadIn() >=21 and not target.DebuffPresent(ranged_vulnerability any=1) Spell(hunters_mark) + unless pet.Present() Spell(call_pet_1) + } + if SpellUsable(powershot) Spell(powershot) + if SpellUsable(dire_beast) Spell(dire_beast) + if target.HealthPercent() >80 + { + if not target.DebuffPresent(serpent_sting_aura) Spell(serpent_sting) + Spell(chimera_shot) + if PreviousSpell(steady_shot) and BuffRemains(steady_focus) <6 Spell(steady_shot) + Spell(aimed_shot) + Spell(steady_shot) + } + if SpellUsable(barrage) Spell(barrage) + if PreviousSpell(steady_shot) and BuffRemains(steady_focus) <=5 Spell(steady_shot) + if not target.DebuffPresent(serpent_sting_aura) Spell(serpent_sting) + Spell(chimera_shot) + if BuffRemains(steady_focus) <{CastTime(steady_shot) +1 } and not InFlightToTarget(steady_shot) Spell(steady_shot) + if target.HealthPercent(less 20) Spell(kill_shot) + if BuffStacks(master_marksman_fire) Spell(aimed_shot) + if BuffStacks(thrill_of_the_hunt) Spell(arcane_shot) + if BuffPresent(rapid_fire) or BuffStacks(bloodlust any=1) Spell(aimed_shot) + if Focus() >=60 or {Focus() >=43 and {SpellCooldown(chimera_shot) >=CastTime(steady_shot) } } and {not BuffPresent(rapid_fire) and not BuffStacks(bloodlust any=1) } Spell(arcane_shot) + Spell(steady_shot) +} +AddIcon mastery=2 help=offgcd +{ + if not InCombat() + { + unless Stance(1) Spell(aspect_of_the_hawk) + } + unless Stance(1) Spell(aspect_of_the_hawk) + if SpellUsable(lynx_rush) and not target.DebuffPresent(lynx_rush) Spell(lynx_rush) + if SpellUsable(fervor) and Focus() <=50 Spell(fervor) + if BuffPresent(rapid_fire) or BuffStacks(bloodlust any=1) or target.DeadIn() <=25 Spell(stampede) + if SpellUsable(a_murder_of_crows) and not target.DebuffPresent(a_murder_of_crows) Spell(a_murder_of_crows) + if SpellUsable(glaive_toss) Spell(glaive_toss) +} +AddIcon mastery=2 help=aoe +{ + Spell(explosive_trap) + Spell(multi_shot) + Spell(steady_shot) +} +AddIcon mastery=2 help=cd +{ + Spell(blood_fury) + if not BuffPresent(rapid_fire) Spell(rapid_fire) + if target.HealthPercent() >80 + { + Spell(readiness) + } + Spell(readiness) +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if target.DeadIn() >=21 and not target.DebuffPresent(ranged_vulnerability any=1) Spell(hunters_mark) + unless pet.Present() Spell(call_pet_1) + } + if BuffStacks(lock_and_load) Spell(explosive_shot) + if SpellUsable(powershot) Spell(powershot) + if SpellUsable(barrage) Spell(barrage) + if not target.DebuffPresent(serpent_sting_aura) and target.DeadIn() >=10 Spell(serpent_sting) + if SpellCooldown(explosive_shot) Spell(explosive_shot) + if target.HealthPercent(less 20) Spell(kill_shot) + if not target.DebuffPresent(black_arrow) and target.DeadIn() >=8 Spell(black_arrow) + if BuffStacks(thrill_of_the_hunt) and target.DebuffRemains(serpent_sting_aura) <2 Spell(multi_shot) + if BuffStacks(thrill_of_the_hunt) Spell(arcane_shot) + if SpellUsable(dire_beast) Spell(dire_beast) + if target.DebuffRemains(serpent_sting_aura) <6 Spell(cobra_shot) + if Focus() >=67 Spell(arcane_shot) + Spell(cobra_shot) +} +AddIcon mastery=3 help=offgcd +{ + if not InCombat() + { + unless Stance(1) Spell(aspect_of_the_hawk) + } + unless Stance(1) Spell(aspect_of_the_hawk) + if SpellUsable(a_murder_of_crows) and not target.DebuffPresent(a_murder_of_crows) Spell(a_murder_of_crows) + if SpellUsable(lynx_rush) and not target.DebuffPresent(lynx_rush) Spell(lynx_rush) + if SpellUsable(glaive_toss) Spell(glaive_toss) + if BuffPresent(rapid_fire) or BuffStacks(bloodlust any=1) or target.DeadIn() <=25 Spell(stampede) + if SpellUsable(fervor) and Focus() <=50 Spell(fervor) +} +AddIcon mastery=3 help=aoe +{ + Spell(explosive_trap) + Spell(multi_shot) + Spell(cobra_shot) +} +AddIcon mastery=3 help=cd +{ + Spell(blood_fury) + if not BuffPresent(rapid_fire) Spell(rapid_fire) + if BuffPresent(rapid_fire) Spell(readiness) +} +]] + + OvaleScripts:RegisterScript("HUNTER", name, desc, code) +end diff --git a/class/Mage.lua b/class/Mage.lua new file mode 100644 index 0000000..a77e946 --- /dev/null +++ b/class/Mage.lua @@ -0,0 +1,237 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Arcane, Fire, Frost" + local code = [[ +Define(alter_time 110909) + SpellInfo(alter_time duration=6 ) + SpellAddBuff(alter_time alter_time=1) +Define(alter_time_activate 108978) + SpellInfo(alter_time_activate duration=10 cd=180 ) +Define(arcane_barrage 44425) + SpellInfo(arcane_barrage cd=3 ) +Define(arcane_blast 30451) +Define(arcane_brilliance 1459) + SpellInfo(arcane_brilliance duration=3600 ) + SpellAddBuff(arcane_brilliance arcane_brilliance=1) +Define(arcane_charge 36032) + SpellInfo(arcane_charge duration=10 ) + SpellAddBuff(arcane_charge arcane_charge=1) +Define(arcane_missiles 5143) + SpellInfo(arcane_missiles duration=2 ) +Define(arcane_missiles_aura 79683) + SpellInfo(arcane_missiles_aura duration=20 ) + SpellAddBuff(arcane_missiles_aura arcane_missiles_aura=1) +Define(arcane_power 12042) + SpellInfo(arcane_power duration=15 cd=90 ) + SpellAddBuff(arcane_power arcane_power=1) +Define(berserking 26297) + SpellInfo(berserking duration=10 cd=180 ) + SpellAddBuff(berserking berserking=1) +Define(brain_freeze 44549) +Define(combustion 11129) + SpellInfo(combustion cd=45 ) +Define(conjure_mana_gem 759) +Define(counterspell 2139) + SpellInfo(counterspell duration=6 cd=24 ) +Define(fingers_of_frost_aura 44544) + SpellInfo(fingers_of_frost_aura duration=15 ) + SpellAddBuff(fingers_of_frost_aura fingers_of_frost_aura=1) +Define(fire_blast 2136) + SpellInfo(fire_blast cd=8 ) +Define(fireball 133) + SpellInfo(fireball base=1561 bonussp=1.5) +Define(frost_armor 7302) + SpellAddBuff(frost_armor frost_armor=1) +Define(frost_bomb 113092) + SpellInfo(frost_bomb duration=2 ) + SpellAddBuff(frost_bomb frost_bomb=1) +Define(frostbolt 116) + SpellInfo(frostbolt duration=15 ) + SpellAddBuff(frostbolt frostbolt=1) +Define(frostfire_bolt 44614) + SpellInfo(frostfire_bolt duration=8 ) + SpellAddBuff(frostfire_bolt frostfire_bolt=1) +Define(frozen_orb 84714) + SpellInfo(frozen_orb duration=10 cd=60 ) +Define(heating_up 48107) + SpellInfo(heating_up duration=10 ) + SpellAddBuff(heating_up heating_up=1) +Define(ice_lance 30455) +Define(icy_veins 12472) + SpellInfo(icy_veins duration=20 cd=180 ) + SpellAddBuff(icy_veins icy_veins=1) +Define(ignite 12654) + SpellInfo(ignite duration=4 tick=2 ) + SpellAddTargetDebuff(ignite ignite=1) +Define(inferno_blast 108853) + SpellInfo(inferno_blast cd=8 ) + SpellInfo(inferno_blast base=624.5 bonussp=0.6) +Define(living_bomb 44457) + SpellInfo(living_bomb duration=12 tick=3 haste=spell ) + SpellAddTargetDebuff(living_bomb living_bomb=1) +Define(mage_armor 6117) + SpellAddBuff(mage_armor mage_armor=1) +Define(mana_gem 56597) +Define(mirror_image 55342) + SpellInfo(mirror_image duration=30 cd=180 ) + SpellAddBuff(mirror_image mirror_image=1) +Define(molten_armor 30482) + SpellAddBuff(molten_armor molten_armor=1) +Define(presence_of_mind 12043) + SpellInfo(presence_of_mind cd=90 ) + SpellAddBuff(presence_of_mind presence_of_mind=1) +Define(pyroblast 11366) + SpellInfo(pyroblast duration=18 tick=3 haste=spell ) + SpellInfo(pyroblast base=2061 bonussp=1.98) + SpellAddTargetDebuff(pyroblast pyroblast=1) +Define(pyroblast_aura 48108) + SpellInfo(pyroblast_aura duration=15 ) + SpellAddBuff(pyroblast_aura pyroblast_aura=1) +Define(rune_of_power 116011) + SpellInfo(rune_of_power duration=60 ) +Define(rune_of_power_aura 116014) +Define(scorch 2948) +Define(time_warp 35346) + SpellInfo(time_warp duration=6 cd=15 ) + SpellAddBuff(time_warp time_warp=1) +Define(water_elemental 63859) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + if BuffExpires(spell_power_multiplier any=1) or BuffExpires(critical_strike any=1) Spell(arcane_brilliance) + if BuffExpires(mage_armor) Spell(mage_armor) + Spell(rune_of_power) + } + if ItemCharges(36799) <3 and False() Spell(conjure_mana_gem) + if BuffRemains(rune_of_power_aura) 0 } or {BuffStacks(arcane_charge) >=4 and SpellCooldown(arcane_power) >8 } Spell(arcane_missiles) + if {not target.DebuffPresent(living_bomb) or target.DebuffRemains(living_bomb) TickTime(living_bomb) *3 Spell(living_bomb) + if BuffStacks(arcane_charge) >=4 and ManaPercent() <95 Spell(arcane_barrage) + Spell(arcane_blast) +} +AddIcon mastery=1 help=offgcd +{ + if target.IsInterruptible() if target.IsInterruptible() Spell(counterspell) + cancel.Spell(alter_time) + if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp) + if ManaPercent() <80 and BuffExpires(alter_time) Spell(mana_gem) + if BuffExpires(alter_time) and BuffPresent(arcane_power) Spell(alter_time) +} +AddIcon mastery=1 help=moving +{ + Spell(arcane_barrage) + Spell(fire_blast) + Spell(ice_lance) +} +AddIcon mastery=1 help=cd +{ + if not InCombat() + { + Spell(mirror_image) + } + Spell(mirror_image) + if {BuffRemains(rune_of_power) >=BuffDuration(arcane_power) and BuffStacks(arcane_missiles_aura) ==2 and BuffStacks(arcane_charge) >2 } or target.DeadIn() 45 or target.DeadIn() <25 } and BuffRemains(rune_of_power) >20 { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + if BuffExpires(spell_power_multiplier any=1) or BuffExpires(critical_strike any=1) Spell(arcane_brilliance) + if BuffExpires(molten_armor) Spell(molten_armor) + Spell(rune_of_power) + } + if ItemCharges(36799) <3 and False() Spell(conjure_mana_gem) + if BuffRemains(rune_of_power_aura) TickTime(living_bomb) *3 Spell(living_bomb) + if not target.DebuffPresent(pyroblast) Spell(pyroblast) + Spell(fireball) +} +AddIcon mastery=2 help=offgcd +{ + if target.IsInterruptible() if target.IsInterruptible() Spell(counterspell) + cancel.Spell(alter_time) + if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp) + if target.DeadIn() <22 Spell(combustion) + if LastSpellDamage(ignite) >={{CritDamage(fireball) +CritDamage(inferno_blast) +Damage(pyroblast) } *{Mastery() /100} *0.5 } and target.DebuffPresent(pyroblast) Spell(combustion) + if BuffExpires(alter_time) and BuffStacks(pyroblast_aura) Spell(alter_time) +} +AddIcon mastery=2 help=moving +{ + Spell(scorch) +} +AddIcon mastery=2 help=cd +{ + if not InCombat() + { + Spell(mirror_image) + } + if BuffExpires(alter_time) and target.DeadIn() <18 Spell(berserking) + if BuffExpires(alter_time) Spell(berserking) + if BuffExpires(alter_time) Spell(presence_of_mind) + if SpellCooldown(alter_time) >30 or target.DeadIn() <15 Spell(presence_of_mind) +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if BuffExpires(spell_power_multiplier any=1) or BuffExpires(critical_strike any=1) Spell(arcane_brilliance) + if BuffExpires(frost_armor) Spell(frost_armor) + Spell(rune_of_power) + } + if ItemCharges(36799) <3 and False() Spell(conjure_mana_gem) + if BuffRemains(rune_of_power_aura) 2 Spell(frostfire_bolt) + if BuffStacks(fingers_of_frost_aura) and SpellCooldown(icy_veins) >2 Spell(ice_lance) + Spell(frostbolt) +} +AddIcon mastery=3 help=offgcd +{ + if not InCombat() + { + Spell(water_elemental) + } + if target.IsInterruptible() if target.IsInterruptible() Spell(counterspell) + cancel.Spell(alter_time) + if target.HealthPercent() <25 or TimeInCombat() >5 Spell(time_warp) + if BuffExpires(alter_time) and BuffPresent(icy_veins) Spell(alter_time) + if target.DeadIn() >CastTime(frost_bomb) +TickTime(frost_bomb) Spell(frost_bomb) +} +AddIcon mastery=3 help=moving +{ + Spell(fire_blast) + Spell(ice_lance) +} +AddIcon mastery=3 help=cd +{ + if not InCombat() + { + Spell(mirror_image) + } + Spell(mirror_image) + if {target.DebuffStacks(frostbolt) >=3 and {BuffStacks(brain_freeze) or BuffStacks(fingers_of_frost_aura) } } or target.DeadIn() <22 Spell(icy_veins) + if BuffPresent(icy_veins) or target.DeadIn() <18 Spell(berserking) + if BuffPresent(icy_veins) or SpellCooldown(icy_veins) >15 or target.DeadIn() <15 Spell(presence_of_mind) +} +]] + + OvaleScripts:RegisterScript("MAGE", name, desc, code) +end diff --git a/class/Monk.lua b/class/Monk.lua new file mode 100644 index 0000000..6873619 --- /dev/null +++ b/class/Monk.lua @@ -0,0 +1,104 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Windwalker" + local code = [[ +Define(berserking 26297) + SpellInfo(berserking duration=10 cd=180 ) + SpellAddBuff(berserking berserking=1) +Define(blackout_kick 100784) + SpellInfo(blackout_kick chi=2 ) +Define(chi_brew 115399) + SpellInfo(chi_brew chi=-4 cd=90 ) +Define(chi_sphere 121286) + SpellInfo(chi_sphere duration=120 ) +Define(chi_wave 115098) + SpellInfo(chi_wave cd=15 ) +Define(combo_breaker_bok 116768) + SpellInfo(combo_breaker_bok duration=15 ) + SpellAddBuff(combo_breaker_bok combo_breaker_bok=1) +Define(combo_breaker_tp 118864) + SpellInfo(combo_breaker_tp duration=15 ) + SpellAddBuff(combo_breaker_tp combo_breaker_tp=1) +Define(energizing_brew 115288) + SpellInfo(energizing_brew duration=6 cd=60 ) + SpellAddBuff(energizing_brew energizing_brew=1) +Define(fists_of_fury 113656) + SpellInfo(fists_of_fury duration=4 chi=3 cd=25 ) + SpellAddBuff(fists_of_fury fists_of_fury=1) +Define(invoke_xuen 123904) + SpellInfo(invoke_xuen duration=45 cd=180 ) +Define(jab 100780) + SpellInfo(jab energy=40 chi=-1 ) +Define(rising_sun_kick 107428) + SpellInfo(rising_sun_kick chi=2 cd=8 ) +Define(rushing_jade_wind 116847) + SpellInfo(rushing_jade_wind duration=8 chi=2 cd=30 ) + SpellAddBuff(rushing_jade_wind rushing_jade_wind=1) +Define(spinning_crane_kick 101546) + SpellInfo(spinning_crane_kick duration=2.25 energy=40 ) + SpellAddBuff(spinning_crane_kick spinning_crane_kick=1) +Define(tiger_palm 100787) + SpellInfo(tiger_palm chi=1 ) +Define(tiger_power 125359) + SpellInfo(tiger_power duration=20 ) + SpellAddBuff(tiger_power tiger_power=1) +Define(tigereye_brew 125195) + SpellInfo(tigereye_brew duration=120 ) + SpellAddBuff(tigereye_brew tigereye_brew=1) +Define(tigereye_brew_use 116740) + SpellInfo(tigereye_brew_use duration=15 cd=1 ) + SpellAddBuff(tigereye_brew_use tigereye_brew_use=1) +Define(ascension_talent 8) +Define(chi_brew_talent 9) +Define(chi_wave_talent 4) +Define(invoke_xuen_the_white_tiger_talent 17) +Define(power_strikes_talent 7) +Define(rushing_jade_wind_talent 16) +AddIcon mastery=3 help=main +{ + if not InCombat() + { + False() + } + if not target.DebuffRemains(rising_sun_kick) or target.DebuffRemains(rising_sun_kick) <=3 Spell(rising_sun_kick) + if BuffRemains(tiger_power) <=3 Spell(tiger_palm) + if TalentPoints(rushing_jade_wind_talent) Spell(rushing_jade_wind) + + if BuffStacks(combo_breaker_bok) and TimeToMaxEnergy() <=2 Spell(blackout_kick) + Spell(rising_sun_kick) + if not BuffPresent(energizing_brew) and TimeToMaxEnergy() >{4 } and BuffRemains(tiger_power) >{4 } Spell(fists_of_fury) + if BuffStacks(combo_breaker_bok) Spell(blackout_kick) + if {BuffStacks(combo_breaker_tp) and TimeToMaxEnergy() >=2 } or {BuffRemains(combo_breaker_tp) <=2 and BuffStacks(combo_breaker_tp) } Spell(tiger_palm) + if TalentPoints(chi_wave_talent) and TimeToMaxEnergy() >2 Spell(chi_wave) + if TalentPoints(ascension_talent) and Chi() <=3 Spell(jab) + if not TalentPoints(ascension_talent) and Chi() <=2 Spell(jab) + if {Energy() +{EnergyRegen() *{SpellCooldown(rising_sun_kick) } } } >=40 Spell(blackout_kick) + +} +AddIcon mastery=3 help=offgcd +{ + if TalentPoints(power_strikes_talent) and BuffStacks(chi_sphere) and Chi() <4 Spell(chi_sphere) + if not BuffPresent(tigereye_brew_use) Spell(tigereye_brew) + if TimeToMaxEnergy() >5 Spell(energizing_brew) +} +AddIcon mastery=3 help=aoe +{ + + if Chi() ==4 Spell(rising_sun_kick) + Spell(spinning_crane_kick) + +} +AddIcon mastery=3 help=cd +{ + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + Spell(berserking) + if TalentPoints(chi_brew_talent) and Chi() ==0 Spell(chi_brew) + if TalentPoints(invoke_xuen_talent) Spell(invoke_xuen) +} +]] + + OvaleScripts:RegisterScript("MONK", name, desc, code) +end diff --git a/class/Paladin.lua b/class/Paladin.lua new file mode 100644 index 0000000..5793717 --- /dev/null +++ b/class/Paladin.lua @@ -0,0 +1,108 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Retribution" + local code = [[ +Define(avenging_wrath 31884) + SpellInfo(avenging_wrath duration=20 cd=180 ) + SpellAddBuff(avenging_wrath avenging_wrath=1) +Define(blessing_of_kings 20217) + SpellInfo(blessing_of_kings duration=3600 ) + SpellAddBuff(blessing_of_kings blessing_of_kings=1) +Define(blessing_of_might 19740) + SpellInfo(blessing_of_might duration=3600 ) + SpellAddBuff(blessing_of_might blessing_of_might=1) +Define(crusader_strike 35395) + SpellInfo(crusader_strike holy=-1 cd=4.5 ) +Define(divine_storm 53385) + SpellInfo(divine_storm holy=3 ) +Define(execution_sentence_aura 114916) + SpellInfo(execution_sentence_aura duration=10 tick=1 haste=spell ) +Define(execution_sentence 114157) + SpellInfo(execution_sentence cd=60) + SpellAddTargetDebuff(execution_sentence execution_sentence_aura=1) +Define(exorcism 879) + SpellInfo(exorcism holy=-1 cd=15 ) +Define(exorcism_glyphed 122032) + SpellInfo(exorcism_glyphed holy=-1 cd=15) +Define(glyph_of_double_jeopardy 121027) + SpellInfo(glyph_of_double_jeopardy duration=10 ) + SpellAddBuff(glyph_of_double_jeopardy glyph_of_double_jeopardy=1) +Define(guardian_of_ancient_kings 86698) + SpellInfo(guardian_of_ancient_kings duration=30 cd=300 ) + SpellAddBuff(guardian_of_ancient_kings guardian_of_ancient_kings=1) +Define(hammer_of_the_righteous 53595) + SpellInfo(hammer_of_the_righteous holy=-1 cd=4.5 ) +Define(hammer_of_wrath 24275) + SpellInfo(hammer_of_wrath holy=-0 cd=6 ) +Define(inquisition 84963) + SpellInfo(inquisition duration=10 holy=1 ) + SpellAddBuff(inquisition inquisition=1) +Define(judgment 20271) + SpellInfo(judgment cd=6 ) +Define(rebuke 96231) + SpellInfo(rebuke duration=4 cd=15 ) +Define(seal_of_righteousness 20154) + SpellAddBuff(seal_of_righteousness seal_of_righteousness=1) +Define(seal_of_truth 31801) + SpellAddBuff(seal_of_truth seal_of_truth=1) +Define(templars_verdict 85256) + SpellInfo(templars_verdict holy=3 ) +Define(glyph_of_mass_exorcism 122028) +AddCheckBox(showwait L(showwait) default) +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if not BuffPresent(str_agi_int any=1) Spell(blessing_of_kings) + if not BuffPresent(mastery any=1) and not BuffPresent(str_agi_int any=1) Spell(blessing_of_might) + unless Stance(1) Spell(seal_of_truth) + } + if {BuffExpires(inquisition) or BuffRemains(inquisition) <=2 } and {HolyPower() >=3 or target.DeadIn() 0 and SpellCooldown(hammer_of_wrath) <=0.2 if CheckBoxOn(showwait) Texture(Spell_nature_timestop) + if Glyph(glyph_of_mass_exorcism no) + { + Spell(exorcism) + if SpellCooldown(exorcism) >0 and SpellCooldown(exorcism) <=0.2 if CheckBoxOn(showwait) Texture(Spell_nature_timestop) + } + if Glyph(glyph_of_mass_exorcism) + { + Spell(exorcism_glyphed) + if SpellCooldown(exorcism_glyphed) >0 and SpellCooldown(exorcism_glyphed) <=0.2 if CheckBoxOn(showwait) Texture(Spell_nature_timestop) + } + if not {ArmorSetParts(T15 more 4) } and {target.HealthPercent() <=20 or BuffPresent(avenging_wrath) } Spell(judgment) + Spell(crusader_strike) + if SpellCooldown(crusader_strike) >0 and SpellCooldown(crusader_strike) <=0.2 if CheckBoxOn(showwait) Texture(Spell_nature_timestop) + Spell(judgment) + if BuffRemains(inquisition) >4 Spell(templars_verdict) +} +AddIcon mastery=3 help=offgcd +{ + if target.IsInterruptible() Spell(rebuke) + if BuffPresent(inquisition) Spell(execution_sentence) +} +AddIcon mastery=3 help=aoe +{ + if not InCombat() + { + unless Stance(2) Spell(seal_of_righteousness) + } + if {HolyPower() ==5 } Spell(divine_storm) + Spell(hammer_of_the_righteous) + if BuffPresent(glyph_of_double_jeopardy) focus.Spell(judgment) + if BuffRemains(inquisition) >4 Spell(divine_storm) +} +AddIcon mastery=3 help=cd +{ + if BuffPresent(inquisition) Spell(avenging_wrath) + if BuffPresent(avenging_wrath) Spell(guardian_of_ancient_kings) + if BuffPresent(inquisition) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } +} +]] + + OvaleScripts:RegisterScript("PALADIN", name, desc, code) +end diff --git a/class/Priest.lua b/class/Priest.lua new file mode 100644 index 0000000..c56b720 --- /dev/null +++ b/class/Priest.lua @@ -0,0 +1,128 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Shadow" + local code = [[ +Define(berserking 26297) + SpellInfo(berserking duration=10 cd=180 ) + SpellAddBuff(berserking berserking=1) +Define(cascade 120785) + SpellInfo(cascade duration=0.1 ) +Define(devouring_plague 2944) + SpellInfo(devouring_plague duration=6 tick=1 shadoworbs=1 haste=spell ) + SpellAddTargetDebuff(devouring_plague devouring_plague=1) +Define(dispersion 47585) + SpellInfo(dispersion duration=6 cd=120 ) + SpellAddBuff(dispersion dispersion=1) +Define(divine_insight_shadow 124430) + SpellInfo(divine_insight_shadow duration=12 ) + SpellAddBuff(divine_insight_shadow divine_insight_shadow=1) +Define(divine_star 110744) + SpellInfo(divine_star cd=15 ) +Define(halo 120517) + SpellInfo(halo duration=5.5 cd=40 ) +Define(inner_fire 588) + SpellAddBuff(inner_fire inner_fire=1) +Define(inner_will 73413) + SpellAddBuff(inner_will inner_will=1) +Define(mind_blast 8092) + SpellInfo(mind_blast shadoworbs=-1 cd=8) +Define(mind_flay 15407) + SpellInfo(mind_flay duration=3 canStopChannelling=1 ) + SpellAddTargetDebuff(mind_flay mind_flay=1) +Define(mind_flay_insanity 129197) + SpellInfo(mind_flay_insanity duration=3 tick=1 haste=spell canStopChannelling=1 ) + SpellAddTargetDebuff(mind_flay_insanity mind_flay_insanity=1) +Define(mind_sear 48045) + SpellInfo(mind_sear duration=5 canStopChannelling=1 ) + SpellAddBuff(mind_sear mind_sear=1) +Define(mind_spike 73510) +Define(mindbender 123040) + SpellInfo(mindbender duration=15 cd=60 ) +Define(power_infusion 10060) + SpellInfo(power_infusion duration=20 cd=120 ) + SpellAddBuff(power_infusion power_infusion=1) +Define(power_word_fortitude 21562) + SpellInfo(power_word_fortitude duration=3600 ) + SpellAddBuff(power_word_fortitude power_word_fortitude=1) +Define(shadow_word_death 32379) + SpellInfo(shadow_word_death cd=8 ) +Define(shadow_word_pain 589) + SpellInfo(shadow_word_pain duration=18 tick=3 haste=spell ) + SpellAddTargetDebuff(shadow_word_pain shadow_word_pain=1) +Define(shadowfiend 34433) + SpellInfo(shadowfiend duration=12 cd=180 ) +Define(shadowform 15473) + SpellAddBuff(shadowform shadowform=1) +Define(surge_of_darkness 87160) + SpellInfo(surge_of_darkness duration=10 ) + SpellAddBuff(surge_of_darkness surge_of_darkness=1) +Define(vampiric_embrace 15286) + SpellInfo(vampiric_embrace duration=15 cd=180 ) + SpellAddBuff(vampiric_embrace vampiric_embrace=1) +Define(vampiric_touch 34914) + SpellInfo(vampiric_touch duration=15 tick=3 haste=spell ) + SpellAddTargetDebuff(vampiric_touch vampiric_touch=1) +Define(cascade_talent 16) +Define(divine_star_talent 17) +Define(halo_talent 18) +Define(mindbender_talent 8) +Define(power_infusion_talent 14) +AddCheckBox(showwait L(showwait) default) +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if not BuffPresent(stamina any=1) Spell(power_word_fortitude) + if BuffExpires(inner_fire) and BuffExpires(inner_will) Spell(inner_fire) + if BuffExpires(shadowform) Spell(shadowform) + } + if BuffExpires(shadowform) Spell(shadowform) + if TalentPoints(mindbender_talent) Spell(mindbender) + if ShadowOrbs() ==3 and {SpellCooldown(mind_blast) <1.5 or target.HealthPercent() <20 and SpellCooldown(shadow_word_death) <1.5 } Spell(devouring_plague) + if target.HealthPercent(less 20) Spell(shadow_word_death) + Spell(mind_blast) + if target.TicksRemain(devouring_plague) ==1 Spell(mind_flay_insanity) + Spell(mind_flay_insanity) + if not target.DebuffPresent(shadow_word_pain) Spell(shadow_word_pain) + if target.DebuffRemains(vampiric_touch) 90 Spell(dispatch usable=1) + if target.TicksRemain(rupture) <2 and Energy() >90 Spell(mutilate) + if target.TicksRemain(rupture) <2 or {ComboPoints() ==5 and target.TicksRemain(rupture) <3 } Spell(rupture) + if ComboPoints() >4 Spell(envenom) + if ComboPoints() >=2 and BuffRemains(slice_and_dice) <3 Spell(envenom) + if ComboPoints() <5 Spell(dispatch usable=1) + Spell(mutilate) +} +AddIcon mastery=1 help=offgcd +{ + if not InCombat() + { + Spell(stealth) + } + if target.IsInterruptible() Spell(kick) + Spell(tricks_of_the_trade) +} +AddIcon mastery=1 help=cd +{ + if not BuffPresent(vanish) and SpellCooldown(vanish) >60 Spell(preparation) + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + Spell(berserking) + if TimeInCombat() >10 and not BuffPresent(stealthed) and not BuffPresent(shadow_blades) Spell(vanish) + if {BuffStacks(bloodlust any=1) or TimeInCombat() >60 } Spell(shadow_blades) + Spell(vendetta) +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + if WeaponEnchantExpires(mainhand 300) Item(6497) + } + if {target.DebuffStacks(weakened_armor any=1) <3 or target.DebuffRemains(weakened_armor any=1) <3 } and ComboPoints() <5 if CheckBoxOn(expose_armor_check) Spell(expose_armor) + Spell(ambush usable=1) + if BuffRemains(slice_and_dice) <2 or {BuffRemains(slice_and_dice) <15 and BuffStacks(bandits_guile) ==11 and ComboPoints() >=4 } Spell(slice_and_dice) + if ComboPoints() <5 or not target.DebuffPresent(revealing_strike) + { + if target.TicksRemain(revealing_strike) <2 Spell(revealing_strike) + Spell(sinister_strike) + } + if not TalentPoints(anticipation_talent) or BuffPresent(deep_insight) or SpellCooldown(shadow_blades) <=11 or BuffStacks(anticipation) >=4 or {BuffPresent(shadow_blades) and BuffStacks(anticipation) >=3 } + { + if target.TicksRemain(rupture) <2 and target.DeadIn() >=26 Spell(rupture) + Spell(eviscerate) + } + if Energy() >60 or BuffExpires(deep_insight) or BuffRemains(deep_insight) >5 -ComboPoints() + { + if target.TicksRemain(revealing_strike) <2 Spell(revealing_strike) + Spell(sinister_strike) + } +} +AddIcon mastery=2 help=offgcd +{ + if not InCombat() + { + Spell(stealth) + } + if target.IsInterruptible() Spell(kick) +} +AddIcon mastery=2 help=cd +{ + if not BuffPresent(vanish) and SpellCooldown(vanish) >60 Spell(preparation) + if TimeInCombat() ==0 or BuffPresent(shadow_blades) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if TimeInCombat() ==0 or BuffPresent(shadow_blades) Spell(berserking) + if TimeInCombat() >10 and {ComboPoints() <3 or {TalentPoints(anticipation_talent) and BuffStacks(anticipation) <3 } or {BuffExpires(shadow_blades) and {ComboPoints() <4 or {TalentPoints(anticipation_talent) and BuffStacks(anticipation) <4 } } } } and {{TalentPoints(shadow_focus_talent) and BuffExpires(adrenaline_rush) and Energy() <20 } or {TalentPoints(subterfuge_talent) and Energy() >=90 } or {not TalentPoints(shadow_focus_talent) and not TalentPoints(subterfuge_talent) and Energy() >=60 } } Spell(vanish) + if not ArmorSetParts(T14 more 4) and TimeInCombat() >5 Spell(shadow_blades) + if not ArmorSetParts(T14 more 4) and Energy() <35 and BuffExpires(adrenaline_rush) Spell(killing_spree) + if not ArmorSetParts(T14 more 4) and {Energy() <35 or BuffPresent(shadow_blades) } Spell(adrenaline_rush) + if ArmorSetParts(T14 more 4) and {{SpellCooldown(killing_spree) >30.5 and SpellCooldown(adrenaline_rush) <=9 } or {Energy() <35 and {SpellCooldown(killing_spree) ==0 or SpellCooldown(adrenaline_rush) ==0 } } } Spell(shadow_blades) + if ArmorSetParts(T14 more 4) and {{BuffPresent(shadow_blades) and BuffExpires(adrenaline_rush) and {Energy() <35 or BuffRemains(shadow_blades) <=3.5 } } or {BuffExpires(shadow_blades) and SpellCooldown(shadow_blades) >30 } } Spell(killing_spree) + if ArmorSetParts(T14 more 4) and BuffPresent(shadow_blades) and {Energy() <35 or BuffRemains(shadow_blades) <=15 } Spell(adrenaline_rush) +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if WeaponEnchantExpires(mainhand 300) Item(6497) + Spell(slice_and_dice) + } + if {target.DebuffStacks(weakened_armor any=1) <3 or target.DebuffRemains(weakened_armor any=1) <3 } and ComboPoints() <5 if CheckBoxOn(expose_armor_check) Spell(expose_armor) + if ComboPoints() <=5 and BuffStacks(anticipation) ==0 Spell(ambush usable=1) + if BuffRemains(slice_and_dice) <3 and ComboPoints() ==5 Spell(slice_and_dice) + if ComboPoints() ==5 and target.DebuffRemains(rupture) <5 Spell(rupture) + if BuffStacks(anticipation) <3 and BuffRemains(shadow_dance) <=2 Spell(ambush usable=1) + if ComboPoints() ==5 Spell(eviscerate) + if ComboPoints() <4 and {target.DebuffRemains(hemorrhage) <4 or target.TargetIsPlayer() } Spell(hemorrhage) + if ComboPoints() <5 and Energy() >80 and {target.DebuffRemains(hemorrhage) <4 or target.TargetIsPlayer() } Spell(hemorrhage) + if ComboPoints() <4 and {SpellCooldown(shadow_dance) >7 or {SpellCooldown(shadow_dance) ==0 and TimeInCombat() <=9 } } Spell(backstab) + if ComboPoints() <5 and Energy() >80 and SpellCooldown(shadow_dance) >=2 Spell(backstab) +} +AddIcon mastery=3 help=offgcd +{ + if not InCombat() + { + Spell(stealth) + Spell(premeditation usable=1) + } + if target.IsInterruptible() Spell(kick) + if Energy() >=75 and BuffExpires(stealthed) and not target.DebuffPresent(find_weakness) Spell(shadow_dance) + if {ComboPoints() <=3 and SpellCooldown(honor_among_thieves) >1.75 } or ComboPoints() <=2 Spell(premeditation usable=1) + Spell(tricks_of_the_trade) +} +AddIcon mastery=3 help=cd +{ + if not BuffPresent(vanish) and SpellCooldown(vanish) >60 Spell(preparation) + Spell(shadow_blades) + if BuffPresent(shadow_dance) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if BuffPresent(shadow_dance) Spell(berserking) + if TimeInCombat() >10 and Energy() >=45 and Energy() <=75 and ComboPoints() <=3 and not BuffPresent(shadow_dance) and not BuffPresent(master_of_subtlety) and not target.DebuffPresent(find_weakness) Spell(vanish) +} +]] + + OvaleScripts:RegisterScript("ROGUE", name, desc, code) +end diff --git a/class/Shaman.lua b/class/Shaman.lua new file mode 100644 index 0000000..e892728 --- /dev/null +++ b/class/Shaman.lua @@ -0,0 +1,219 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Elemental, Enhancement" + local code = [[ +Define(ancestral_swiftness 16188) + SpellInfo(ancestral_swiftness cd=90 ) + SpellAddBuff(ancestral_swiftness ancestral_swiftness=1) +Define(ascendance 114049) + SpellInfo(ascendance cd=180 ) +Define(berserking 26297) + SpellInfo(berserking duration=10 cd=180 ) + SpellAddBuff(berserking berserking=1) +Define(blood_fury 20572) + SpellInfo(blood_fury duration=15 cd=120 ) + SpellAddBuff(blood_fury blood_fury=1) +Define(bloodlust 2825) + SpellInfo(bloodlust duration=40 cd=300 ) + SpellAddBuff(bloodlust bloodlust=1) +Define(chain_lightning 421) + SpellInfo(chain_lightning cd=3 ) +Define(earth_elemental_totem 2062) + SpellInfo(earth_elemental_totem duration=60 cd=300 ) +Define(earth_shock 8042) + SpellInfo(earth_shock sharedcd=shock cd=6 ) +Define(earthquake 61882) + SpellInfo(earthquake duration=10 cd=10 ) + SpellAddBuff(earthquake earthquake=1) +Define(elemental_blast 117014) + SpellInfo(elemental_blast cd=12 ) +Define(elemental_mastery 16166) + SpellInfo(elemental_mastery duration=20 cd=90 ) + SpellAddBuff(elemental_mastery elemental_mastery=1) +Define(feral_spirit 51533) + SpellInfo(feral_spirit duration=30 cd=120 ) +Define(fire_elemental_totem 2894) + SpellInfo(fire_elemental_totem duration=60 cd=300 ) +Define(fire_nova 1535) + SpellInfo(fire_nova cd=4 ) +Define(flame_shock 8050) + SpellInfo(flame_shock duration=30 tick=3 haste=spell sharedcd=shock cd=6 ) + SpellAddTargetDebuff(flame_shock flame_shock=1) +Define(flametongue_weapon 8024) +Define(heroism 32182) + SpellInfo(heroism duration=40 cd=300 ) + SpellAddBuff(heroism heroism=1) +Define(lava_beam 114074) +Define(lava_burst 51505) + SpellInfo(lava_burst cd=8 ) +Define(lava_lash 60103) + SpellInfo(lava_lash cd=10 ) +Define(lava_surge 77756) +Define(lifeblood 138724) + SpellInfo(lifeblood mana=-9935 ) + SpellAddBuff(lifeblood lifeblood=1) +Define(lightning_bolt 403) +Define(lightning_shield 324) + SpellInfo(lightning_shield duration=3600 ) + SpellAddBuff(lightning_shield lightning_shield=1) +Define(maelstrom_weapon 53817) + SpellInfo(maelstrom_weapon duration=30 ) + SpellAddBuff(maelstrom_weapon maelstrom_weapon=1) +Define(magma_totem 8187) +Define(searing_totem 3599) + SpellInfo(searing_totem duration=60 ) +Define(spiritwalkers_grace 79206) + SpellInfo(spiritwalkers_grace duration=15 cd=120 ) + SpellAddBuff(spiritwalkers_grace spiritwalkers_grace=1) +Define(stormblast 115356) + SpellInfo(stormblast duration=15 sharedcd=strike cd=8 ) + SpellAddBuff(stormblast stormblast=1) +Define(stormlash 120687) +Define(stormlash_totem 120668) + SpellInfo(stormlash_totem duration=10 cd=300 ) +Define(stormstrike 17364) + SpellInfo(stormstrike duration=15 sharedcd=strike cd=8 ) + SpellAddBuff(stormstrike stormstrike=1) +Define(strike 138537) + SpellInfo(strike energy=40 ) +Define(thunderstorm 51490) + SpellInfo(thunderstorm duration=5 cd=45 ) + SpellAddBuff(thunderstorm thunderstorm=1) +Define(unleash_elements 73680) + SpellInfo(unleash_elements cd=15 ) +Define(unleash_flame 73683) + SpellInfo(unleash_flame duration=8 ) + SpellAddBuff(unleash_flame unleash_flame=1) +Define(wind_shear 57994) + SpellInfo(wind_shear duration=3 cd=12 ) +Define(windfury_weapon 8232) +Define(ancestral_swiftness_talent 11) +Define(elemental_blast_talent 18) +Define(elemental_mastery_talent 10) +Define(unleashed_fury_talent 16) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + if WeaponEnchantExpires(mainhand) main.Spell(flametongue_weapon) + if not BuffPresent(lightning_shield) Spell(lightning_shield) + } + + if TalentPoints(unleashed_fury_talent) and not BuffPresent(ascendance) Spell(unleash_elements) + if target.DebuffRemains(flame_shock) >CastTime(lava_burst) and {BuffPresent(ascendance) or SpellCooldown(lava_burst) } Spell(lava_burst) + if target.TicksRemain(flame_shock) <2 Spell(flame_shock) + if TalentPoints(elemental_blast_talent) Spell(elemental_blast) + if BuffStacks(lightning_shield) ==7 Spell(earth_shock) + if BuffStacks(lightning_shield) >3 and target.DebuffRemains(flame_shock) >SpellCooldown(earth_shock) and target.DebuffRemains(flame_shock) 60 and target.DebuffRemains(flame_shock) <=BuffDuration(ascendance) and SpellCooldown(ascendance) +BuffDuration(ascendance) 20 and not TotemPresent(fire) Spell(searing_totem) + Spell(lightning_bolt) + +} +AddIcon mastery=1 help=offgcd +{ + if target.IsInterruptible() Spell(wind_shear) +} +AddIcon mastery=1 help=aoe +{ + + Spell(lava_beam) + if not TotemPresent(fire) Spell(magma_totem) + if Enemies() <=2 and not TotemPresent(fire) Spell(searing_totem) + if Enemies() <3 and target.DebuffRemains(flame_shock) >CastTime(lava_burst) and SpellCooldown(lava_burst) Spell(lava_burst) + if not target.DebuffPresent(flame_shock) and Enemies() <3 Spell(flame_shock) + Spell(earthquake) + if ManaPercent() <80 Spell(thunderstorm) + if ManaPercent() >10 Spell(chain_lightning) + Spell(lightning_bolt) + +} +AddIcon mastery=1 help=cd +{ + if target.HealthPercent() <25 or TimeInCombat() >5 { Spell(bloodlust) Spell(heroism) } + if not TotemPresent(air) and not BuffPresent(stormlash) and {BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } Spell(stormlash_totem) + if BuffPresent(bloodlust any=1) or BuffPresent(ascendance) or {{SpellCooldown(ascendance) >10 or Level() <87 } and SpellCooldown(fire_elemental_totem) >10 } Spell(blood_fury) + if TalentPoints(elemental_mastery_talent) and {TimeInCombat() >15 and {{not BuffPresent(bloodlust any=1) and TimeInCombat() <120 } or {not BuffPresent(berserking) and not BuffPresent(bloodlust any=1) and BuffPresent(ascendance) } or {TimeInCombat() >=200 and {SpellCooldown(ascendance) >30 or Level() <87 } } } } Spell(elemental_mastery) + if not TotemPresent(fire) Spell(fire_elemental_totem) + if Enemies() >1 or {target.DebuffRemains(flame_shock) >BuffDuration(ascendance) and {target.DeadIn() <20 or BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } and SpellCooldown(lava_burst) >0 } Spell(ascendance) + + if {{SpellCooldown(ascendance) >10 or Level() <87 } and SpellCooldown(fire_elemental_totem) >10 } or BuffPresent(ascendance) or BuffPresent(bloodlust any=1) or TotemPresent(fire) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if TalentPoints(ancestral_swiftness_talent) and not BuffPresent(ascendance) Spell(ancestral_swiftness) + if BuffPresent(ascendance) Spell(spiritwalkers_grace) + if not TotemPresent(earth) and SpellCooldown(fire_elemental_totem) >=60 Spell(earth_elemental_totem) + if {{TalentPoints(elemental_blast_talent) and SpellCooldown(elemental_blast) ==0 } or {SpellCooldown(lava_burst) ==0 and not BuffStacks(lava_surge) } } or {BuffDuration(raid_movement) >=SpellCooldown(unleash_elements) +SpellCooldown(earth_shock) } Spell(spiritwalkers_grace) + +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + if WeaponEnchantExpires(mainhand) main.Spell(windfury_weapon) + if WeaponEnchantExpires(offhand) off.Spell(flametongue_weapon) + if not BuffPresent(lightning_shield) Spell(lightning_shield) + } + + if not TotemPresent(fire) Spell(searing_totem) + if TalentPoints(unleashed_fury_talent) Spell(unleash_elements) + if TalentPoints(elemental_blast_talent) and BuffStacks(maelstrom_weapon) >=1 Spell(elemental_blast) + if BuffStacks(maelstrom_weapon) ==5 or {ArmorSetParts(T13 more 4) ==1 and BuffStacks(maelstrom_weapon) >=4 and False() } Spell(lightning_bolt) + Spell(stormblast) + Spell(stormstrike) + if BuffPresent(unleash_flame) and not target.DebuffPresent(flame_shock) Spell(flame_shock) + Spell(lava_lash) + if ArmorSetParts(T15 more 2) ==1 and BuffStacks(maelstrom_weapon) >=4 and not BuffPresent(ascendance) Spell(lightning_bolt) + if BuffPresent(unleash_flame) or {not BuffPresent(unleash_flame) and not target.DebuffPresent(flame_shock) and SpellCooldown(unleash_elements) >5 } Spell(flame_shock) + Spell(unleash_elements) + if BuffStacks(maelstrom_weapon) >=3 and not BuffPresent(ascendance) Spell(lightning_bolt) + if BuffPresent(ancestral_swiftness) Spell(lightning_bolt) + if BuffPresent(unleash_flame) and target.DebuffRemains(flame_shock) <=3 Spell(flame_shock) + Spell(earth_shock) + if BuffStacks(maelstrom_weapon) >1 and not BuffPresent(ascendance) Spell(lightning_bolt) + +} +AddIcon mastery=2 help=offgcd +{ + if target.IsInterruptible() Spell(wind_shear) +} +AddIcon mastery=2 help=aoe +{ + + if not TotemPresent(fire) Spell(magma_totem) + if Enemies() <=5 and not TotemPresent(fire) Spell(searing_totem) + if {Enemies() <=5 and DebuffCount(flame_shock) ==Enemies() } or DebuffCount(flame_shock) >=5 Spell(fire_nova) + if target.DebuffPresent(flame_shock) Spell(lava_lash) + if BuffStacks(maelstrom_weapon) >=3 Spell(chain_lightning) + Spell(unleash_elements) + if not target.DebuffPresent(flame_shock) Spell(flame_shock) + Spell(stormblast) + Spell(stormstrike) + if BuffStacks(maelstrom_weapon) ==5 and SpellCooldown(chain_lightning) >=2 Spell(lightning_bolt) + if BuffStacks(maelstrom_weapon) >1 Spell(chain_lightning) + if BuffStacks(maelstrom_weapon) >1 and not BuffPresent(ascendance) Spell(lightning_bolt) + +} +AddIcon mastery=2 help=cd +{ + if target.HealthPercent() <25 or TimeInCombat() >5 { Spell(bloodlust) Spell(heroism) } + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + if not TotemPresent(air) and not BuffPresent(stormlash) and {BuffPresent(bloodlust any=1) or TimeInCombat() >=60 } Spell(stormlash_totem) + Spell(blood_fury) + if TalentPoints(elemental_mastery_talent) and {not Glyph(55455) or SpellCooldown(fire_elemental_totem) ==0 or SpellCooldown(fire_elemental_totem) >70 } Spell(elemental_mastery) + if not TotemPresent(fire) and {BuffPresent(bloodlust any=1) or BuffPresent(lifeblood) or BuffPresent(elemental_mastery) } or TimeInCombat() >=60 Spell(fire_elemental_totem) + if not TotemPresent(fire) and target.DeadIn() <=0 +10 Spell(fire_elemental_totem) + if SpellCooldown(strike) >=3 Spell(ascendance) + + if ArmorSetParts(T15 more 4) ==1 Spell(feral_spirit) + if TalentPoints(ancestral_swiftness_talent) and BuffStacks(maelstrom_weapon) <2 Spell(ancestral_swiftness) + Spell(feral_spirit) + if not TotemPresent(earth) and SpellCooldown(fire_elemental_totem) >=50 Spell(earth_elemental_totem) + Spell(spiritwalkers_grace) + +} +]] + + OvaleScripts:RegisterScript("SHAMAN", name, desc, code) +end diff --git a/class/Warlock.lua b/class/Warlock.lua new file mode 100644 index 0000000..eea6ab4 --- /dev/null +++ b/class/Warlock.lua @@ -0,0 +1,310 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Affliction, Demonology, Destruction" + local code = [[ +Define(agony 980) + SpellInfo(agony duration=24 tick=2 haste=spell ) + SpellAddTargetDebuff(agony agony=1) +Define(backdraft 117896) +Define(blood_fury 20572) + SpellInfo(blood_fury duration=15 cd=120 ) + SpellAddBuff(blood_fury blood_fury=1) +Define(chaos_bolt 116858) + SpellInfo(chaos_bolt burningembers=10 tick=1 haste=spell ) + SpellAddTargetDebuff(chaos_bolt chaos_bolt=1) +Define(conflagrate 17962) + SpellInfo(conflagrate duration=5 ) + SpellAddBuff(conflagrate conflagrate=1) +Define(corruption 172) + SpellInfo(corruption duration=18 tick=2 haste=spell stance=0) + SpellAddTargetDebuff(corruption corruption=1) +Define(curse_of_the_elements 1490) + SpellInfo(curse_of_the_elements duration=300 ) + SpellAddTargetDebuff(curse_of_the_elements aura_of_the_elements=1) +Define(dark_intent 109773) + SpellInfo(dark_intent duration=3600 ) + SpellAddBuff(dark_intent dark_intent=1) +Define(dark_soul_instability 113858) + SpellInfo(dark_soul_instability duration=20 cd=120 ) + SpellAddBuff(dark_soul_instability dark_soul_instability=1) +Define(dark_soul_knowledge 113861) + SpellInfo(dark_soul_knowledge duration=20 cd=120 ) + SpellAddBuff(dark_soul_knowledge dark_soul_knowledge=1) +Define(dark_soul_misery 113860) + SpellInfo(dark_soul_misery duration=20 cd=120 ) + SpellAddBuff(dark_soul_misery dark_soul_misery=1) +Define(doom 603) + SpellInfo(doom duration=60 demonicfury=60 tick=15 haste=spell stance=1) + SpellAddTargetDebuff(doom doom=1) +Define(drain_soul 1120) + SpellInfo(drain_soul duration=12 tick=2 haste=spell canStopChannelling=1 ) + SpellAddTargetDebuff(drain_soul drain_soul=1) +Define(fel_flame 77799) +Define(felstorm 89751) + SpellInfo(felstorm duration=6 energy=60 cd=45 ) + SpellAddBuff(felstorm felstorm=1) +Define(fire_and_brimstone 108683) + SpellInfo(fire_and_brimstone burningembers=10 cd=1 ) + SpellAddBuff(fire_and_brimstone fire_and_brimstone=1) +Define(grimoire_of_sacrifice 108503) + SpellInfo(grimoire_of_sacrifice duration=3600 cd=30 ) + SpellAddBuff(grimoire_of_sacrifice grimoire_of_sacrifice=1) +Define(hand_of_guldan 105174) + SpellInfo(hand_of_guldan stance=0) +Define(haunt 48181) + SpellInfo(haunt duration=8 tick=2 shards=1 ) + SpellAddBuff(haunt haunt=1) +Define(havoc 80240) + SpellInfo(havoc duration=15 cd=25 ) + SpellAddBuff(havoc havoc=1) +Define(hellfire 1949) + SpellInfo(hellfire duration=14 tick=1 haste=spell canStopChannelling=1 ) + SpellAddTargetDebuff(hellfire hellfire=1) +Define(immolate 348) + SpellInfo(immolate duration=15 tick=3 haste=spell ) + SpellAddTargetDebuff(immolate immolate=1) +Define(immolate_aoe 108686) + SpellInfo(immolate_aoe duration=15 tick=3 haste=spell ) +SpellList(immolate_debuff immolate immolate_aoe) +Define(immolation_aura 104025) + SpellInfo(immolation_aura duration=10 demonicfury=0 stance=1) + SpellAddBuff(immolation_aura immolation_aura=1) +Define(incinerate 29722) +Define(life_tap 1454) + SpellInfo(life_tap mana=-15 ) + SpellAddBuff(life_tap life_tap=1) +Define(malefic_grasp 103103) + SpellInfo(malefic_grasp duration=4 tick=1 haste=spell canStopChannelling=1 ) + SpellAddTargetDebuff(malefic_grasp malefic_grasp=1) +Define(melee 103988) + SpellInfo(melee stance=1) +Define(metamorphosis 103958) + SpellInfo(metamorphosis demonicfury=0 cd=10 ) + SpellAddBuff(metamorphosis metamorphosis=1) +Define(molten_core 122355) + SpellInfo(molten_core duration=30 ) + SpellAddBuff(molten_core molten_core=1) +Define(rain_of_fire 5740) + SpellInfo(rain_of_fire duration=6 ) + SpellAddBuff(rain_of_fire rain_of_fire=1) +Define(rain_of_fire_aftermath 104232) +Define(seed_of_corruption 27243) + SpellInfo(seed_of_corruption duration=18 tick=3 haste=spell ) + SpellAddTargetDebuff(seed_of_corruption seed_of_corruption=1) +Define(service_felguard 111898) + SpellInfo(service_felguard cd=120 ) +Define(service_felhunter 111897) + SpellInfo(service_felhunter cd=120 ) +Define(shadow_bolt 686) + SpellInfo(shadow_bolt demonicfury=40 stance=0) +Define(shadowburn 17877) + SpellInfo(shadowburn burningembers=10 ) +Define(shadowflame 47960) + SpellInfo(shadowflame duration=6 tick=1 haste=spell ) + SpellAddTargetDebuff(shadowflame shadowflame=1) +Define(skull_banner 114207) + SpellInfo(skull_banner duration=10 cd=180 ) +Define(soul_fire 6353) + SpellAddBuff(soul_fire molten_core=-1) +Define(soul_swap 86121) +Define(soulburn 74434) + SpellInfo(soulburn duration=30 shards=1 cd=1 ) + SpellAddBuff(soulburn soulburn=1) +Define(soulburn_seed_of_corruption 86664) +Define(summon_doomguard 18540) + SpellInfo(summon_doomguard cd=600 ) +Define(summon_felguard 30146) + SpellInfo(summon_felguard demonicfury=0 ) +Define(summon_felhunter 691) + SpellInfo(summon_felhunter demonicfury=0 ) +Define(summon_infernal 1122) + SpellInfo(summon_infernal cd=600 ) +Define(touch_of_chaos 103964) + SpellInfo(touch_of_chaos demonicfury=40 stance=1) +Define(unstable_affliction 30108) + SpellInfo(unstable_affliction duration=14 tick=2 haste=spell ) + SpellAddTargetDebuff(unstable_affliction unstable_affliction=1) +Define(void_ray 115422) + SpellInfo(void_ray demonicfury=40 ) +Define(wrathstorm 115831) + SpellInfo(wrathstorm duration=6 energy=60 cd=45 ) + SpellAddBuff(wrathstorm wrathstorm=1) +Define(grimoire_of_sacrifice_talent 15) +Define(grimoire_of_service_talent 14) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + if not BuffPresent(spell_power_multiplier any=1) Spell(dark_intent) + if not TalentPoints(grimoire_of_sacrifice_talent) or BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter) + if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter) + } + if target.DebuffExpires(magic_vulnerability any=1) Spell(curse_of_the_elements) + if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter) + if BuffPresent(soulburn) Spell(soul_swap) + if not InFlightToTarget(haunt) and target.DebuffRemains(haunt) 2 or SpellCooldown(dark_soul_misery) >35 or {SoulShards() >1 and SpellCooldown(dark_soul_misery) LastSpellSpellPower(agony) and target.TicksRemain(agony) LastSpellSpellPower(corruption) and target.TicksRemain(corruption) LastSpellSpellPower(unstable_affliction) and target.TicksRemain(unstable_affliction) LastSpellSpellPower(unstable_affliction) and target.TicksRemain(unstable_affliction) <=Ticks(unstable_affliction) /2 and SoulShards() and target.HealthPercent() <=20 Spell(soulburn) +} +AddIcon mastery=1 help=moving +{ + if ManaPercent() <80 and ManaPercent() =30 Spell(doom) + if BuffPresent(metamorphosis) and target.DebuffPresent(corruption) and target.DebuffRemains(corruption) <20 Spell(touch_of_chaos) + if BuffPresent(metamorphosis) and BuffExpires(dark_soul_knowledge) and DemonicFury() <=650 and target.DeadIn() >30 if Stance(1) cancel.Texture(Spell_shadow_demonform) + if BuffPresent(metamorphosis) and BuffStacks(molten_core) and {BuffRemains(dark_soul_knowledge) CastTime(soul_fire) } Spell(soul_fire) + if BuffPresent(metamorphosis) Spell(touch_of_chaos) + if not target.DebuffPresent(corruption) and target.DeadIn() >=6 Spell(corruption) + if not InFlightToTarget(hand_of_guldan) and target.DebuffRemains(shadowflame) <1 +CastTime(shadow_bolt) Spell(hand_of_guldan) + if BuffStacks(molten_core) and {BuffRemains(dark_soul_knowledge) CastTime(soul_fire) } Spell(soul_fire) + if ManaPercent() <60 Spell(life_tap) + Spell(shadow_bolt) + Spell(life_tap) +} +AddIcon mastery=2 help=offgcd +{ + if not InCombat() + { + if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice) + } + Spell(melee) + Spell(felstorm) + Spell(wrathstorm) + if {BuffPresent(dark_soul_knowledge) and DemonicFury() /32 >BuffRemains(dark_soul_knowledge) } or target.DebuffRemains(corruption) <5 or not target.DebuffPresent(doom) or DemonicFury() >=950 or DemonicFury() /32 >target.DeadIn() unless Stance(1) Spell(metamorphosis) +} +AddIcon mastery=2 help=moving +{ + Spell(fel_flame) +} +AddIcon mastery=2 help=aoe +{ + + if BuffPresent(metamorphosis) and target.DebuffRemains(corruption) >10 and DemonicFury() <=650 and BuffExpires(dark_soul_knowledge) and not target.DebuffPresent(immolation_aura) if Stance(1) cancel.Texture(Spell_shadow_demonform) + if BuffPresent(metamorphosis) Spell(immolation_aura) + if BuffPresent(metamorphosis) and target.DebuffRemains(corruption) <10 Spell(void_ray) + if BuffPresent(metamorphosis) and {not target.DebuffPresent(doom) or target.DebuffRemains(doom) =30 Spell(doom) + if BuffPresent(metamorphosis) Spell(void_ray) + if not target.DebuffPresent(corruption) and target.DeadIn() >30 Spell(corruption) + Spell(hand_of_guldan) + if target.DebuffRemains(corruption) <10 or BuffPresent(dark_soul_knowledge) or DemonicFury() >=950 or DemonicFury() /32 >target.DeadIn() unless Stance(1) Spell(metamorphosis) + Spell(hellfire) + Spell(life_tap) + +} +AddIcon mastery=2 help=cd +{ + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + Spell(blood_fury) + Spell(dark_soul_knowledge) + Spell(summon_doomguard) +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + if not BuffPresent(spell_power_multiplier any=1) Spell(dark_intent) + if not TalentPoints(grimoire_of_sacrifice_talent) or BuffExpires(grimoire_of_sacrifice) unless pet.CreatureFamily(Felhunter) Spell(summon_felhunter) + if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter) + } + if target.DebuffExpires(magic_vulnerability any=1) Spell(curse_of_the_elements) + if TalentPoints(grimoire_of_service_talent) Spell(service_felhunter) + if BurningEmbers() if target.HealthPercent(less 20) Spell(shadowburn) + if {target.TicksRemain(immolate_debuff) =5 Spell(immolate) + if Charges(conflagrate) ==2 Spell(conflagrate) + if not target.DebuffPresent(rain_of_fire_aftermath) and not InFlightToTarget(rain_of_fire_aftermath) Spell(rain_of_fire_aftermath) + if BurningEmbers() and {BuffStacks(backdraft) <3 or Level() <86 } and {{BurningEmbers() / 10} >3.5 or BuffRemains(dark_soul_instability) >CastTime(chaos_bolt) or BuffRemains(skull_banner) >CastTime(chaos_bolt) } Spell(chaos_bolt) + Spell(conflagrate) + Spell(incinerate) +} +AddIcon mastery=3 help=offgcd +{ + if not InCombat() + { + if TalentPoints(grimoire_of_sacrifice_talent) Spell(grimoire_of_sacrifice) + } +} +AddIcon mastery=3 help=aoe +{ + + if not target.DebuffPresent(rain_of_fire_aftermath) and not InFlightToTarget(rain_of_fire_aftermath) Spell(rain_of_fire_aftermath) + if {BurningEmbers() / 10} >=3.5 and BurningEmbers() and target.HealthPercent() <=20 focus.Spell(havoc) + if {BurningEmbers() / 10} >=3.5 and BurningEmbers() and BuffStacks(havoc) >=1 if target.HealthPercent(less 20) Spell(shadowburn) + if BurningEmbers() and BuffExpires(fire_and_brimstone) Spell(fire_and_brimstone) + if BuffPresent(fire_and_brimstone) and not target.DebuffPresent(immolate_debuff) Spell(immolate) + if BuffPresent(fire_and_brimstone) Spell(conflagrate) + if BuffPresent(fire_and_brimstone) Spell(incinerate) + if not target.DebuffPresent(immolate_debuff) Spell(immolate) + + if not target.DebuffPresent(rain_of_fire_aftermath) and not InFlightToTarget(rain_of_fire_aftermath) Spell(rain_of_fire_aftermath) + focus.Spell(havoc) +} +AddIcon mastery=3 help=cd +{ + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } + Spell(blood_fury) + Spell(dark_soul_instability) + Spell(summon_doomguard) +} +]] + + OvaleScripts:RegisterScript("WARLOCK", name, desc, code) +end diff --git a/class/Warrior.lua b/class/Warrior.lua new file mode 100644 index 0000000..7754a9f --- /dev/null +++ b/class/Warrior.lua @@ -0,0 +1,284 @@ +local _, Ovale = ... +local OvaleScripts = Ovale.OvaleScripts + +do + local name = "Ovale" + local desc = "[5.2] Ovale: Arms, Fury, Protection" + local code = [[ +Define(avatar 107574) + SpellInfo(avatar duration=24 cd=180 ) + SpellAddBuff(avatar avatar=1) +Define(battle_shout 6673) + SpellInfo(battle_shout duration=300 cd=60 ) + SpellAddBuff(battle_shout battle_shout=1) +Define(battle_stance 2457) + SpellInfo(battle_stance cd=3 ) +Define(berserker_rage 18499) + SpellInfo(berserker_rage duration=6 cd=30 ) + SpellAddBuff(berserker_rage berserker_rage=1) +Define(bladestorm 46924) + SpellInfo(bladestorm duration=6 cd=90 ) + SpellAddBuff(bladestorm bladestorm=1) +Define(bloodbath 113344) + SpellInfo(bloodbath duration=6 tick=1 ) + SpellAddTargetDebuff(bloodbath bloodbath=1) +Define(bloodsurge 46916) + SpellInfo(bloodsurge duration=10) +Define(bloodthirst 23881) + SpellInfo(bloodthirst rage=-10 cd=4.5 ) +Define(cleave 845) + SpellInfo(cleave rage=30 cd=1.5 ) +Define(colossus_smash 86346) + SpellInfo(colossus_smash duration=6.5 cd=20 ) + SpellAddTargetDebuff(colossus_smash colossus_smash=1) +Define(defensive_stance 71) + SpellInfo(defensive_stance cd=3 ) +Define(demoralizing_shout 1160) + SpellInfo(demoralizing_shout duration=10 cd=60 ) + SpellAddTargetDebuff(demoralizing_shout demoralizing_shout=1) +Define(devastate 20243) +Define(dragon_roar 118000) + SpellInfo(dragon_roar cd=60 ) +Define(enrage 5229) + SpellInfo(enrage duration=10 rage=-20 cd=60 ) + SpellAddBuff(enrage enrage=1) +Define(execute 5308) + SpellInfo(execute rage=30 ) +Define(heroic_leap 6544) + SpellInfo(heroic_leap duration=1 cd=45 ) + AddCheckBox(heroic_leap_check SpellName(heroic_leap)) +Define(heroic_strike 78) + SpellInfo(heroic_strike rage=30 cd=1.5 ) +Define(heroic_throw 57755) + SpellInfo(heroic_throw cd=30 ) +Define(impending_victory 103840) + SpellInfo(impending_victory rage=10 cd=30 ) +Define(last_stand 12975) + SpellInfo(last_stand duration=20 cd=180 ) + SpellAddBuff(last_stand last_stand=1) +Define(meat_cleaver 85739) + SpellInfo(meat_cleaver duration=10 ) + SpellAddBuff(meat_cleaver meat_cleaver=1) +Define(mortal_strike 12294) + SpellInfo(mortal_strike duration=10 rage=-10 cd=6 ) + SpellAddTargetDebuff(mortal_strike mortal_wounds=1) +Define(overpower 7384) + SpellInfo(overpower rage=10 ) + SpellAddBuff(overpower taste_for_blood=-1) +Define(pummel 6552) + SpellInfo(pummel duration=4 cd=15 ) +Define(raging_blow 85288) + SpellInfo(raging_blow rage=10 ) + SpellAddBuff(raging_blow raging_blow_aura=-1) +Define(raging_blow_aura 131116) + SpellInfo(raging_blow_aura duration=12 ) + SpellAddBuff(raging_blow_aura raging_blow_aura=1) +Define(recklessness 1719) + SpellInfo(recklessness duration=12 cd=180 ) + SpellAddBuff(recklessness recklessness=1) +Define(revenge 6572) + SpellInfo(revenge rage=-15 cd=9 ) +Define(shield_barrier 112048) + SpellInfo(shield_barrier duration=6 rage=20 cd=1.5 ) + SpellAddBuff(shield_barrier shield_barrier=1) +Define(shield_block 2565) + SpellInfo(shield_block rage=60 cd=1.5 ) + SpellAddTargetDebuff(shield_block shield_block_aura=1) +Define(shield_block_aura 132404) + SpellInfo(shield_block_aura duration=6 ) + SpellAddBuff(shield_block_aura shield_block_aura=1) +Define(shield_slam 23922) + SpellInfo(shield_slam rage=-20 cd=6 ) +Define(shield_wall 871) + SpellInfo(shield_wall duration=12 cd=300 ) + SpellAddBuff(shield_wall shield_wall=1) +Define(shockwave 46968) + SpellInfo(shockwave cd=40 ) + SpellAddBuff(shockwave shockwave=1) +Define(skull_banner 114207) + SpellInfo(skull_banner duration=10 cd=180 ) +Define(slam 1464) + SpellInfo(slam rage=20 ) +Define(storm_bolt 107570) + SpellInfo(storm_bolt cd=30 ) + SpellAddBuff(storm_bolt storm_bolt=1) +Define(sudden_execute 139958) + SpellInfo(sudden_execute duration=10 ) + SpellAddBuff(sudden_execute sudden_execute=1) +Define(sunder_armor 7386) + SpellInfo(sunder_armor rage=15 ) + SpellAddTargetDebuff(sunder_armor weakened_armor=1) + AddCheckBox(sunder_armor_check SpellName(sunder_armor)) +Define(sweeping_strikes 12328) + SpellInfo(sweeping_strikes duration=10 rage=30 cd=10 ) + SpellAddBuff(sweeping_strikes sweeping_strikes=1) +Define(taste_for_blood 56636) +Define(thunder_clap 6343) + SpellInfo(thunder_clap rage=20 cd=6 ) + SpellAddTargetDebuff(thunder_clap weakened_blows=1) +Define(ultimatum 122510) + SpellInfo(ultimatum duration=10 ) + SpellAddBuff(ultimatum ultimatum=1) +Define(weakened_armor 113746) + SpellInfo(weakened_armor duration=30 ) + SpellAddBuff(weakened_armor weakened_armor=1) +Define(weakened_blows 115798) + SpellInfo(weakened_blows duration=30 ) + SpellAddBuff(weakened_blows weakened_blows=1) +Define(whirlwind 1680) + SpellInfo(whirlwind rage=30 ) +Define(wild_strike 100130) + SpellInfo(wild_strike rage=30 ) + SpellAddBuff(wild_strike bloodsurge=-1) + SpellAddTargetDebuff(wild_strike wild_strike=1) +Define(avatar_talent 16) +Define(bloodbath_talent 17) +Define(dragon_roar_talent 12) +Define(impending_victory_talent 6) +Define(shockwave_talent 11) +Define(storm_bolt_talent 18) +AddCheckBox(showwait L(showwait) default) +AddIcon mastery=1 help=main +{ + if not InCombat() + { + unless Stance(1) Spell(battle_stance) + } + if target.DebuffStacks(weakened_armor any=1) <3 or target.DebuffRemains(weakened_armor any=1) <3 if CheckBoxOn(sunder_armor_check) Spell(sunder_armor) + Spell(mortal_strike) + if TalentPoints(dragon_roar_talent) and TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) and target.DebuffExpires(colossus_smash) and target.HealthPercent() >=20 Spell(dragon_roar) + if TalentPoints(storm_bolt_talent) and target.DebuffPresent(colossus_smash) Spell(storm_bolt) + if target.DebuffRemains(colossus_smash) <1 Spell(colossus_smash) + if target.DebuffPresent(colossus_smash) or BuffPresent(recklessness) or Rage() >=Rage() -25 if target.HealthPercent(less 20) Spell(execute) + if TalentPoints(dragon_roar_talent) and {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) and target.HealthPercent() >=20 } or {target.DebuffExpires(colossus_smash) and target.HealthPercent() <20 } Spell(dragon_roar) + if target.DebuffPresent(colossus_smash) and {target.DebuffRemains(colossus_smash) <1 or BuffPresent(recklessness) } and target.HealthPercent() >=20 Spell(slam) + if BuffStacks(taste_for_blood) >=3 and target.HealthPercent() >=20 Spell(overpower usable=1) + if target.DebuffPresent(colossus_smash) and target.DebuffRemains(colossus_smash) <2.5 and target.HealthPercent() >=20 Spell(slam) + if BuffExpires(sudden_execute) if target.HealthPercent(less 20) Spell(execute) + if target.HealthPercent() >=20 or BuffPresent(sudden_execute) Spell(overpower usable=1) + if Rage() >=40 and target.HealthPercent() >=20 Spell(slam) + Spell(battle_shout) + Spell(heroic_throw) +} +AddIcon mastery=1 help=offgcd +{ + if target.IsInterruptible() Spell(pummel) + if TalentPoints(bloodbath_talent) and {target.DeadIn() <=18 or BuffPresent(recklessness) or target.DeadIn() >=75 } Spell(bloodbath) + if BuffExpires(enrage) and Rage() <=Rage() -10 Spell(berserker_rage) + if target.DebuffPresent(colossus_smash) if CheckBoxOn(heroic_leap_check) Spell(heroic_leap) + if {target.DebuffPresent(colossus_smash) and Rage() >=Rage() -40 and target.HealthPercent() >=20 } or Rage() >=Rage() -15 Spell(heroic_strike) +} +AddIcon mastery=1 help=aoe +{ + + Spell(dragon_roar) + Spell(shockwave) + Spell(whirlwind) + Spell(sweeping_strikes) + if Rage() >=90 Spell(cleave) + Spell(bloodthirst) + +} +AddIcon mastery=1 help=cd +{ + if target.DeadIn() <=18 or {{target.DeadIn() >=186 or {target.HealthPercent() <20 and {target.DebuffRemains(colossus_smash) >=5 or SpellCooldown(colossus_smash) <=1.5 } } } and {not TalentPoints(bloodbath_talent) or not SpellCooldown(bloodbath) } } Spell(recklessness) + if TalentPoints(avatar_talent) and {BuffPresent(recklessness) or target.DeadIn() <=25 } Spell(avatar) + if BuffPresent(recklessness) Spell(skull_banner) + if TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } +} +AddIcon mastery=2 help=main +{ + if not InCombat() + { + unless Stance(1) Spell(battle_stance) + } + if target.DebuffStacks(weakened_armor any=1) <3 or target.DebuffRemains(weakened_armor any=1) <3 if CheckBoxOn(sunder_armor_check) Spell(sunder_armor) + if BuffStacks(raging_blow_aura) ==2 and target.DebuffPresent(colossus_smash) and target.HealthPercent() >=20 Spell(raging_blow) + if not {target.HealthPercent() <20 and target.DebuffPresent(colossus_smash) and Rage() >=30 } Spell(bloodthirst) + if BuffStacks(bloodsurge) and target.HealthPercent() >=20 and SpellCooldown(bloodthirst) <=1 Spell(wild_strike) + if not {target.HealthPercent() <20 and target.DebuffPresent(colossus_smash) and Rage() >=30 } and SpellCooldown(bloodthirst) <=1 and SpellCooldown(bloodthirst) if CheckBoxOn(showwait) Texture(Spell_nature_timestop) + if TalentPoints(dragon_roar_talent) and {not target.DebuffPresent(colossus_smash) and {BuffPresent(bloodbath) or not TalentPoints(bloodbath_talent) } } Spell(dragon_roar) + Spell(colossus_smash) + if BuffPresent(enrage) or target.DebuffPresent(colossus_smash) or Rage() >90 or target.DeadIn() <12 or BuffPresent(recklessness) if target.HealthPercent(less 20) Spell(execute) + if TalentPoints(storm_bolt_talent) Spell(storm_bolt) + if BuffStacks(raging_blow_aura) ==2 or {BuffPresent(raging_blow_aura) and {target.DebuffPresent(colossus_smash) or SpellCooldown(colossus_smash) >=3 or {SpellCooldown(bloodthirst) >=1 and BuffRemains(raging_blow_aura) <=3 } } } Spell(raging_blow) + if BuffStacks(bloodsurge) Spell(wild_strike) + if TalentPoints(shockwave_talent) Spell(shockwave) + if target.DebuffExpires(colossus_smash) Spell(heroic_throw) + if Rage() <70 and not target.DebuffPresent(colossus_smash) Spell(battle_shout) + if target.DebuffPresent(colossus_smash) and target.HealthPercent() >=20 Spell(wild_strike) + if TalentPoints(impending_victory_talent) and target.HealthPercent() >=20 Spell(impending_victory) + if SpellCooldown(colossus_smash) >=2 and Rage() >=80 and target.HealthPercent() >=20 Spell(wild_strike) + if Rage() <70 Spell(battle_shout) +} +AddIcon mastery=2 help=offgcd +{ + if target.IsInterruptible() Spell(pummel) + if TalentPoints(bloodbath_talent) and {SpellCooldown(colossus_smash) <2 or target.DebuffRemains(colossus_smash) >=5 or target.DeadIn() <=20 } Spell(bloodbath) + if not {BuffStacks(enrage) or {BuffStacks(raging_blow_aura) ==2 and target.HealthPercent() >=20 } } or {BuffRemains(recklessness) >=10 and not BuffStacks(raging_blow_aura) } Spell(berserker_rage) + if target.DebuffPresent(colossus_smash) if CheckBoxOn(heroic_leap_check) Spell(heroic_leap) + if {{target.DebuffPresent(colossus_smash) and Rage() >=40 } and target.HealthPercent() >=20 } or Rage() >=110 Spell(heroic_strike) +} +AddIcon mastery=2 help=aoe +{ + + Spell(dragon_roar) + Spell(shockwave) + if BuffStacks(meat_cleaver) and BuffStacks(raging_blow_aura) Spell(raging_blow) + Spell(whirlwind) + if Rage() >=90 Spell(cleave) + Spell(bloodthirst) + +} +AddIcon mastery=2 help=cd +{ + if {TalentPoints(avatar_talent) and {SpellCooldown(colossus_smash) <2 or target.DebuffRemains(colossus_smash) >=5 } } or {TalentPoints(bloodbath_talent) and {BuffPresent(bloodbath) and {target.DeadIn() >192 or target.HealthPercent() <20 } } } or target.DeadIn() <=12 Spell(recklessness) + if BuffPresent(recklessness) and TalentPoints(avatar_talent) Spell(avatar) + if BuffPresent(recklessness) Spell(skull_banner) + if {not TalentPoints(bloodbath_talent) and target.DebuffPresent(colossus_smash) } or {TalentPoints(bloodbath_talent) and BuffPresent(bloodbath) } { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } +} +AddIcon mastery=3 help=main +{ + if not InCombat() + { + unless Stance(2) Spell(defensive_stance) + } + if Rage() <80 Spell(shield_slam) + if Rage() <85 Spell(revenge) + if Rage() <90 Spell(battle_shout) + if target.DebuffExpires(weakened_blows) Spell(thunder_clap) + if target.HealthPercent(less 20) Spell(execute) + Spell(devastate) +} +AddIcon mastery=3 help=offgcd +{ + if target.IsInterruptible() Spell(pummel) + if {BuffPresent(ultimatum) and target.HealthPercent() >=20 } Spell(heroic_strike) + if Rage() <90 Spell(berserker_rage) + if BuffExpires(shield_block_aura) Spell(shield_block) + if BuffExpires(shield_barrier) and Rage() >80 Spell(shield_barrier) + Spell(demoralizing_shout) +} +AddIcon mastery=3 help=aoe +{ + + Spell(dragon_roar) + Spell(shockwave) + Spell(thunder_clap) + if BuffPresent(ultimatum) Spell(cleave) + if Rage() >=90 Spell(cleave) + Spell(shield_slam) + +} +AddIcon mastery=3 help=cd +{ + if Health() <130000 Spell(last_stand) + if TalentPoints(avatar_talent) Spell(avatar) + Spell(recklessness) + if BuffExpires(shield_block_aura) Spell(shield_wall) + { Item(Trinket0Slot usable=1) Item(Trinket1Slot usable=1) } +} +]] + + OvaleScripts:RegisterScript("WARRIOR", name, desc, code) +end diff --git a/class/files.xml b/class/files.xml new file mode 100644 index 0000000..04fc5c6 --- /dev/null +++ b/class/files.xml @@ -0,0 +1,13 @@ + +