Theck's MATLAB thread  Cataclysm/4.x
Moderators: Fridmarr, Worldie, Aergis, theckhd
Re: Theck's MATLAB thread  Cataclysm/4.x
Checking up on a few of tlitp's revisions  the base damages on the abilities seem awfully low. For example, here's the edit for AS:
down from 56056850 base damage and 7% scaling with each stat.
Just to test this, I hopped on beta and checked the tooltip damage at 80 for several gear configurations:
37% was empyrically what I found to be the best integer scaling percentage by trial and error. The last line then spits out a base damage of 2509, well above the base threshold in the code, which seems to be gotten from the tooltip on MMOchampion.
Interestingly, both mmochampion and wowhead have the higher base damage in the formula, but the spell scaling is still set at 7%.
Did I miss something here? Do the ap/sp coefficients change with level? Or has this change just not been reflected on the database sites?
 Code: Select all
raw.AvengersShield= ((440+536)./2 + 0.00.*player.hsp + 0.00.*player.ap).*mdf.spdmg;
down from 56056850 base damage and 7% scaling with each stat.
Just to test this, I hopped on beta and checked the tooltip damage at 80 for several gear configurations:
 Code: Select all
asmin=[2768 3355 3941 4349];asmax=[3327 3914 4500 4908];asap=[522 1740 2956 3800];assp=[178 544 908 1166];
model=2768+0.37.*(asapmin(asap)+asspmin(assp));plot(asap,asmin,asap,model)
27680.37.*(min(asap)+min(assp))
37% was empyrically what I found to be the best integer scaling percentage by trial and error. The last line then spits out a base damage of 2509, well above the base threshold in the code, which seems to be gotten from the tooltip on MMOchampion.
Interestingly, both mmochampion and wowhead have the higher base damage in the formula, but the spell scaling is still set at 7%.
Did I miss something here? Do the ap/sp coefficients change with level? Or has this change just not been reflected on the database sites?
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
Interesting observation:
CS tooltip on beta says 130% weapon damage, which is consistent with 100% base and 30% from Crusade (100*1.3)
CS as ret says 132% weapon damage. The only other source I could find for this is Communion, which increases your damage by 2%. It's consistent with 100*(1+0.3+0.2) or floor(100*1.3*1.02).
HotR tooltip says 45% weapon damage with Crusade (30%) and 2pT10 (20%). That's consistent with 30*(1+.3+.2), but not with floor(30*1.3*1.2). Provided the base damage is still 30%, this means that Crusade, 2T10, Communion, and other such effects are all calculated additively rather than multiplicatively.
<edit> Just as a sanity check, unequipping 2T10 drops the tooltip to 39%, as expected.
CS tooltip on beta says 130% weapon damage, which is consistent with 100% base and 30% from Crusade (100*1.3)
CS as ret says 132% weapon damage. The only other source I could find for this is Communion, which increases your damage by 2%. It's consistent with 100*(1+0.3+0.2) or floor(100*1.3*1.02).
HotR tooltip says 45% weapon damage with Crusade (30%) and 2pT10 (20%). That's consistent with 30*(1+.3+.2), but not with floor(30*1.3*1.2). Provided the base damage is still 30%, this means that Crusade, 2T10, Communion, and other such effects are all calculated additively rather than multiplicatively.
<edit> Just as a sanity check, unequipping 2T10 drops the tooltip to 39%, as expected.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
Did similar testing of HammerNova, here's the data:
Unfortunately, I was dumb and accidentally equipped 2T10 when I was taking the data (I took this earlier, before I noticed the effect in the previous post  that's actually what led me to notice it). The tier variable offsets this for the most part. Interestingly, it seems like the 2piece only affects the base damage of HammerNova, because the scaling doesn't change after equipping it.
But in any event, it looks like the scaling is somewhere around 8.5% ap and sp, assuming the coefficients are the same.
 Code: Select all
mnd=[743 778 801 820 855 999 1028 1054 1204];mxd=[1082 1117 1140 1159 1194 1390 1419 1445 1595];sp=[178 275 337 391 488 598 679 751 1116];ap=[522 846 1050 1230 1554 1920 2192 2432 3800];
tier=[1 1 1 1 1 1 .45/.39 .45/.39 .45/.39 .45/.39];
hmod=(684.*tier+0.085.*(ap+sp));plot(ap,mnd,ap,hmod);
Unfortunately, I was dumb and accidentally equipped 2T10 when I was taking the data (I took this earlier, before I noticed the effect in the previous post  that's actually what led me to notice it). The tier variable offsets this for the most part. Interestingly, it seems like the 2piece only affects the base damage of HammerNova, because the scaling doesn't change after equipping it.
But in any event, it looks like the scaling is somewhere around 8.5% ap and sp, assuming the coefficients are the same.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
It could very well be that, apparently the new streaming client Blizzard uses has changed how the data the database websites use works. They're also not perfect yet at getting the numbers from the new automatic scaling with level that abilities do. They also extract a lot of data from the tooltips, so if those haven't been updated yet they might show some wrong formulas.theckhd wrote:Or has this change just not been reflected on the database sites?

Chicken  Posts: 425
 Joined: Fri Jun 26, 2009 2:19 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
Chicken wrote:It could very well be that, apparently the new streaming client Blizzard uses has changed how the data the database websites use works. They're also not perfect yet at getting the numbers from the new automatic scaling with level that abilities do. They also extract a lot of data from the tooltips, so if those haven't been updated yet they might show some wrong formulas.theckhd wrote:Or has this change just not been reflected on the database sites?
Indeed, that seems to be the case.
 Code: Select all
% Level 80
asmin=[2769 2776 4084 4315 4612 4719];asmax=[3328 3335 4643 4874 5171 5278];asap=[524 538 3252 3726 4407 4627];assp=[179 187 1001 1153 1209 1275];
model=2769+0.37.*(asapmin(asap)+asspmin(assp));plot(asap,asmin,asap,model)
% Level 83
asmin=[2957 4265 4752 4850 4931];asmax=[3554 4862 5349 5447 5528];asap=[557 3271 4279 4481 4707];assp=[189 1003 1311 1376 1311];
model=2957+0.37.*(asapmin(asap)+asspmin(assp));figure(2);plot(asap,asmin,asap,model)
At both levels, the 37% coefficient looks pretty accurate. However, even if I don't believe that the coefficients change through levels, I'm interested in checking the numbers on a 10lvl paladin, just to be sure.
On a side note, in the last 2 sets of numbers at lvl 80 I used some gear with AP enchants and in the last one at lvl 83 I used BoM. That made the model values to be a bit off. I wonder why that happened.

Marblehead  Posts: 96
 Joined: Sun Aug 02, 2009 9:28 pm
 Location: Bloodhoof (EU)
Re: Theck's MATLAB thread  Cataclysm/4.x
You might want to check that up to level 20 if you get around to it, assuming the level 10 coefficient turns out to be lower at any rate. On live spell ranks learned before level 20 have lower coefficients than spell ranks learned at or above level 20. If they turn out to still be lower at level 20 we'll know that the scaling of coefficients at least continues for a longer amount of time in Cataclysm.Marblehead wrote:At both levels, the 37% coefficient looks pretty accurate. However, even if I don't believe that the coefficients change through levels, I'm interested in checking the numbers on a 10lvl paladin, just to be sure.

Chicken  Posts: 425
 Joined: Fri Jun 26, 2009 2:19 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
Marblehead wrote:On a side note, in the last 2 sets of numbers at lvl 80 I used some gear with AP enchants and in the last one at lvl 83 I used BoM. That made the model values to be a bit off. I wonder why that happened.
It means that the spell isn't actually scaling equally with SP and AP. In all of the other data points (including mine), both your SP and AP were coming from Strength, and thus weren't independent.
Example: you get c1 AP from each point of STR, and c2 SP from each point of STR. Thus, the formula would look like:
dmg = base + sa*AP + ss*SP = sa*c1*STR + ss*c2*STR = (sa*c1 + ss*c2)*STR
where sa and ss are the scaling coefficients for AP and SP respectively. We know SP and AP, but can't determine sa and ss independently if all you check is the scaling with STR, because they aren't independent. The only way to do that is to add just AP or just SP from a different source (SP or AP from gear, for example).
I didn't think to equip AP gear earlier to check the scaling independently. From your plots, it looks like the model lags the data when you only add AP, which means that it scales slightly faster with AP than with SP. If you try modeling it as
base+sa*AP+ss*SP
and use the empirical constraint equation
sa*c1+ss*c2=0.37*(c1+c2)
it should be pretty easy to nail both down by only varying one. I think that c1=2 and c2=0.6 should be the right values.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
By the way, I uploaded some rough "priority simulation" modules.
prio_model defines a priority model to evaluate. It's fairly robust, and should allow for any sort of conditional statement we'd want to evaluate ('player.hopo>=3  HS.up==0' for example).
prio_sim takes that priority model and evaluates it over N timesteps of dt. I have it set up for N=300 and dt=0.1, but those are obviously changeable.
prio_sim also constructs the rotation structure "rs" which gets passed to rotation_drawer to make pretty pictures. If you want to see what I mean, update to the latest revision and type:
sample_calculation
prio_model
prio_sim
prio_model defines a priority model to evaluate. It's fairly robust, and should allow for any sort of conditional statement we'd want to evaluate ('player.hopo>=3  HS.up==0' for example).
prio_sim takes that priority model and evaluates it over N timesteps of dt. I have it set up for N=300 and dt=0.1, but those are obviously changeable.
prio_sim also constructs the rotation structure "rs" which gets passed to rotation_drawer to make pretty pictures. If you want to see what I mean, update to the latest revision and type:
sample_calculation
prio_model
prio_sim
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
I want to have pretty pictures, but the sim doesn't seem to run with Octave.
Unfortunately I don't really know MATLAB or Octave well enough to debug this.
 Code: Select all
octave:1> sample_calculation
warning: division by zero
error: `rotation_model' undefined near line 33 column 1
error: called from:
error: c:\Users\Alan\Projects\matlabadin\sample_calculation.m at line 33, column 1
Unfortunately I don't really know MATLAB or Octave well enough to debug this.

bentglasstube  Posts: 40
 Joined: Mon Jul 13, 2009 11:46 am
 Location: Phoenix, AZ
Re: Theck's MATLAB thread  Cataclysm/4.x
 Code: Select all
% Level 16
asmin=[184 195];asmax=[211 222];asap=[114 136];assp=[52 59];
model=184+0.37.*(asapmin(asap)+asspmin(assp));plot(asap,asmin,asap,model)
I think that we can safely assume that coefficients (at least for AS) remain unchanged throughout leveling.

Marblehead  Posts: 96
 Joined: Sun Aug 02, 2009 9:28 pm
 Location: Bloodhoof (EU)
Re: Theck's MATLAB thread  Cataclysm/4.x
Not 100% sure why it's giving you a "divide by zero" error, but if you go into sample_calculation and comment out the line that calls rotation_model, it should skip that entirely.
Alternatively, you could add a junk line of code to the end of rotation_model ("temp=1"). I'm guessing that octave has a problem with the fact that rotation_model has no executable code. tlitp commented it all out in one of the recent revisions.
Alternatively, you could add a junk line of code to the end of rotation_model ("temp=1"). I'm guessing that octave has a problem with the fact that rotation_model has no executable code. tlitp commented it all out in one of the recent revisions.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 6211
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
The divide by zero error is on line 94 of avoid_dr.m
total_miss is 0 at this point because defense is gone.
I commented that out and added a 1 to the end of rotation model.
I get the following output and a boring graph:
Edit: I dug a little deeper and fixed the YTickLabels issue but I guess Octave doesn't have the "rectangle" function so I don't get pretty graphs.
 Code: Select all
missdr = 1./(1./c_miss + k./total_miss); %miss after DR
total_miss is 0 at this point because defense is gone.
I commented that out and added a 1 to the end of rotation model.
I get the following output and a boring graph:
 Code: Select all
octave:1> sample_calculation
warning: Success!
octave:2> prio_model
octave:3> prio_sim
warning: Order not defined or too short, defaulting to text order
error: set: unknown property "YTickLabels"
error: called from:
error: c:\Users\Alan\Projects\matlabadin\rotation_drawer.m at line 54, column
1
error: c:\Users\Alan\Projects\matlabadin\prio_sim.m at line 110, column 1
Edit: I dug a little deeper and fixed the YTickLabels issue but I guess Octave doesn't have the "rectangle" function so I don't get pretty graphs.

bentglasstube  Posts: 40
 Joined: Mon Jul 13, 2009 11:46 am
 Location: Phoenix, AZ
Re: Theck's MATLAB thread  Cataclysm/4.x
Gaffer wrote:I'll try to get the Vengeance details you're looking for tomorrow. I made the mistake of going to Hyjal and the three times I attempted to log in, I zone in on top of ~5 horde that corpse camp me.
Still an issue. I'll transfer a character to the PvE server this weekend if no one else gets you the Vengeance information you need before I get some time.
 Gaffer
 Posts: 35
 Joined: Tue Oct 14, 2008 2:39 am
Re: Theck's MATLAB thread  Cataclysm/4.x
I played around a little more with Octave and got as far as this
I guess I will have to leave the plotting up to those of you who have real matlab.
I guess I will have to leave the plotting up to those of you who have real matlab.

bentglasstube  Posts: 40
 Joined: Mon Jul 13, 2009 11:46 am
 Location: Phoenix, AZ
Re: Theck's MATLAB thread  Cataclysm/4.x
Do Octave/FreeMat get along nicely with structures within structures ? You can load avoid_dr r55 directly, it's selfsufficient :
If that's the case, additional code cleanup is down the road.
 Code: Select all
clear;avoiddr=avoid_dr(0,0,0)
If that's the case, additional code cleanup is down the road.

tlitp  Posts: 487
 Joined: Mon Jul 27, 2009 3:25 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
Octave doesn't throw any errors for that code but it has been running for about 3 minutes without finishing.
Edit: nevermind, it works perfectly in Octave
Edit: nevermind, it works perfectly in Octave

bentglasstube  Posts: 40
 Joined: Mon Jul 13, 2009 11:46 am
 Location: Phoenix, AZ
Re: Theck's MATLAB thread  Cataclysm/4.x
Is Vengeance more or less functional on b12759 ? If so, there are a few things that need to be clarified :
I. damage type (physical/magic/environmental)
II. passive damage reduction effects (armor)
III. active DREs (both intrinsic, say AD, and extrinsic, say PS)
IV. absorb effects
Appending :
Is plate spec functional in b12803 ? If so...
I. Does the activation require 8/8 plate ? Is x/x enough, for x<8 ? (mostly of academic interest, to get the mechanics pinned down)
II. How exactly does it interact with the other STA modifiers ?
For reference, the current implementation :
 Code: Select all
player.sta=floor((base.sta+mdf.mining).*(1+(mdf.TbtL./40)).*mdf.BoK)+ ...
floor((gear.sta+mdf.PWF+extra.sta).*(1+(mdf.TbtL./40)).*mdf.BoK);

tlitp  Posts: 487
 Joined: Mon Jul 27, 2009 3:25 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
tlitp wrote:Appending :
Is plate spec functional in b12803 ? If so...
I. Does the activation require 8/8 plate ? Is x/x enough, for x<8 ? (mostly of academic interest, to get the mechanics pinned down)
II. How exactly does it interact with the other STA modifiers ?
For reference, the current implementation :
 Code: Select all
player.sta=floor((base.sta+mdf.mining).*(1+(mdf.TbtL./40)).*mdf.BoK)+ ...
floor((gear.sta+mdf.PWF+extra.sta).*(1+(mdf.TbtL./40)).*mdf.BoK);
I. Yes, the activation requires every item to be plate. If one slot contains cloth/leather/mail or it's empty, the bonus is canceled.
II. Tested. It follows the same pattern.
 Code: Select all
player.sta=floor((base.sta+mdf.mining).*(1+(mdf.TbtL./40)).*mdf.BoK.*mdf.PlSp)+ ...
floor((gear.sta+mdf.PWF+extra.sta).*(1+(mdf.TbtL./40)).*mdf.BoK.*mdf.PlSp);

Marblehead  Posts: 96
 Joined: Sun Aug 02, 2009 9:28 pm
 Location: Bloodhoof (EU)
Re: Theck's MATLAB thread  Cataclysm/4.x
tlitp wrote:Is Vengeance more or less functional on b12759 ? If so, there are a few things that need to be clarified :
I. damage type (physical/magic/environmental)
II. passive damage reduction effects (armor)
III. active DREs (both intrinsic, say AD, and extrinsic, say PS)
IV. absorb effects
I. Any damage type. Whenever you take damage, no matter where it came from, Vengeance is generated.
IIIV. Vengeance is based purely on damage taken (i.e. hitpoints lost), not the raw hit. That said, since the effects IIIV reduce damage taken, they reduce the Vengeance generation.

Marblehead  Posts: 96
 Joined: Sun Aug 02, 2009 9:28 pm
 Location: Bloodhoof (EU)
Re: Theck's MATLAB thread  Cataclysm/4.x
Marblehead wrote:IIIV. Vengeance is based purely on damage taken (i.e. hitpoints lost), not the raw hit.
Did you test explicitly #4 ? Say x (premitigation)>y (post)>z (postabsorb). Does Vengeance scale with y or with z ?

tlitp  Posts: 487
 Joined: Mon Jul 27, 2009 3:25 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
tlitp wrote:Marblehead wrote:IIIV. Vengeance is based purely on damage taken (i.e. hitpoints lost), not the raw hit.
Did you test explicitly #4 ? Say x (premitigation)>y (post)>z (postabsorb). Does Vengeance scale with y or with z ?
Let's say that a mob hits for 1k damage postmitigation. Then:
a) For every "full" hit, Vengeance generates 1000*0.05= 50 attack power.
b) If the hit is blocked, Vengeance generates 1000*0.7*0.05= 35 attack power.
c) If the hit is partially absorbed for 500 damage, Vengeance generates (1000500)*0.05= 25 attack power.
d) If the hit is fully absorbed, Vengeance doesn't generate any attack power.

Marblehead  Posts: 96
 Joined: Sun Aug 02, 2009 9:28 pm
 Location: Bloodhoof (EU)
Re: Theck's MATLAB thread  Cataclysm/4.x
Do Reckoningbased hits proc Righteousness ? Do they apply Censure ?
For the second one : either track the stack counter, either duel a Rogue (synchronizing Reckoning with Evasion).
EDIT : To clarify the current Vengeance mechanics. Stacking buff, adding 5%*damage per stack (up to a total of 10%*health), 15 sec duration. Correct ?
For the second one : either track the stack counter, either duel a Rogue (synchronizing Reckoning with Evasion).
EDIT : To clarify the current Vengeance mechanics. Stacking buff, adding 5%*damage per stack (up to a total of 10%*health), 15 sec duration. Correct ?

tlitp  Posts: 487
 Joined: Mon Jul 27, 2009 3:25 pm
Re: Theck's MATLAB thread  Cataclysm/4.x
That doesn't bode well... the more damage we adsorb, block, parry or dodge the less vengeance we generate?
Well crap. That doesn't bode well for gear scaling at all.
Well crap. That doesn't bode well for gear scaling at all.
Ellifain @ Khaz'Goroth does not approve of torture, save where there's experience/rep/loot involved.
 masterpoobaa
 Posts: 1482
 Joined: Thu Jul 31, 2008 5:14 pm
 Location: Brisbane, Australia, Earth, Sol, Orion Arm, Milky Way, Local Group, Virgo Supercluster, Universe.
Re: Theck's MATLAB thread  Cataclysm/4.x
@Theck: I have beta access (and have for quite a while now) and will test anything in this thread.
I'll go through a bit more tomorrow and try to test any untested things.
I'll go through a bit more tomorrow and try to test any untested things.

Petrus  Maintankadonor
 Posts: 725
 Joined: Wed Feb 06, 2008 3:45 am
 Location: St. Paul, Minnesota
Re: Theck's MATLAB thread  Cataclysm/4.x
I have been doing some testing on the beta with vengeance it appears to decay linearly (10% of the AP value after last increase every 2s) over 20s from the last time you take damage.
 Kierly
 Posts: 12
 Joined: Tue Aug 31, 2010 10:39 am
Return to Advanced Theorycraft and Calculations
Who is online
Users browsing this forum: Exabot [Bot] and 1 guest