Register

Leafkiller's MoP Feral/Guardian Ovale Script

Face-rippin fun.
Honored
Posts: 104
Joined: Thu Jun 30, 2011 4:05 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby RareBeast » Fri Jun 21, 2013 8:38 pm

For what its worth - I did an Oondasta last night following the rake spam instructions of the new version and topped DPS at 130k DPS which is better than I normally seem to do lol. Sample size of one makes this irrelevant of course :)

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Fri Jun 21, 2013 10:07 pm

It seems to be recommending rake anytime the ratio is 100% or higher instead of 114% (or whatever it was before). Has nothing to do with trinkets, procs or set bonuses (still recommends rake at 100% ratio even while in my birthday suit).
Code: Select all
    #rake,if=action.rake.tick_damage>action.mangle_cat.hit_damage&action.rake.tick_damage>=dot.rake.tick_dmg
    if RakeTickDamage() >Damage(SHRED) and RakeRatio() >=100 Spell(RAKE)


This line is the problem. Damage(SHRED) is returning 0, thus making this always true as long as our rake is as powerful as the previous one.

This line is missing for SHRED.
Code: Select all
    SpellInfo(MANGLE_CAT base=32207.7265 bonusap=0.3571)


EDIT: Found the MangleDamage() function. I simply replaced Damage(SHRED) with this and everything appears to work again. Since Mangle is most of the fillers at this point I left it at that, but to make it shred simply multiply it by 1.2. If you're doing this yourself as a temp fix, be sure to replace it in both the DoC and Non-DoC rotations (there's 2 places this line of code exists).

One other small request I'd like to make would be to add the following lines at the top of Guardian icons:
Code: Select all
AddIcon help=Rake size=small mastery=3 checkboxon=cooldownsRatio
{
    #RakeRatio()
}

AddIcon help=Rip size=small mastery=3 checkboxon=cooldownsRatio
{
    #RipRatio()
}

What this does is make blank boxes when I have cooldownsRatio checked such that the bear ovale is in the same position as the cat ovale. There might be a simpler way to do this (such as a mastery=2 or 3 type thing). Nothing essential but it bothers me how it shifts every time I go to bear form.

P.S. I'm putting in a ticket on Ovale to try and get weapon damage included but I doubt it'll be a super high priority as I'm guessing we're one of the few specs this actually affects.

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Sat Jun 22, 2013 3:43 pm

Alright, I've reverted the most recent update entirely. Long story short it was my fault and I shouldn't have committed it in the first place, Ovale doesn't properly support weapon damage calculations and I forgot that.

The fix ShmooDude describes works to an extent, but the base damage is set so that I can calculate the hit size based on my equipped weapon, so it's really not appropriate to use that number for others.

I've also incorporated the change you requested ShmooDude, thanks for the code snippet, made it nice and easy.

The new version should be available some time today or tomorrow depending on when Jeshu accepts the pull request.
Image

Posts: 1
Joined: Sun Jun 23, 2013 5:41 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby Singharz » Sun Jun 23, 2013 5:54 am

aggixx wrote:Alright, I've reverted the most recent update entirely. Long story short it was my fault and I shouldn't have committed it in the first place, Ovale doesn't properly support weapon damage calculations and I forgot that.

The fix ShmooDude describes works to an extent, but the base damage is set so that I can calculate the hit size based on my equipped weapon, so it's really not appropriate to use that number for others.

I've also incorporated the change you requested ShmooDude, thanks for the code snippet, made it nice and easy.

The new version should be available some time today or tomorrow depending on when Jeshu accepts the pull request.


Hi aggixx, I tried the new code code and it still feels like way too many rake suggestions compared to previous versions, often 2-3 rake in a row when no buffs/procs changed. 6 minutes on a training dummy and I got 97 rake hits and 39 mangle hits, and only 7 shred.

My toon

Honored
Posts: 115
Joined: Thu Apr 28, 2011 12:28 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby adianar » Mon Jun 24, 2013 5:19 pm

I've a quick question for ya'll. The formatting of Nerien's VS Leaf's seems easier to me to track. Are those soft settings between them or is there a hardcoding difference between them? Is it possible to get a short description of the various boxes across the screen as to which of them to track and why? Sorry I'm sure the question is going backwards for ya'll, but most any new ferals picking up the ovale /leaf script will need something of an explanation as to what is what.

Thanks as always.

Adi

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Mon Jun 24, 2013 6:08 pm

Hardcoded for the most part. If you mouseover each box it should give a (very) brief explanation of what each box is for.
Image

Honored
User avatar
Posts: 72
Joined: Mon Feb 21, 2011 8:56 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby scorpio0920 » Mon Jun 24, 2013 9:19 pm

Code: Select all
# Shared items
ItemList(ROR_ITEM 94532 95802 96546)


This includes Thunderforged?

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Mon Jun 24, 2013 10:41 pm

It does not, nice catch. Submitted a pull request with the fix for that. That might explain why it was frequently not suggesting to clip Rip during Rune.
Image

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Mon Jun 24, 2013 10:54 pm

aggixx wrote:Alright, I've reverted the most recent update entirely. Long story short it was my fault and I shouldn't have committed it in the first place, Ovale doesn't properly support weapon damage calculations and I forgot that.

The fix ShmooDude describes works to an extent, but the base damage is set so that I can calculate the hit size based on my equipped weapon, so it's really not appropriate to use that number for others.

I've also incorporated the change you requested ShmooDude, thanks for the code snippet, made it nice and easy.

The new version should be available some time today or tomorrow depending on when Jeshu accepts the pull request.


Are you sure you got it? I see the code snipet that I asked for, but the problematic line is still there and its still suggesting rake at any ratio of 100 or more.

What was it before? a simple RoR check? (since barring say primordius is probably the only way currently to make this true besides unequipping our weapon)

EDIT: Actualy at really high attack power levels it becomes true, last few seconds of my heroic rentaki's proc puts rake damage over mangle (though not shred, of course I'm 1:1:1 reforged might even end up true for someone mastery reforged)

aggixx wrote:It does not, nice catch. Submitted a pull request with the fix for that. That might explain why it was frequently not suggesting to clip Rip during Rune.


Along that note, that line NEVER fires in the non-doc section. Pretty sure it'd have to get moved higher up (for example I can have a 1 CP rip up and 5 cps and it'll suggest ferocious bite even though the rip ratio is something like 1000%

Looks like "if not" doesn't work? I changed it to "unless" and then it works. But that can't be the whole story because you have "if not" in many other places that it does work (or the whole thing would be bollocks). Best guess is BITWRange() isn't returning as expected (maybe its returning "true" or "nothing" and "not nothing" isn't false?)

EDIT2: It defiantly has some weird behavior. Take this for example:
AddIcon
{
if BITWRange() Spell(MANGLE_CAT)
if not BITWRange() Spell(SHRED)
}

no target = shred
target > 25% health = mangle with an estimation of how long to GET to 25% health (red as if its not usable)
target <= 25% health = mangle

and "if not BITWRange()" is the same as "if not target.HealthPercent() <= 25" while "unless target.HealthPercent() <= 25" is the same thing as "if target.HealthPercent() > 25" So it looks like "not" doesn't work with less than or greater than conditionals because its not strictly a boolean return but a number?

EDIT3: Yeah looking at the documentation HealthPercent() can return either a boolean OR a number depending on how you call it
target.HealthPercent() < 25 returns a number while
target.HealthPercent(less 25) returns a boolean (there is no "less than or equal" setting however, according to the tooltip its a less than anyhow)

So actually I think this probably needs to be fixed in a lot of places as there are many functions that work this way. I might hunt some down before I go to bed.

EDIT4: Except changing that doesn't work (tried making it less 25 didn't change the broken functionality), I'm really not sure what its doing at this point unless it simply never returns a boolean, lol. I would say probably to not use "not" on any multi return type functions. You have to use "unless"

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Tue Jun 25, 2013 1:26 am

ShmooDude wrote:Are you sure you got it? I see the code snipet that I asked for, but the problematic line is still there and its still suggesting rake at any ratio of 100 or more.

What was it before? a simple RoR check? (since barring say primordius is probably the only way currently to make this true besides unequipping our weapon)

EDIT: Actualy at really high attack power levels it becomes true, last few seconds of my heroic rentaki's proc puts rake damage over mangle (though not shred, of course I'm 1:1:1 reforged might even end up true for someone mastery reforged)


I just reverted to the version before I made the changes that caused all the complaints but I guess that line was actually introduced in the commit prior to that. And yeah, it was just a RoR check.

On the second thing, I believe "not" is supposed to be the inversion of a single comparison, where as unless is the inversion of the whole statement. Conditions such as:
Code: Select all
if {not Foo()} or Foo2()

are fine as is (brackets for clarity)
but things like
Code: Select all
if not Foo()

can probably safely be changed to unless Foo().

Will toy around with it.

Would be interested to hear from Jeshu how not and unless are intended to be used.

Edit: Alright, it seems you were right in that the issue is somehow with what BITWRange returns. I just removed the function and do the health check in its place for conditionals, since that was only there to support the 2pT13 bonus anyway. This new script should hopefully properly clip Rip during RoR for both specs.

I would also like to add crit chance snapshotting to bleed ratio calculations and damage comparison of rake vs mangle but both of those things can't be done without some changes, at least as far I'm aware.

I'm also planning on doing, time permitting, a pass through the current script to clean it up a bit and align it with SimC (I have to update the SimC action list again first).
Image

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Tue Jun 25, 2013 2:13 pm

Yeah, CritChance only pulls spell crit chance and not melee.

Next time Jeshu wanders back in here, here's my list of would love to see happen.
Melee weapon damage
Armor support (damage reduction due to armor)
Melee Crit Chance (currently only spell is available)

I know just enough programming to know what's wrong, but not really enough on how to fix it or I'd help, lol.

EDIT: Also latest update seems to be working as expected again.

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Wed Jun 26, 2013 4:21 pm

I've managed to add Crit snapshotting!

A couple of caveats:
Assumes +80 stats to chest and no +170 Str to gloves and the 5% str/agi/int buff (however, even if these aren't the case, the difference is less than 0.1% crit)
Doesn't take into account any sort of boss crit suppression at this time (which I believe is just a flat 3%?)
Doesn't take into account crit damage multipliers (since those I believe do not snapshot, I think this is the proper way to do it).
Doesn't take into account the 3% crit damage meta.

That said, it will still provide significantly more accurate numbers than only snapshotting attack power and mastery.

The code: (this replaces everything between the Helper Functions header and Misc functions)
Code: Select all
# CritChance Functions
AddFunction MeleeCritChance
{
    if BuffPresent(attack_power_multiplier any=1)
   {
       {CritChance() + {{{AttackPower()-240}/2770.9} + 5.44}}
   }
   unless BuffPresent(attack_power_multiplier any=1)
   {
       {CritChance() + {{{AttackPower()-218}/2519} + 5.44}}
   }
}
AddFunction LastRakeCritChance
{
    if BuffPresent(attack_power_multiplier any=1)
   {
       {LastSpellCritChance(RAKE) + {{{LastSpellAttackPower(RAKE)-240}/2770.9} + 5.44}}
   }
   unless BuffPresent(attack_power_multiplier any=1)
   {
       {LastSpellCritChance(RAKE) + {{{LastSpellAttackPower(RAKE)-218}/2519} + 5.44}}
   }
}
AddFunction LastRipCritChance
{
    if BuffPresent(attack_power_multiplier any=1)
   {
       {LastSpellCritChance(RIP) + {{{LastSpellAttackPower(RIP)-240}/2770.9} + 5.44}}
   }
   unless BuffPresent(attack_power_multiplier any=1)
   {
       {LastSpellCritChance(RIP) + {{{LastSpellAttackPower(RIP)-218}/2519} + 5.44}}
   }
}

# Rake functions
AddFunction RakeTickDamage
{
    # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
    {Damage(RAKE) * {1+{MeleeCritChance()/100}}} * {1 + Mastery()/100}
}
AddFunction LastRakeTickDamage
{
    # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
    {LastSpellEstimatedDamage(RAKE) * {1+{LastRakeCritChance()/100}}} * {1 + LastSpellMastery(RAKE)/100}
}
AddFunction RakeRatio
{
    if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
    unless TargetDebuffPresent(RAKE) 100.0
}

# Rip functions
AddFunction RipTickDamage
{
    # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
    {Damage(RIP) * {1+{MeleeCritChance()/100}}} * {1 + Mastery()/100}
}
AddFunction LastRipTickDamage
{
    # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
    {LastSpellEstimatedDamage(RIP) * {1+{LastRipCritChance()/100}}} * {1 + LastSpellMastery(RIP)/100}
}
AddFunction RipRatio
{
    if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
    unless TargetDebuffPresent(RIP) 100.0
}
AddFunction RipDamageTillDead
{
    # The damage from Rip that is cast under the current conditions and lasting till target is dead.
    # Multiply the damage per tick with the number of ticks that can fit into the time to die.
    # XXX Should factor in crit somehow.
    {Damage(RIP) * {1+{MeleeCritChance()/100}}} * {1 + Mastery() / 100} * {target.TimeToDie() / 2}
}
AddFunction ExistingRipDamageTillDead
{
    # The damage from Rip that is already on the target and lasting till target is dead.
    if target.DebuffPresent(RIP)
    {
        # Multiply the damage per tick with the number of ticks that can fit into the time to die.
        # XXX Should factor in crit somehow.
        {LastSpellEstimatedDamage(RIP) * {1+{LastRipCritChance()/100}}} * {1 + LastSpellMastery(RIP) / 100} * {target.TimeToDie() / 2}
    }
    unless target.DebuffPresent(RIP)
    {
        0
    }
}

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Wed Jun 26, 2013 6:26 pm

It actually wasn't that hard to hack in Melee crit versions of the existing Spell crit functions. I did notice however that the crit chance values are only grabbed from the character sheet when COMBAT_RATING_UPDATE triggers which, as far as I can tell, only includes changes to critical strike rating. I was able to make it include agility by having it grab the values whenever UNIT_STATS triggers. It still doesn't update when you gain or lose the 5% crit chance aura but that's not a big deal, at least for feral.

Next thing that needs to be done is accounting for crit suppression. Accounting for it at the script level would probably be pretty easy, but it would make more sense for it to be rolled into the function instead.

I made pull requests both for the script and for the Ovale changes.
Image

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Wed Jun 26, 2013 7:55 pm

aggixx wrote:It actually wasn't that hard to hack in Melee crit versions of the existing Spell crit functions. I did notice however that the crit chance values are only grabbed from the character sheet when COMBAT_RATING_UPDATE triggers which, as far as I can tell, only includes changes to critical strike rating. I was able to make it include agility by having it grab the values whenever UNIT_STATS triggers. It still doesn't update when you gain or lose the 5% crit chance aura but that's not a big deal, at least for feral.

Next thing that needs to be done is accounting for crit suppression. Accounting for it at the script level would probably be pretty easy, but it would make more sense for it to be rolled into the function instead.

I made pull requests both for the script and for the Ovale changes.


Ya, it didn't look too hard when I browsed over the code (certainly far easiest of my 3 wanted things).

Just screwing around on the combat dummy the ratios felt a good bit different once they took into account crit so I'm thinking I may see a bit of a DPS up using the updated script. Just an example but each tick of heroic Rentaki's went from ~5% to ~6.5% for the rake ratio.

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Thu Jun 27, 2013 2:41 am

Just to preempt, it seems like Pre-BitW range rip clipping works exactly as desired by BitW clipping seems to want to clip every time. I'll take a look at it tomorrow.
Image

Revered
Posts: 315
Joined: Tue Feb 08, 2011 5:51 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby ShmooDude » Thu Jun 27, 2013 8:02 am

aggixx wrote:Just to preempt, it seems like Pre-BitW range rip clipping works exactly as desired by BitW clipping seems to want to clip every time. I'll take a look at it tomorrow.


If its what I think it is its because you're using Damage(FEROCIOUS_BITE) but have no damage values set for it (which means the script thinks FB does 0 damage, and thus clipping Rip is always better). I noticed that when going through the code. I haven't really been using DoC lately so this doesn't affect me (that line of code isn't present in the non-doc area, though it feels like it should be).

The one thing the script (and maybe this is back to the simcraft stuff needing to be updated) feels like it needs is when its advantageous to clip a Rip a early rather than Ferocious Bite. This gets done during RoR now by specifically looking for the proc but there's probably other times when a RipRatio() check would be good.

Just an example of an extreme case, if I lag, occasionally I'll put a 1 cp Rip over a 5 cp one. When I get to 5 cps again, my Rip ratio is usually something between 300 and 600 which means that for sure reapplying Rip is the best course of action, however the current script has no way to deal with this and suggests Ferocious Bite. The question becomes where the lines is, how to find it, and how to define it.

What I've been thinking is either various RipRatios based on the remaining duration of Rip, or something similar to your doc bitw code that takes into account the FB damage directly.

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Thu Jun 27, 2013 3:37 pm

ShmooDude wrote:The one thing the script (and maybe this is back to the simcraft stuff needing to be updated) feels like it needs is when its advantageous to clip a Rip a early rather than Ferocious Bite. This gets done during RoR now by specifically looking for the proc but there's probably other times when a RipRatio() check would be good.

Just an example of an extreme case, if I lag, occasionally I'll put a 1 cp Rip over a 5 cp one. When I get to 5 cps again, my Rip ratio is usually something between 300 and 600 which means that for sure reapplying Rip is the best course of action, however the current script has no way to deal with this and suggests Ferocious Bite. The question becomes where the lines is, how to find it, and how to define it.


Yeah, you're completely right. There's actually a line for that in the SimC script (or at least there was) that was basically "if=$(rip_ratio)>=1.15". That was originally added to handle Rune procs but I could never get a higher DPS figure out of specifying rune buff or changing the value up or down. I added it to a local version of the Ovale script at one point but I ended up taking it out because it was just really weird, would have so many posts going "WTFs why is telling me to rip all the god damn time". There's also probably a better measure of comparison than just saying "if the new rip is at least 15% stronger", perhaps one that would seem to make more sense.
Image

Revered
User avatar
Posts: 323
Joined: Tue Oct 23, 2012 4:19 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby Alpheus » Fri Jun 28, 2013 4:43 am

aggixx wrote:
ShmooDude wrote:The one thing the script (and maybe this is back to the simcraft stuff needing to be updated) feels like it needs is when its advantageous to clip a Rip a early rather than Ferocious Bite. This gets done during RoR now by specifically looking for the proc but there's probably other times when a RipRatio() check would be good.

Just an example of an extreme case, if I lag, occasionally I'll put a 1 cp Rip over a 5 cp one. When I get to 5 cps again, my Rip ratio is usually something between 300 and 600 which means that for sure reapplying Rip is the best course of action, however the current script has no way to deal with this and suggests Ferocious Bite. The question becomes where the lines is, how to find it, and how to define it.


Yeah, you're completely right. There's actually a line for that in the SimC script (or at least there was) that was basically "if=$(rip_ratio)>=1.15". That was originally added to handle Rune procs but I could never get a higher DPS figure out of specifying rune buff or changing the value up or down. I added it to a local version of the Ovale script at one point but I ended up taking it out because it was just really weird, would have so many posts going "WTFs why is telling me to rip all the god damn time". There's also probably a better measure of comparison than just saying "if the new rip is at least 15% stronger", perhaps one that would seem to make more sense.


While it's easy to sim and compare different ratios and see what comes up with higher dps, I believe it should have some kind of precondition to it (like non-OoC thrash) and should replace the 5CP non-BitW FB line (and inherit its preconditions). This way it would avoid the spam rip issue people are seeing. The only issue this doesn't address is clipping with superior 4CP rips (rune proc + 10blade rena) - raffy recently posted a permutation of 4 and 5 CP rips with various buffs. There's some edge cases where 4CP rips make a strong clip.

As for the ratio itself, I believe something along the way of (remaining_ticks/full_ticks * dmg_ratio) is going to make most sense (again, if you use the FB/thrash pre-conditions you can ignore the remaining ticks since remaining ~8-12 will most likely be already have been checked by previous lines). I'll tinker around with it a bit in SimC once I get home.

This will simplify the action list by making the following two lines redundant (assuming you put the new rip-clip line after NS+HT):

actions+=/rip,if=combo_points>=5&buff.rune_of_reorigination.react
actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&buff.dream_of_cenarius.up
Image

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Fri Jun 28, 2013 12:30 pm

Alpheus wrote:(remaining_ticks/full_ticks * dmg_ratio)

I've thought of something like that before (I had a line for rake that was (new_dmg-current_dmg)*5+current_dmg) but when I tried it for Rip it doesn't do well at all. I'm pretty sure the issue is for Rip you're accounting for the ticks remaining backwards, as in it becomes more lucrative to clip the rip the less time there is on it, not the otherway around.

I plan to try something like this:
1. Calculate how much damage you would gain on each tick comparing the two rips, multiply that damage amount by the number of ticks remaining.
2. Calculate the number of ticks that would happen for the new rip but not the old rip, multiply the new rip's tick value by that number.
3. Add the two values together and compare them against a 50 energy FB.

The problem with this is that this is far too aggressive; the script would hardly ever execute any FBs since it would only take 5-10 seconds before the extra ticks "gained" by clipping outshadow the damage of an FB. Perhaps the happy medium is only accounting for the damage differential where the two rips overlap and completely discount the ticks that would happen afterward for the new Rip (or just assume that clipping the rip would gain us an average of x seconds of uptime). It would be pretty similar to the formula you specified:
Code: Select all
(1-remaining_ticks/full_ticks)*per_tick_dmg_difference
Image

Revered
User avatar
Posts: 323
Joined: Tue Oct 23, 2012 4:19 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby Alpheus » Fri Jun 28, 2013 4:22 pm

aggixx wrote:I plan to try something like this:
1. Calculate how much damage you would gain on each tick comparing the two rips, multiply that damage amount by the number of ticks remaining.
2. Calculate the number of ticks that would happen for the new rip but not the old rip, multiply the new rip's tick value by that number.
3. Add the two values together and compare them against a 50 energy FB.


Perhaps we're trying to tackle problem from the wrong angle. We don't have a damage prediction heuristic for each and every line in our rotation (ie. comparing the line with all possible alternatives - think chess). We simply do something like this:

Rip is an investment, we know that for 30 energy we can put up a debuff that deals damage.
This debuff raises our rip uptime % and our average rip damage.
We know (empirically) that the two points above are a dps increase.

Now when you clip rip what you're trying to do is manipulate this average rip damage. If you keep following the simc action list it shouldn't theoretically negatively impact your rip uptime %. With these things in mind, perhaps it would be just easier to compare the average tick damage increase of the remaining ticks (which is exactly the formula you suggested and point 1 above) but I would avoid counting the new-not-old rip ticks into the damage comparison with FB:

Consider - in the points above we said that clipping rip should not affect uptime. Thus if you let the OLD rip expire and replace it by a hypothetical new rip, you get a new average rip tick but retain your maximum uptime (this is the FB scenario). If you clipped rip in the first place your new rip would replace both the old rip and the hypothetical new rip but you have no way of knowing if you would have had more or less buffs and damage modifiers up at that time, so taking into account the damage increase from new-but-not-old ticks would in either case be flawed (your 2nd above).

This isn't a dps model black box, it's a simulation - having exact prediction heuristics on every line would be erratic and difficult for a human to reproduce. We should dumb it down to the bare minimum confident data we have in the timeframe of the action's execution.
Image

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Fri Jun 28, 2013 4:39 pm

I don't think complexity is really a concern. Ultimately I use SimC as a means to determine what would be the theoretical conditions to use abilities and then adapt it into the Ovale script, if it's playable with Ovale then cool, it doesn't really matter if it is without or not. There can always be a seperate action list in SimC for whatever is deemed "playable".

Obviously there's an advantage to keeping things simple when possible, it gives an easier understanding of why something causes the DPS change that it did instead of simply knowing if it was a gain or a loss. And then from there it can easier be tweaked since we can have a better idea of what the impact will be.

If I can find a simple, logical expression to determine when it is or isn't worth clipping, then great. But I've already spent a pretty good amount of time on this so not trying to find complex solutions either is just wasted DPS potential.
Image

Revered
User avatar
Posts: 323
Joined: Tue Oct 23, 2012 4:19 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby Alpheus » Fri Jun 28, 2013 5:04 pm

aggixx wrote:I don't think complexity is really a concern. Ultimately I use SimC as a means to determine what would be the theoretical conditions to use abilities and then adapt it into the Ovale script, if it's playable with Ovale then cool, it doesn't really matter if it is without or not. There can always be a seperate action list in SimC for whatever is deemed "playable".

Obviously there's an advantage to keeping things simple when possible, it gives an easier understanding of why something causes the DPS change that it did instead of simply knowing if it was a gain or a loss. And then from there it can easier be tweaked since we can have a better idea of what the impact will be.

If I can find a simple, logical expression to determine when it is or isn't worth clipping, then great. But I've already spent a pretty good amount of time on this so not trying to find complex solutions either is just wasted DPS potential.


Just went through the ActionList wiki, how exactly are you planning to determine the future FB damage?
Image

Exalted
User avatar
Posts: 861
Joined: Tue Oct 23, 2012 7:15 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby raffy » Fri Jun 28, 2013 5:16 pm

A while ago, I had done some experiments concerning the 12-15% clip check:
viewtopic.php?f=3&t=817&p=15457&hilit=raffy.antistupid.com#p15457
http://raffy.antistupid.com/wow/catsim/ ... plier5.png

The Catus sims showed that as long as the new Rake was better it was worth it to clip.

In Catus, I can compute:
The exact average damage per tick (including crit) of the existing DoT.
The exact average damage per tick (including crit) of the new DoT if applied now.
The exact average damage per tick (including crit) of the new DoT if applied T-seconds in the future.

(The lookhead damage is computed by checking buff durations, ignoring if SR fades, and checking if you have more than 1 DoC charge.)

I think there is a lot of cases where the actual damage ratio is negative, but your 4 seconds from losing a Juju/Charm/Rune proc, so your future damage ratio is even more negative.

"I have 3x Rip active, do I clip it with a 2.5x Rip? or in 4seconds, put up a 1.0x Rip?"

This is similar to when a Rune proc occurs, getting a Rake off immediately, and then getting another Rake off right before it fades, is almost always better than worrying about it's relative strength.

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby aggixx » Fri Jun 28, 2013 5:28 pm

Alpheus wrote:Just went through the ActionList wiki, how exactly are you planning to determine the future FB damage?

It may or may not be in the wiki, but you can do "action.ferocious_bite.crit_damage*2". The x2 being there because of the energy consumption of course.
Image

Revered
User avatar
Posts: 323
Joined: Tue Oct 23, 2012 4:19 am

Re: Leafkiller's MoP Feral/Guardian Ovale Script

Postby Alpheus » Fri Jun 28, 2013 5:44 pm

aggixx wrote:
Alpheus wrote:Just went through the ActionList wiki, how exactly are you planning to determine the future FB damage?

It may or may not be in the wiki, but you can do "action.ferocious_bite.crit_damage*2". The x2 being there because of the energy consumption of course.


Gotta love undocumented features :)
Image

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: Bing [Bot], Google Adsense [Bot], Google Feedfetcher, Zstriker and 9 guests