Updated Furion's Ovale script to 4.0.1:

#Project: Visualising the optimal cat rotation ingame
#Script Version: 3.0
Define(FFF 16857)
SpellAddTargetDebuff(FFF FFDEBUFF=300)
Define(FF 770)
SpellAddTargetDebuff(FF FFDEBUFF=300)
Define(FFDEBUFF 91565)
Define(RIP 1079)
SpellInfo(RIP combo=-5 duration=16)
SpellInfo(RIP glyph=GLYPHOFSHRED addduration=6)
SpellAddTargetDebuff(RIP RIP=16)
Define(MANGLE 33876)
SpellInfo(MANGLE combo=1)
SpellAddTargetDebuff(MANGLE MANGLE=60)
Define(SHRED 5221)
SpellInfo(SHRED combo=1)
Define(TIGER 5217)
SpellInfo(TIGER cd=30)
SpellInfo(TIGER glyph=GLYPHOFTIGER addcd=-3)
SpellAddBuff(TIGER TIGER=6)
Define(RAKE 1822)
SpellInfo(RAKE duration=15)
SpellAddTargetDebuff(RAKE RAKE=15)
Define(ROAR 52610)
SpellInfo(ROAR combo=-5)
SpellAddBuff(ROAR ROAR=22)
Define(BITE 22568)
SpellInfo(BITE combo=-5 mana=70)
Define(BERSERK 50334)
SpellInfo(BERSERK duration=15 cd=180)
Define(OMEN 16870)
SpellInfo(OMEN duration=8)
Define(TRAUMA 46857)
SpellInfo(TRAUMA duration=60)
Define(MANGLEB 33878)
SpellInfo(MANGLEB duration=60)
Define(HEMO 16511)
SpellInfo(HEMO duration=60)
Define(STAMPEDE 81022)
SpellInfo(STAMPEDE duration=10)
Define(RAVAGE 6785)
SpellInfo(RAVAGE combo=1)
Define(CHARGE 49376)
SpellInfo(CHARGE cd=30)
SpellInfo(CHARGE glyph=GLYPHOFCHARGE addcd=-2)
SpellAddBuff(CHARGE STAMPEDE=10)
Define(GLYPHOFSHRED 54815)
Define(GLYPHOFTIGER 94390)
Define(GLYPHOFCHARGE 94388)
SpellInfo(RIP resetcounter=ripshreds)
SpellInfo(SHRED inccounter=ripshreds)
AddCheckBox(Manglebot "Manglebot" default)
AddIcon help=main
{
if Stance(3) # cat
{
#if TargetInRange(CHARGE yes) Spell(CHARGE)
if Mana(less 31) Spell(TIGER)
if CheckBoxOn(Manglebot) and TargetDebuffExpires (MANGLE 1) Spell(MANGLE)
unless {TargetDebuffPresent(MANGLE) or TargetDebuffPresent(MANGLEB) or TargetDebuffPresent(TRAUMA) or TargetDebuffPresent(HEMO)} Spell(MANGLE)
if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 1) Spell(RAVAGE)
if TargetLifePercent(less 25) and ComboPoints(more 0) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 2 mine=1) Spell(BITE)
# if TargetLifePercent(less 25) and ComboPoints(more 4) and TargetDebuffPresent(RIP mine=1) and Mana(more 70) Spell(BITE)
if TargetLifePercent(less 25) and ComboPoints(more 4) and TargetDebuffPresent(RIP mine=1) Spell(BITE)
if BuffPresent(OMEN) Spell(Shred)
if BuffPresent(STAMPEDE) and Mana(less 53) unless BuffPresent(TIGER) Spell(SHRED)
if ComboPoints(more 4) and TargetDeadIn(more 6) and TargetDebuffExpires(RIP 2 mine=1) unless BuffPresent(OMEN)
{
# if BuffPresent(TIGER) Spell(RIP)
unless 2s before Spell(TIGER) Spell(RIP)
}
if TargetDeadIn(more 15) and TargetDebuffExpires(RAKE 3 mine=1)
{
# if BuffPresent(TIGER) Spell(RAKE)
unless 3s before Spell(TIGER) Spell(RAKE)
}
if ComboPoints(more 0) and BuffExpires(ROAR 0) Spell(ROAR)
if ComboPoints(more 4) and TargetDeadIn(more 9) and TargetDebuffExpires(RIP 12 mine=1) and at most 3s from TargetDebuffExpires(RIP mine=1) until BuffExpires(ROAR) Spell(ROAR)
if ComboPoints(more 4) and TargetDeadIn(less 4) Spell(BITE)
if ComboPoints(more 3) and TargetDeadIn(less 1) Spell(BITE)
# if ComboPoints(more 4) and Mana(more 70) unless TargetDebuffExpires(RIP 8 mine=1) or BuffExpires(ROAR 8) Spell(BITE)
if ComboPoints(more 4) unless TargetDebuffExpires(RIP 8 mine=1) or BuffExpires(ROAR 8) Spell(BITE)
if TargetLifePercent(more 25) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) Spell(SHRED)
if BuffPresent(STAMPEDE) and BuffPresent(TIGER) unless BuffPresent(OMEN) Spell(RAVAGE)
# if ComboPoints(less 5) or {TargetDebuffPresent(RIP 1 mine=1) and TargetDebuffPresent(RAKE 1 mine=1)}
# {
# if Mana(more 70) or {BuffPresent(BERSERK) and Mana(more 35)} or 3s before Spell(TIGER) Spell(SHRED)
# }
if TargetDeadIn(less 15) Spell(SHRED)
# if ComboPoints(less 1) and {BuffExpires(ROAR 2) or TargetDebuffExpires(RAKE 2 mine=1)} Spell(SHRED)
unless TargetDebuffPresent(RIP mine=1) Spell(SHRED)
}
}
AddIcon help=main size=small nocd=3
{
if Stance(3) # cat
{
{
if {TargetDebuffPresent(MANGLE 0.6) or TargetDebuffPresent(MANGLEB 0.6) or TargetDebuffPresent(TRAUMA 0.6)} and { Mana(more 82) or {{ComboPoints(less 5) or {TargetDebuffPresent(RIP 0.6 mine=1) and TargetDebuffPresent(RAKE 0.6 mine=1)}} and {if Mana(more 70) or {BuffPresent(BERSERK) and Mana(more 35)} or 3s before Spell(TIGER) Spell(SHRED)}} or {ComboPoints(less 1) and {BuffExpires(ROAR 2) or TargetDebuffExpires(RAKE 2 mine=1)}}} Spell(SHRED)
}
unless {BuffPresent(BERSERK) or 4s before Spell(TIGER) or Mana(more 32)}
{
unless TargetDebuffPresent(FFDEBUFF stacks=3) Spell(FFF priority=2)
}
}
}
AddIcon help=cd size=small nocd=3
{
if Stance(3) # cat
{
Spell(TIGER)
}
}
AddIcon help=cd size=small nocd=5
{
if Stance(3) # cat
{
unless 15s before Spell(TIGER) Spell(BERSERK)
}
}
Only part that isn't working perfectly yet is the opening. (I'm trying to get it to suggest feral charge when not in range -> mangle -> SR -> shred -> TF -> rake -> ravage -> rip)
Edit: fixed it, opening works okay as well now.