Code: Select all
# Ovale Warlock script from Leafkiller 1.4.5
# Starting from the Default Ovale Warlock script.
# 3/20/2011 1.4.5 - Make range finder work for all specs...
# 3/19/2011 1.4 - update afflic code. 1.4.2 - remove the checkbox for Shadowflame - the distance checkin code handles this now. Some cleanup.
# 1.4.3 - add new box for range finder - shows shadowflame icon if in range otherwise dash icon ;-) 1.4.4 tune range check: 8 yards
# 3/19/2011 1.3 - use the new TargetDistance function for Shadowflame. Need to have the addon LibRangeCheck 2.0.
# 03/19/2011 1.2 - Add in melee range check for Shadowflame.
# 03/19/2011 1.1 - Update Destro and demo code to match the new simcraft rotation.
# 02/08/2011 1.0.3 - update Demo for 4.06
# 01/12/2010 - Add cooldown for Demon Soul and meta checkbox
# 01/11/2010 - Add Immolation Aura, and also shadowflame checkbox
# 12/28/2010
# Demonology First
Define(BANEOFAGONY 980)
SpellAddTargetDebuff(BANEOFAGONY BANEOFAGONY=24)
Define(BANEOFDOOM 603)
SpellAddTargetDebuff(BANEOFDOOM BANEOFDOOM=60)
Define(BANEOFHAVOC 80240)
Define(CHAOSBOLT 50796)
SpellInfo(CHAOSBOLT cd=12)
Define(CONFLAGRATE 17962)
SpellInfo(CONFLAGRATE cd=10)
Define(CORRUPTION 172)
SpellAddTargetDebuff(CORRUPTION CORRUPTION=18)
Define(CURSEELEMENTS 1490)
SpellAddTargetDebuff(CURSEELEMENTS CURSEELEMENTS=300)
Define(CURSETONGUES 1714)
Define(CURSEWEAKNESS 702)
Define(DARKINTENT 80398)
Define(DEATHCOIL 6789)
Define(DEMONARMOR 687)
Define(DEMONICEMPOWERMENT 47193)
Define(DEMONSOUL 77801)
SpellInfo(DEMONSOUL cd=120)
Define(DRAINLIFE 689)
Define(DRAINSOUL 1120)
SpellInfo(DRAINSOUL canStopChannelling=5)
Define(FELARMOR 28176)
Define(FELFLAME 77799)
Define(HANDOFGULDAN 71521)
SpellInfo(HANDOFGULDAN cd=12)
SpellAddTargetDebuff(HANDOFGULDAN IMMOLATE=refresh)
Define(HAUNT 48181)
SpellInfo(HAUNT cd=8)
Define(IMMOLATE 348)
SpellInfo(IMMOLATE duration=15)
SpellAddTargetDebuff(IMMOLATE IMMOLATE=15)
SpellAddBuff(IMMOLATE MOLTENCORE=-1)
Define(IMMOLATIONAURA 50589)
SpellInfo(IMMOLATIONAURA cd=30)
Define(INCINERATE 29722)
SpellAddBuff(INCINERATE MOLTENCORE=-1)
Define(LIFETAP 1454)
Define(METAMORPHOSIS 47241)
Define(SEARINGPAIN 5676)
Define(SEEDOFCORRUPTION 27243)
Define(SHADOWBOLT 686)
SpellAddTargetDebuff(SHADOWBOLT SHADOWEMBRACE=12)
Define(SHADOWBURN 17877)
Define(SHADOWFLAME 47897)
SpellInfo(SHADOWFLAME cd=12)
Define(SOULFIRE 6353)
Define(IMPROVEDSOULFIREBUFF 18120)
Define(SOULBURN 74434)
SpellInfo(SOULBURN cd=45)
SpellAddBuff(SOULBURN SOULBURN=15)
Define(SUMMONINFERNAL 1122)
Define(SUMMONDOOMGUARD 18540)
Define(SUMMONFELGUARD 30146)
Define(SUMMONFELHUNTER 691)
Define(SUMMONIMP 688)
Define(SUMMONSUCCUBUS 712)
Define(UNSTABLEAFFLICTION 30108)
SpellAddTargetDebuff(UNSTABLEAFFLICTION UNSTABLEAFFLICTION=15)
#Add in attack for rangechecking for Shadowflame
Define(ATTACK 88163)
#Buff
Define(DECIMATION 63167)
Define(MOLTENCORE 71165)
Define(EMPOWEREDIMP 47283)
Define(IMPROVEDSOULFIREBUFF 85383)
Define(SHADOWTRANCE 17941)
Define(FELSPARK 89937)
#Talent
Define(IMPROVEDSOULFIRE 11197)
AddCheckBox(meta "Show Meta" mastery=2)
AddListItem(curse elements SpellName(CURSEELEMENTS))
AddListItem(curse tongues SpellName(CURSETONGUES))
AddListItem(curse weakness SpellName(CURSEWEAKNESS))
AddListItem(curse none L(None) default)
AddListItem(bane agony SpellName(BANEOFAGONY))
AddListItem(bane doom SpellName(BANEOFDOOM) default)
AddListItem(bane havoc SpellName(BANEOFHAVOC) mastery=3)
AddListItem(afflic shadow SpellName(SHADOWBOLT) default mastery=1)
AddListItem(afflic drain SpellName(DRAINLIFE) mastery=1)
ScoreSpells(CURSEELEMENTS SHADOWBOLT HAUNT UNSTABLEAFFLICTION IMMOLATE CONFLAGRATE CURSEWEAKNESS
BANEOFAGONY CORRUPTION SOULFIRE DRAINSOUL INCINERATE SHADOWBOLT CHAOSBOLT)
AddIcon help=main mastery=1
{
if InCombat(no) and BuffExpires(FELARMOR 300) Spell(FELARMOR)
if BuffExpires(FELARMOR 5) Spell(FELARMOR)
if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)
if TargetDebuffExpires(CORRUPTION 2 mine=1 haste=spell) and TargetDeadIn(more 6) Spell(CORRUPTION)
if TargetDebuffExpires(UNSTABLEAFFLICTION 3 mine=1) and TargetDeadIn(more 5) and Speed(less 50) Spell(UNSTABLEAFFLICTION)
if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1) and TargetDeadIn(more 20) Spell(BANEOFDOOM)
Spell(HAUNT)
if BuffPresent(FELSPARK) and TargetDebuffExpires(UNSTABLEAFFLICTION 8 mine=1 haste=spell) {
Spell(FELFLAME)
}
if TargetLifePercent(less 25) Spell(DRAINSOUL)
if TargetDistance(less 8) Spell(SHADOWFLAME)
if ManaPercent(less 35) Spell(LIFETAP)
if BuffPresent(SOULBURN) Spell(SOULFIRE)
Spell(DEMONSOUL)
Spell(SHADOWBOLT)
}
AddIcon help=cd size=small mastery=1
{
if BuffPresent(heroism) Spell(SUMMONINFERNAL)
Spell(DEMONSOUL)
Item(Trinket0Slot usable=1)
Item(Trinket1Slot usable=1)
}
AddIcon help=main mastery=2 # Demonology
{
if InCombat(no) and BuffExpires(FELARMOR 300) Spell(FELARMOR)
if BuffExpires(FELARMOR 5) Spell(FELARMOR)
if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
if List(curse weakness) and TargetDebuffExpires(CURSEWEAKNESS 2) and TargetDeadIn(more 8) Spell(CURSEWEAKNESS)
# Follow the sim script line for line - so we can have a testable rotation
if CheckBoxOn(meta) Spell(METAMORPHOSIS)
if BuffPresent(METAMORPHOSIS 10.1) Spell(IMMOLATIONAURA)
if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1) and TargetDeadIn(more 20) Spell(BANEOFDOOM)
if TargetDebuffExpires(IMMOLATE 0 mine=1 haste=spell) and TargetDeadIn(more 4) Spell(IMMOLATE)
if TargetDebuffExpires(CORRUPTION 2 mine=1 haste=spell) and TargetDeadIn(more 6) Spell(CORRUPTION)
if BuffPresent(FELSPARK) Spell(FELFLAME)
if TargetDistance(less 8) Spell(SHADOWFLAME)
Spell(HANDOFGULDAN)
if BuffPresent(MOLTENCORE) Spell(INCINERATE)
if BuffPresent(METAMORPHOSIS) {
unless BuffPresent(heroism) Spell(SOULBURN usable)
}
if BuffPresent(DECIMATION) or BuffPresent(SOULBURN) Spell(SOULFIRE)
if ManaPercent(less 50) {
unless BuffPresent(METAMORPHOSIS) or BuffPresent(heroism) {
Spell(LIFETAP)
}
}
Spell(DEMONSOUL)
Spell(SHADOWBOLT)
}
AddIcon help=cd size=small mastery=2
{
Spell(METAMORPHOSIS)
Spell(DEMONSOUL)
if BuffPresent(METAMORPHOSIS) Spell(SUMMONINFERNAL)
Item(Trinket0Slot usable=1)
Item(Trinket1Slot usable=1)
}
AddIcon help=main mastery=3
{
if InCombat(no) and BuffExpires(FELARMOR 300) Spell(FELARMOR)
if BuffExpires(FELARMOR 5) Spell(FELARMOR)
if List(curse elements) and TargetDebuffExpires(magicaldamagetaken 2) and TargetDeadIn(more 8) Spell(CURSEELEMENTS)
if BuffPresent(SOULBURN) Spell(SOULFIRE)
if BuffPresent(FELSPARK) and TargetDebuffExpires(IMMOLATE 8 mine=1 haste=spell) {
Spell(FELFLAME)
}
if TargetDebuffExpires(IMMOLATE 2.5 mine=1 haste=spell) and TargetDeadIn(more 5) Spell(IMMOLATE)
Spell(CONFLAGRATE)
if TargetDebuffExpires(BANEOFDOOM 0 mine=1) and TargetDebuffExpires(BANEOFAGONY 0 mine=1)
{
if List(bane doom) and TargetDeadIn(more 15) Spell(BANEOFDOOM)
if TargetDeadIn(more 10) unless List(bane havoc) Spell(BANEOFAGONY)
}
if TargetDebuffExpires(CORRUPTION 2 mine=1 haste=spell) and TargetDeadIn(more 6) Spell(CORRUPTION)
if TargetDistance(less 8) Spell(SHADOWFLAME)
if BuffPresent(EMPOWEREDIMP) and at most 1.5s from BuffExpires(IMPROVEDSOULFIREBUFF) until BuffExpires(EMPOWEREDIMP) Spell(SOULFIRE)
Spell(CHAOSBOLT)
if BuffExpires(IMPROVEDSOULFIREBUFF 5) Spell(SOULFIRE)
if TargetLifePercent(less 20) Spell(SHADOWBURN)
if ManaPercent(less 10) Spell(LIFETAP)
Spell(INCINERATE)
}
AddIcon help=cd size=small mastery=3
{
if BuffPresent(heroism) Spell(SUMMONINFERNAL)
Spell(DEMONSOUL)
Item(Trinket0Slot usable=1)
Item(Trinket1Slot usable=1)
}
AddIcon size=small
{
Spell(SOULBURN usable=1)
}
AddIcon size=small mastery=1
{
unless PetPresent()
{
if List(afflic shadow) Spell(SUMMONSUCCUBUS)
if List(afflic drain) Spell(SUMMONIMP)
}
}
AddIcon size=small mastery=2
{
unless PetPresent() Spell(SUMMONFELGUARD)
}
AddIcon size=small mastery=3
{
unless PetPresent() Spell(SUMMONIMP)
}
AddIcon size=small
{
if TargetDistance(less 8) Texture(ability_warlock_shadowflame)
Texture(Ability_druid_dash)
}