It had a conditional that checked for the Incarnation talent point...aggixx wrote:It's always worked for me with older versions when I've PvPed. Maybe I'm delusional.Leafkiller wrote:I just pushed a new version of the script - in Nerien's 2.1.3. It has support for faster combo point recognition and also a change that (hopefully) will make the Ravage code work for the pvp 4 piece set. If anyone is using that, please let me know if the script is calling out Ravage every 30 seconds per the set bonus.
Leafkiller's MoP Feral/Guardian Ovale Script
Moderator: Forum Administrators
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Assuming I am interpreting it correctly, I don't like the structure you are proposing. Remember, I can already implement pooling by using the following construct (this also shows a correct countdown on the node I am planning on executing or any node that will be ready sooner that is earlier in the script):Jeshu wrote:I know how I want to implement it now. Something like the following:If PoolingConditions() is true, then pool energy for OtherActions(). If PoolingConditions() is false, then fall through directly to OtherActions().Code: Select all
pool while PoolingConditions() { OtherActions() }
I'm going to wait a few days before implementing this so I can think this through a bit more, but this would fit with how Ovale currently works. I don't really like the syntax I've come up with because it doesn't read nicely, so I'm open to suggestions.
Code: Select all
if {pooling conditions} {
if energy >=50 or {BuffRemains(Berserk) > 1 and energy > 25} doPooledActivity()
}
if not {pooling conditions} {
doTheRemainderOfTheScript()
}
My goal in requesting a new capability was to support a construct similar to the one we are using in Simc, where we can drop in a pooling statement anywhere without making any changes to the remainder of the script. I realize there is a fundamental difference between Ovale and Simc, since Simc loops through the action list finding the first action that is executable while Ovale evaluates all the nodes, and recommends the highest priority node that happens soonest, picking the first one it sees if more than one node are equal.
Coming back to the construct I am asking for. I was thinking about what the Simc construct "actions+=/pool_resource,wait=0.1," is actually doing. It is not a loop, but rather it is like a "C" continue statement. This works great for Simc since it can simply stop evaluating the script at that point and go back to the top of it, but not as cleanly for Ovale since it wants to evaluate all of the nodes below and make a recommendation. However, if you look at the pooling construct that already works for Ovale, it is a workaround for the lack of a continue statement. Basically, I am looking for a new kind of control statement that will tell Ovale to stop evaluating nodes - like a "continue" statement. Something like the following could work:
Code: Select all
if {conditions} {
# do some stuff
Continue
}
# do the remainder of the script
Re: Leafkiller's MoP Feral/Guardian Ovale Script
I probably wasn't clear when I made that late night post. In my example:
PoolingConditions() doesn't have to explicitly list the amount of energy that needs to be pooled. Those are the the conditions for wanting to pool energy, e.g., Rip is not about to fall off. If you want to always pool energy for Actions(), you would do:
I'm still tinkering with the right syntax for expressing it so that it's nice and readable in the script. Sidoine put a lot of work into choosing good verbiage so that an Ovale script was readable.
Code: Select all
pool while PoolingConditions() {
Actions()
}
Code: Select all
pool while true()
Actions()
Re: Leafkiller's MoP Feral/Guardian Ovale Script
You're being very insistent on some sort of imperative syntax for the Ovale script language which really doesn't fit well into how Ovale works with nodes and time intervals. It's not going to happen because it breaks a major portion of the language related to action priorities.
What I'm offering is a way to express energy pooling without needing explicit energy requirements other than "pool enough for the something in given group of actions". This concept fits with the rest of how Ovale works without breaking other parts of the language.
What I'm offering is a way to express energy pooling without needing explicit energy requirements other than "pool enough for the something in given group of actions". This concept fits with the rest of how Ovale works without breaking other parts of the language.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
I am trying to avoid nesting a lot of blocks. What do you think the benefit is for what you are proposing that differentiates it from the current workaround?Jeshu wrote:You're being very insistent on some sort of imperative syntax for the Ovale script language which really doesn't fit well into how Ovale works with nodes and time intervals. It's not going to happen because it breaks a major portion of the language related to action priorities.
What I'm offering is a way to express energy pooling without needing explicit energy requirements other than "pool enough for the something in given group of actions". This concept fits with the rest of how Ovale works without breaking other parts of the language.
Re: Leafkiller's MoP Feral/Guardian Ovale Script
What I'm proposing fits in with how Ovale treats nodes. A group is a node that returns the best available subnode. Braces are used to define groups, and if you have groups within groups, you'll need to nest braces or else create a function to represent the inner group.
What you're proposing with an imperative statement doesn't fit with how Ovale works. Ovale has no concept of "till the end of the script" or "start at the top of the script" even though you can force that interpretation if you use a subset of the Ovale script language. I'm not comfortable with introducing something like this into the Ovale script language because it involves changing something core about how Ovale works. That's a design decision I would defer to Sidoine.
What you're proposing with an imperative statement doesn't fit with how Ovale works. Ovale has no concept of "till the end of the script" or "start at the top of the script" even though you can force that interpretation if you use a subset of the Ovale script language. I'm not comfortable with introducing something like this into the Ovale script language because it involves changing something core about how Ovale works. That's a design decision I would defer to Sidoine.
-
- Posts: 4
- Joined: Sat Oct 13, 2012 11:46 pm
Re: Leafkiller's MoP Feral/Guardian Ovale Script
IS the DoC spec still the way to go after the patch ?
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
It has the highest dps if that is what you are asking.Freakaleak wrote:IS the DoC spec still the way to go after the patch ?
- Tinderhoof
- Exalted
- Posts: 2234
- Joined: Mon May 24, 2010 10:21 pm
Re: Leafkiller's MoP Feral/Guardian Ovale Script
The only changes to Feral for 5.1 was tool tip updates from 5.0 changes, and our new wilty OOC aura. DoC is the same as it was before.Freakaleak wrote:IS the DoC spec still the way to go after the patch ?
-
- Posts: 4
- Joined: Sat Oct 13, 2012 11:46 pm
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Thank you. Maybe its my gear but I'm seeing a bigger increase with CoTW ATM or I'm just doing something wrong. I just changed back to kitty after tanking for a while and also havent had any luck with T14 drops in LFR but the chest I was wondering if you guys would take a look at my link and let me know of anything you would change thank you.
http://us.battle.net/wow/en/character/a ... eak/simple
http://us.battle.net/wow/en/character/a ... eak/simple
- Tinderhoof
- Exalted
- Posts: 2234
- Joined: Mon May 24, 2010 10:21 pm
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Dancing Steel no loner sucks for us. Our uptime went from around 22-28% to 40-50%. That will give you a boost.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
@Jeshu - I have another potential solution that has zero impact on how Ovale treats nodes and (I think) is simple to implement. How about an enhancement to Texture that allows me to put a number on top of the texture? The one trick is that I need to be able to generate the number dynamically. Something like the following:
This works because the Texture node evaluates ahead of the FB node that follows it. I can also use this construct to make the frames where I am showing the damage ratios look better:
Code: Select all
AddFunction FBWaitTime
{
# there is a TimeToMaxEnergy(). Is there a TimeToEnergy(N), where 1<=N<=100?
if BuffPresent(Berserk) TimeToEnergy(25)
unless BuffPresent(Berserk) TimeToEnergy(50)
}
#MainRotation
if ComboPoints()>=5 and TargetDebuffPresent(rip) and BITWRange() and {{BuffRemaining(Berserk)>1 and Energy<25}
or {BuffExpires(Berserk) and Energy<50}} Texture(ability_druid_ferociousbite number=FBWaitTime())
# BITW 5 combo point FB
if ComboPoints() >=5 and TargetDebuffPresent(rip) and BITWRange() Spell(ferocious_bite)
Code: Select all
AddFunction RipTickDamageRatio
{
if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
unless TargetDebuffPresent(RIP) 100.0
}
AddIcon help=Rip size=small mastery=2 checkboxon=cooldownsRatio
{
# Add a background texture to make it look better
#RipTickDamageRatio()
Texture(ability_ghoulfrenzy number=RipTickDamageRatio())
}
Re: Leafkiller's MoP Feral/Guardian Ovale Script
@Leafkiller: No, right now there's no way to allow parameters of functions to be other functions. That's a problem with the parser, and something I was working on in ticket 181.
I believe you can do "0s before Energy(more 50)" to express the time before you reach 50 energy. I'll check once I get home and update this reply.
I believe you can do "0s before Energy(more 50)" to express the time before you reach 50 energy. I'll check once I get home and update this reply.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
I figured that would be the difficult part here, but that might be an easier path to take than trying to directly support a new "pool" structure.Jeshu wrote:@Leafkiller: No, right now there's no way to allow parameters of functions to be other functions. That's a problem with the parser, and something I was working on in ticket 181
Is it possible/practical to add support for local variables as a way to work around the parameter issue? I don't know how difficult that would be for the Ovale script parsing.
For example, something like this:
Code: Select all
AddFunction FBWaitTime
{
# there is a TimeToMaxEnergy(). Is there a TimeToEnergy(N), where 1<=N<=100?
if BuffPresent(Berserk) TimeToEnergy(25)
unless BuffPresent(Berserk) TimeToEnergy(50)
}
#MainRotation
if ComboPoints()>=5 and TargetDebuffPresent(rip) and BITWRange() and {{BuffRemaining(Berserk)>1 and Energy<25}
or {BuffExpires(Berserk) and Energy<50}}
{
local N
N = FBWaitTime()
Texture(ability_druid_ferociousbite number=N)
}
# BITW 5 combo point FB
if ComboPoints() >=5 and TargetDebuffPresent(rip) and BITWRange() Spell(ferocious_bite)
Re: Leafkiller's MoP Feral/Guardian Ovale Script
I have a question about the script. I've recently been doing Brawler's Guild fights, which have a 2 minute enrage. I could be wrong, but my assumption has been that Incarnation and Nature's Vigil will be the highest DPS talents for 2 min fights. My question has to do with Incarnation.
The Ovale script when I am at low energy with Incarnation still active shows a disabled Shred icon. As I gain energy, that Shred icon lights up. If I wait just a moment longer to get even more energy, that Shred icon will change to Ravage. I find this very confusing, since if I'm reacting quickly to what the script tells me to do, I'll just end up Shredding and miss out on Ravages.
Is this a bug in the script, or should I actually be Shredding as soon as I can? The fact that the script changes the icon to Ravage implies to me that there's a bug here, and that I'd get the most DPS by waiting for enough energy to Ravage, but I wanted to make sure.
The Ovale script when I am at low energy with Incarnation still active shows a disabled Shred icon. As I gain energy, that Shred icon lights up. If I wait just a moment longer to get even more energy, that Shred icon will change to Ravage. I find this very confusing, since if I'm reacting quickly to what the script tells me to do, I'll just end up Shredding and miss out on Ravages.
Is this a bug in the script, or should I actually be Shredding as soon as I can? The fact that the script changes the icon to Ravage implies to me that there's a bug here, and that I'd get the most DPS by waiting for enough energy to Ravage, but I wanted to make sure.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
It is a script issue. You should use Ravage when Incarnation is up. I will fix it next time I push a new script.Kihrawr wrote:Is this a bug in the script, or should I actually be Shredding as soon as I can? The fact that the script changes the icon to Ravage implies to me that there's a bug here, and that I'd get the most DPS by waiting for enough energy to Ravage, but I wanted to make sure.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Can someone with the 4 piece pvp set tell me the spell ID of the proc you get that allows the unstealthed ravage?
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Ravage Ready: http://www.wowhead.com/spell=81022
Ravage Charging: http://www.wowhead.com/spell=131538 (turns into 81022 when aura ends)
Ravage Charging: http://www.wowhead.com/spell=131538 (turns into 81022 when aura ends)
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Here you go Leaf, here's my modified version in checkbox form:
I use some "cheats" to get it be placed how I want it to be (like I have an empty box to the left of the main box in bear spec so it positions it correctly). Perhaps an ovale setting that allows you to change the alignment of the frame would be a cleaner solution.
Spoiler: show
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
The extra boxes might be a good place to track Maul/tooth and claw stuff - I need to figure out what makes the most sense to track there.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
I just pushed Nerien's 2.1.5 with an updated feral script. It should work properly for Ravage! now (I cannot test the pvp 4 piece set bonus though). It has support for an alternate way to display the prediction icon (the aggixx way), and I reconciled the code with the most recent simc script with the exception of the energy pooling code as I am still holding off on that waiting to see what Jeshu decides to do in Ovale.
The code for aggressive FBs has been toned down per the simc script as it no longer has a conditional for SotF. This is a change aggixx made to the script and I am not sure if he tested this across all the specs or if it was something he changed as part of his DoC energy pooling code. I will check with him and push a new script as needed.
The code does have some improvements for when SR and Rip are coming off of cooldown close to one another so Rip uptimes should be higher (also the less aggressive FB code helps with Rip uptime).
The code for aggressive FBs has been toned down per the simc script as it no longer has a conditional for SotF. This is a change aggixx made to the script and I am not sure if he tested this across all the specs or if it was something he changed as part of his DoC energy pooling code. I will check with him and push a new script as needed.
The code does have some improvements for when SR and Rip are coming off of cooldown close to one another so Rip uptimes should be higher (also the less aggressive FB code helps with Rip uptime).
Re: Leafkiller's MoP Feral/Guardian Ovale Script
This syncing issue was happening a lot recently for me. Disturbingly too much where both SR and Rip would be ticking down 14..13..12..11 way way way too often.Leafkiller wrote:The code does have some improvements for when SR and Rip are coming off of cooldown close to one another so Rip uptimes should be higher (also the less aggressive FB code helps with Rip uptime).
If only out of curiosity what besides the less aggressive FB modification has been improved? Feel free to tell me "stop asking too many questions and just try it out and see" =D
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
Ok...just pushed 2.1.6. I did not properly implement the alternate setup (alternate predictive box) for the Guardian spec. That is fixed now.
Well, the emergency SR timer is now the buff is off rather than <= 1 second - so the really close countdowns will go with Rip if possible. The logic on when to do an early SR is a little different now to help avoid bad situations and the SR refresh is before the Fb code. Actually there were several places where some conditionals have been moved around that was not in the script yet.Ampzilla wrote:Leafkiller wrote:If only out of curiosity what besides the less aggressive FB modification has been improved? Feel free to tell me "stop asking too many questions and just try it out and see" =D
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Leafkiller's MoP Feral/Guardian Ovale Script
And just when I thought I was finished, I added tooth and claw support to the lower left hand box of the bear alternate predictive display. It shows the tooth and claw icon instead of maul when the buff is present - this is similar to the shred icon, although it is not the same texture (you can check on wowhead). I have been looking for an easy way to tell when this buff is up, other than trying to watch my action bars, and this does take care of that.
Re: Leafkiller's MoP Feral/Guardian Ovale Script
@Leafkiller: I have added made a new 5.1.5 release of Ovale that adds a "wait" statement to the language. From the commit message:
Please let me know if the following examples aren't clear enough.Add a "wait" statement to interrupt evaluation of a group.
The syntax is "wait <node>" that returns the given node. If part of a
group node, then it causes the group to evaluate to the best node of the
group up to and including the wait statement.
A "wait" node has the same priority as its child node.
Code: Select all
# This example only ever suggests FB if energy>80. Once energy drops below 80,
# then it'll only suggest Mangle-spam since we'll always have enough energy to Mangle.
{
if Energy(more 80) Spell(FEROCIOUS_BITE)
Spell(MANGLECAT)
}
Code: Select all
# This example uses "wait": it pools energy to 80 then suggests FB as long as FB
# is castable (at least one combo point). Otherwise, it suggests Mangle.
{
wait if Energy(more 80) Spell(FEROCIOUS_BITE)
Spell(MANGLECAT)
}
Code: Select all
# This example only pools energy for FB if DoC is talented. Otherwise, this just
# suggests Mangle-spam.
{
if TalentPoints(dream_of_cenarius_talent)
wait if Energy(more 80) Spell(FEROCIOUS_BITE)
Spell(MANGLECAT)
}