Aldriana / ShadowCraft-Engine

Calculations backend for ShadowCraft, a WoW theorycraft project.
GNU Lesser General Public License v3.0
37 stars 22 forks source link

4.3 update #94

Closed dazer closed 12 years ago

dazer commented 12 years ago

I included some of the basic new procs. It needs testing and tweaking so it's only a legwork: I had to start from scratch since the computer in which I code died in a fire so to speak.

No'Kaled, the Elements of Death (http://ptr.wowhead.com/item=77188): ICD seems to be 2'' (http://worldoflogs.com/reports/rt-9r2wd7p5x7f9a952/xe/?x=sourcename+%3D+%22Goombamfx%22). Reports from the ptr state that it only procs from strikes/swings done with the weapon (no KsP/Mut oh component or oh white swings in our case). It can proc 3 different spells (iceblast, shadowblast, flameblast 1/3 chance each), but given rogues don't have different modifiers for these spell schools we souldn't bother much with that. This weapon has gone through several changes in ptr; I'm taking the proc chance from the simulationcraft revision prior to the proc being included in the DBC (which is a hard-ish to read file). It's very likely that it'll be a ppm proc, but with only one log I cannot verify such thing, I believe. It's ep is a bit too high as is but it should get lower once we code the weapon restriction (maybe having it as a weapon enchant?) Edit: updated to MH only.

Wrath of Unchaining (http://ptr.wowhead.com/item=77197): Coded just like Fluid Death.

Kiroptyric Sigil (http://ptr.wowhead.com/item=77113): It's a VP reward, so heroic/lfr versions won't be available on live; however, seeing as the front-end picks these items regardless of availability, I'm coding them in.

Starcatcher Compass (http://ptr.wowhead.com/item=77202): ICD is taken from latest build of SimulationCraft (which asumes icd equal to the caster trinket insignia of corrupted mind, since both trinkets point to the same proc id).

Vial of Shadows (http://ptr.wowhead.com/item=77207): http://www.worldoflogs.com/reports/87cwp7i2248y3ty9/xe/?x=sourcename+%3D+%22Dragonnztoo%22%0D%0Aand+spell+%3D+%22Lightning+Strike%22 suggests a 25'' icd. Reports state that the strike scales with AP (adding one damage per AP point); if that's the case we may need to revisit or special case how physical procs are computed. Edit: updated.

Legedary dagger set: We don't know yet the behaviour for the stage3, so I only included the stackign buff for 1st and 2nd stages. Note the use of the behaviour toggle implemented for enchants: it sets a different proc rate based on spec. I included a new gear buff to deal with the odd posibility of equiping only the MH, thus getting the SS/RvS buff (if combat) but not the stacking agi proc. More tests will be needed, so everything legendary related is rather placeholder-ish.

Edit: Included the update to the AP raid buff. Vial of shadows is now updated, see next comment. Nokaled is tied to the MH only.

dazer commented 12 years ago

Updated Vial of Shadows behaviour: it now scales with AP.

I used a cheap hack (on top of an already fairly cheap hack) to do this as stated in the commit: when updating damage procs I encountered a variety of collisions where they'd update themselves more often than needed; to resolve it I decided to toss procs with the same name once they reached the damage breakdown method (being Avalance the only one I tested thorougly, I didn't notice any major glitch). Thing is: if we get another proc with the same name, it will only take into account the first one down the pipe, thusly ignoring the others (like multiple versions of the vial, or any combination with Avalance or the DMC). As it is now, it'll work for current 4.3 stuff (each version of the vial has it's own proc name), so we can start pulling numbers out of it, but it'll need some fix: either in the near future or along with the MoP revamp.

dazer commented 12 years ago

Legendary proc: reported proc rate doesn't fit with the ones we have in the thread (it stacks a lot faster now). In fact, the DCB states that the proc chance on the stackign buff is 100%; I don't have logs myself and I won't get the set until tomorrow, so any info is appreciated. Do we have any idea about how to fit the 3rd stage proc into ShadowCraft? I'd imagine every stack past 30 gives a 5% proc chance to proc the cp-free stage (so it'd build up to 100% at 50 stacks).

Aldriana commented 12 years ago

I started to do some proc rate testing on the stage 1 daggers last night, only to realize that once you get to 50 stacks the refreshes don't show up in the combat log, so I'll need to tweak my methodology in order to get decent-sized tests. At some point we also need to figure out whether its flat% or PPM by doing one-handed strike tests, which, again, I'll work on over the next few days.

In terms of the legendary proc triggering, that seems like a reasonable starting guess, but we will of course want to test it. I suspect we wind up just plugging in the average time between procs and ignoring the variation, but I'll have to think about whether that has any adverse affects on estimating the Agi stack. Assuming it is 5% per point past 30, that average would be ~35.3 stacks.

The hard part, I think, will be actually modeling the effect of the proc itself - properly accounting for the energy expenditure, envenom buff uptime, etc. proves to be tricky. I suspect it may turn out that we need to do something like the split between backstab and mutilate for Assassination - estimate the damage per second during the proc and average in based on uptime. That seems clunky, but I don't know if there's a better way to do it - will need to keep thinking about it.

However, I think my top priority from a modeling perspective is improving the Tier 13 2pc modeling, as right now its pretty clearly an underestimate.

dazer commented 12 years ago

Well, I imagine what you had in mind for energy capping was a lot like that: have a way to run the cycle under various asumptions (like every combinatiosn of hero/ar/haste procs) to then average them out. Brainstorming a bit here: the extra energy gain for the legendary is a bit tricky, mainly because we don't have a way to compute how much energy the player has at any point (or more precisely the fact that we model a continuous stance without combat events per se: should we expect the player to enter the legendary cycle with enough energy to, at least, cast an evis/env right away? the 'energy window' to refresh snd you had in the combat spreadsheet comes to mind as cunning attempt to assess energy but I don't see, yet, how to port that to this proc.

On another unrelated topic, the change to Nokaled raises one question about procs: what does MG proc and what does it not?. What I introduced is simply a flag much like can_crit but I suspect that, as a general rule, just like procs don't proc themselves, they cannot proc other proc based strikes (I don't recall ricket proccing from it). Once I get a vial of shadows I'll see if mg can proc spell damage procs, which we also need to figure).

dazer commented 12 years ago

On the 2pc t13, current implementation is clucky to say the least but I don't see how its outcome is on the low side. We could compute a 1.05 energy increase (more like 1.048 with respose time) and plug it to the energy rengen in the 3 cycles right at the top of the attack count methods (about .8 energy regen increase); I'm seeing a ~500 ep doing that which is certainly worse.

Aldriana commented 12 years ago

Well, ideally, we'd scrap all proc averaging and such as well, and individually compute damage under every possible combination of buff. The problem, of course, is that its entirely possible to have 7+ different procs and activated buffs to account for, and tracking the uptime of all 100+ possible combinations gets messy in a hurry.

In terms of the legendary proc specifically: I suspect the right way to model it - at least initially - is to assume its just 5 free finishers over 6 seconds, and then the cycle returns to normal. Under ideal circumstances you might be able to squeeze in all 6, and under bad circumstances it might only be 4, but in general I suspect 5 is a decent average. So you compute the damage of "5 finishers in 6 seconds", and then compute the duration + expected damage for "regular DPS cycle with stacking Agility", and then average those together as appropriate. Of course, this requires some custom bookkeeping for each spec to handle things like Envenom uptime, Restless Blades, etc. which is where it gets messy, but I suspect its still the best option.

Aldriana commented 12 years ago

So, from what I've been told (I admit I haven't tested in detail), the 2pc cost reduction is off the base cost of the move. Our current modeling is, broadly speaking, discounting based on current cost. For stuff like Mutilate and Sinister Strike, this doesn't matter too much, but for, say, Backstab, its the difference between an effective cost of (60-30-5) * .8 = 20 and 60 * .8 - 30 - 5 = 13. Also notably effected: everything Sub does.

Aldriana commented 12 years ago

Oh, the other problem with current T13 modeling: it assumes that you do 20% of your moves during the buff, which is logical in that you spend 20% of your time in the T13 buff, but given that the moves are cheaper you will be doing more moves per unit time, hence a disproportionately large fraction of your strikes will be cast during the buff.

In point of fact, sub-35 as Assassination, you're probably GCD limited rather than energy limited. Possibly for Sub as well.