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.2 update #82

Closed dazer closed 13 years ago

dazer commented 13 years ago

Copy paste of the previous closed issue:

Not much to change just yet, but there're some trinkets already datamined (and discussed in EJ). I'm pullin a request with the easiest ones and opening discussion on how to model the others.

-Hungerer: When using an ability causes your Energy or Focus to fall below 20% of your maximum, you will gain 1532/1730 haste rating for 15 sec. This cannot occur more often than once per minute. (Name of the buff is 'Devour')

Can be coded as an on use effect

-Ancient Petrified Seed: Increases your Agility by 1277/1441 for 15 sec. (1 Min Cooldown)

Straightforward 'on use' trinket

-Ricket's Magnetic Fireball: Calls down a meteor, burning all enemies within the area for 400 to 442 total Fire damage. (3 Min Cooldown)

Not sure how to go around this: it's not a proc so it shoud be included as a gear buff, but that class only covers stat boosts as of now. The use is worth like 2-3EP (it may as well not be worth it to model) but the trinket itself comes with a big chunk of agi so some users may want to have it.

-Matrix Restabilizer: Your melee and ranged attacks have a chance to grant 1532/1730 critical strike rating, haste rating, or mastery rating, whichever is currently highest. (The description doesn't say, but the uncategorized spell puts the duration at 30'').

Not sure how to go around this: interaction with other trinkets can force the modeler to proc the 'wrong' stat if we take the highest averaged stat, especially if the gearset has two of the stats close enough. Properly modeling the possible uptime of the 3 procs would require some serious refactoring I'm afraid. This could be seen as a proc bahaviour akin to hurricane/avalanche, I remember trying to approach that particular issue with no real success

-2T12: Your melee critical strikes deal 6% additional damage as Fire over 4 sec. (name of the damage proc is 'Burning Wounds')

Not entirely sure how to go around this: treating it as a proc like darkmoon card hurricane with a 'variable' damage (computed in the modeler); or special casing it completely in the modeler with its own get_uptime. I've already put together a fairly awfull hack for the best case scenario, but it's likely that the buff will munch itself, hence a proper proc handling is due. Also, we'd need some testing but I reckon it's fair to asume the proc to tick for 1.5% each second.

-4T12: Your Tricks of the Trade ability also causes you to gain a 25% increase to one of your combat ratings at random for 30 sec. (Names of the buffs are: master of flames, future on fire, fiery devastation)

Updating the stats (*= 3.25 / 3) in the modeler along with the crit bonus from T11 (and a check for tricks) sounds good enough to me as a ballpark figure. However, I'm not sure how much of an EP variance could the proc expose if we take into account the interaction with other procs. Also, implementing a delay on tricks to fish for procs could be an option to further delvelope the model.

dazer commented 13 years ago

Aldriana said:

Hungerer: I think ultimately this can (and should) be modeled properly as a proc; probably define it as a proc with a custom trigger type and I'll come up with logic as to how often your energy drops below the triggering threshhold at some point. In the meantime setting it up as 1/min on-use trinket is probably fine.

Ricket's: Probably is going to need a bit of custom coding, akin to rocket barrage.

Matrix Restabilizer: as we don't know the ICD yet anyway, I'm not going to worry about it; it will, however, need some fancy logic eventually, yes. I have some ideas as to how to tackle this, but it will take some doing to get absolutely right. If you want to put a rough approximation in for now, ignoring procs probably won't be too bad an estimate. It'll slightly overestimate the trinket, but not to an unreasonable extent.

2T12: Honestly, I think its pretty likely that it will work in accordance to the best-case scenario. I could be wrong, but it wouldn't surprise me at all - Ignite, which is fairly similar, stacks across crits. Regardlless, I suspect the best solution is to special case it into compute_damage, sort of like was originally done with Unheeded Warning (i.e., what appears in my branch - I realize that need to be updated, but for the moment it gives the right idea).

4T12: At the very least I'd include the + self.settings.response_time adjustment we use for tricks elsewhere - that is, 1 + .25 / 3 * 30 / * (30 + self.settings.response_time). You're right that ideally we should account for the delay in Tricks triggering, but, eh.

In terms of its interaction with other procs, I'm pretty sure that that can be totally ignored. The averaging is no worse here than it is in the first place for stat procs, so I'd just go with it and call it good.

Thanks for working on this - I've been meaning to get back to this but I just haven't had time. Hopefully I will within the next couple of weeks.