Parry Hasting Addon
Moderators: Fridmarr, Worldie, Aergis, theckhd
Re: Parry Hasting Addon
I have copied over the code to make the addon use the Ace3 library now and make a debug mode option so you won't get spammed anymore in combat. It also has a proper warning mechanism to alert you when a boss receives parry hasting.
It should be a lot easier to try this out and give me your feedback. If you find a bug, please screenshot it send it my way (with debug mode on preferably).
http://wow.curseforge.com/addons/parry-hasting/
It should be a lot easier to try this out and give me your feedback. If you find a bug, please screenshot it send it my way (with debug mode on preferably).
http://wow.curseforge.com/addons/parry-hasting/
- Tbdsamman
- Posts: 10
- Joined: Fri Jan 15, 2010 8:38 am
Re: Parry Hasting Addon
Downloaded this today to use in raid tonight. Appreciate you writing this up, as a player that switches gear almost every fight I like to know when more expertise then my norm would be beneficial.
Eyes of Laughing Skull
-

Eyes - Posts: 5
- Joined: Thu Jan 28, 2010 12:54 pm
Re: Parry Hasting Addon
This is neat. I've been working on a script to parse a combat log and make an attack speed plot to help identify parry hasting bosses.
I will try out this mod and compare with my log parsing script. The script is done but I am still testing and don't want to leap to conclusions yet, suffice it to say that the first edition says that Saurfang does not parry-haste in ICC10.
I will try out this mod and compare with my log parsing script. The script is done but I am still testing and don't want to leap to conclusions yet, suffice it to say that the first edition says that Saurfang does not parry-haste in ICC10.
- Cliffton
- Posts: 17
- Joined: Thu Jan 21, 2010 12:19 pm
Re: Parry Hasting Addon
The tool I wrote makes graphs.
The script parses a combat log for times of parries and boss autoattacks. The time between autoattacks is plotted, and those autoattacks immediately preceded by a parry are colored red for easy identifcation. The idea is that if a boss parry hastes and there's enough data points, the red dots should look like they are mostly below the blue dots.
Sometimes, if there's enough data, the parry hastes stick out like sore thumbs, as in Icehowl's plot.
The more data there is, the more confidence one can have in saying that a boss does not parry haste if the sore thumbs are not seen, as in Saurfang's plot.
The attached .rar archive contains plots and related logfile entries for the following ICC10 bosses. My conclusion on which bosses parry haste is:
Yes (parry haste enabled):
Lady Deathwhisper seems to. I dug into the log data identified by two suspicious red dots, and they are certainly characteristic of a parry haste.
No (parry haste probably not enabled):
High Overlord Saurfang
Deathbringer Saurfang
Prince Valanar (there is a low red dot but it's probably a thunderclap effect wearing off)
Prince Taldaram
Professor Putricide
Rotface
Festergut
Blood-Queen Lana'thel
Maybe:
Lord Marrowgar data is too sparse to say either way, and maybe I need to include Saber Lash to get a better handle on him.
This is the .m-file I created. No one has verified it is correct yet, so some verification of correctness from somebody is probably warranted.
The script parses a combat log for times of parries and boss autoattacks. The time between autoattacks is plotted, and those autoattacks immediately preceded by a parry are colored red for easy identifcation. The idea is that if a boss parry hastes and there's enough data points, the red dots should look like they are mostly below the blue dots.
Sometimes, if there's enough data, the parry hastes stick out like sore thumbs, as in Icehowl's plot.
The more data there is, the more confidence one can have in saying that a boss does not parry haste if the sore thumbs are not seen, as in Saurfang's plot.
The attached .rar archive contains plots and related logfile entries for the following ICC10 bosses. My conclusion on which bosses parry haste is:
Yes (parry haste enabled):
Lady Deathwhisper seems to. I dug into the log data identified by two suspicious red dots, and they are certainly characteristic of a parry haste.
No (parry haste probably not enabled):
High Overlord Saurfang
Deathbringer Saurfang
Prince Valanar (there is a low red dot but it's probably a thunderclap effect wearing off)
Prince Taldaram
Professor Putricide
Rotface
Festergut
Blood-Queen Lana'thel
Maybe:
Lord Marrowgar data is too sparse to say either way, and maybe I need to include Saber Lash to get a better handle on him.
This is the .m-file I created. No one has verified it is correct yet, so some verification of correctness from somebody is probably warranted.
- Code: Select all
% Parry-haste Plotter
% Plots combat log data in a way suitable for detecting whether or not a mob has parry haste enabled
% .m-file written for use with Octave, compatibility with Matlab is likely
% Author: Cliffton-Feathermoon
% Clear out data from previous sessions
clear all
close all
function [day,mSecs]=ParseTime(logLine)
[day,rem]=strtok(logLine," ");
[hour,rem]=strtok(rem," :");
[minute,rem]=strtok(rem,":");
[second,rem]=strtok(rem,":.");
[mSecs,rem]=strtok(rem,". ");
mSecs=str2num(mSecs);
mSecs=mSecs+1000*str2num(second);
mSecs=mSecs+60*1000*str2num(minute);
mSecs=mSecs+60*60*1000*str2num(hour);
end
function ParryGibAnalysis( boss, spells, file )
% Constants
UNABLE_TO_OPEN_FILE = "Error: Unable to open file.";
UNABLE_TO_CLOSE_FILE = "Error closing file.";
% Harvest useful data from logfile
parryData=[];
swingData=[];
if( (fh=fopen(file,'r')) )
while( 0 < (nextLine=fgetl(fh)) )
if( (strfind(nextLine,boss)) ) % Determine if this line is relevant to boss fight
if( (regexp(nextLine,["(.*,){5}.",boss,".*PARRY$"])) ) % Determine if this event is a boss parry
parryData = [parryData; nextLine]; % Contains all events that might cause the boss to parry haste
elseif( (regexp(nextLine,["(.* .* )(SWING|SPELL)_(DAMAGE|MISSED),.*,.",boss])) )%need to parse SPELL_DAMAGE, SWING_DAMAGE, and _MISSED
if( (regexp(nextLine,["^([^,]*,){2}.",boss])) )
if( (regexp(nextLine,[".*SPELL_(DAMAGE|MISSED).*"])) )
for( i=(1:length(spells)) )
if( strfind(nextLine,spells(i){1}) )
swingData = [swingData; nextLine];
end
end
else
swingData = [swingData; nextLine];
end
end
end
end
end
% Close logfile
if( fclose(fh) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
% Get times from data
[prevDay,swingTimes]=ParseTime(swingData(1,:));
for( i=(2:size(swingData,1)) )
[day,time]=ParseTime(swingData(i,:));
if(strmatch(day,prevDay))
swingTimes(i)=time;
else % Assume 1-day rollover
swingTimes(i)=time+24*60*60*1000;
end
prevDay=day;
end
[prevDay,parryTimes]=ParseTime(parryData(1,:));
for( i=(2:size(parryData,1)) )
[day,time]=ParseTime(parryData(i,:));
if(strmatch(day,prevDay))
parryTimes(i)=time;
else % Assume 1-day rollover
parryTimes(i)=time+24*60*60*1000;
end
prevDay=day;
end
% Create delta vector
dSwings=swingTimes(2:length(swingTimes))-swingTimes(1:(length(swingTimes)-1));
% Count parries immediately preceding each swing
parryCount=zeros(1,length(dSwings));
j=1; % parryIndex
for( i=1:length(dSwings) )
if( j<(length(parryTimes)+1) ) % If there are parries left that haven't been examined
while( parryTimes(j) < swingTimes(i+1) )
parryCount(i)=parryCount(i)+1;
j=j+1;
if( j>length(parryTimes) ) % If all parries have been examined
break;
end
end
end
end
% Compute moving average attack speed
% Cap severe outliers since moving average is being used as a visual aid
%temp = dSwings;
%temp( find(temp>2*mean(temp)) )=2*mean(temp);
%temp = conv(temp,ones(1,5)/5);
%movingAverage = temp( 3:(length(temp)-2) );
% Removed because it's generally not helpful
zPI = find(0==parryCount); % indices of dSwings preceded by zero parries
oPI = find(1==parryCount); % one parry
tPI = find(1<parryCount); % two or more parries
x = 1:length(dSwings);
%plot(x(zPI),dSwings(zPI),'*',"markersize",2,x(oPI),dSwings(oPI),'*r',"markersize",2,x(tPI),dSwings(tPI),'*r',"markersize",3,x,movingAverage);
plot(x(zPI),dSwings(zPI),'*',"markersize",2,x(oPI),dSwings(oPI),'*r',"markersize",2,x(tPI),dSwings(tPI),'*r',"markersize",3);
axis([0,length(dSwings),0,3*median(dSwings)]);
% legend("No parries","One parry","Two or more parries","5-sample average");
legend("No parries","One parry","Two or more parries");
title(["Parry Effect on ",boss,"'s Attack Speed"]);
xlabel("Sample Number");
ylabel("Time between attacks (ms)");
print([boss,".png"]);
% Write relevant log data for evidence
if( (fp=fopen( [boss,"_parryData.log"], 'w' )) )
fdisp( fp, parryData );
if( fclose( fp ) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
if( (fp=fopen( [boss,"_swingData.log"], 'w' )) )
fdisp( fp, swingData );
if( fclose( fp ) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
end
% Script begins here
% Input data
%file="VermouthJan23.txt"; % Combat Log Filename
file="Dec19.txt";
% Names of bosses to analyze
%bossList=[{"Lord Marrowgar"},...
% {"Lady Deathwhisper"},...
% {"High Overlord Saurfang"},...
% {"Deathbringer Saurfang"},...
% {"Rotface"},...
% {"Festergut"},...
% {"Professor Putricide"},...
% {"Prince Taldaram"},...
% {"Prince Valanar"},...
% {"Blood-Queen Lana'thel"}];
%bossList=[{"Gormok the Impaler"},...
% {"Dreadscale"},...
% {"Acidmaw"},...
% {"Lord Jaraxxus"},...
% {"Fjola Lightbane"},...
% {"Eydis Darkbane"},...
% {"Anub'arak"}];
bossList={"Icehowl"};
spells=[]; % Name of boss abilities suspected to coincide with autoattacks (untested)
for( i=1:size(bossList,2) )
fdisp( stdout, ["Now Processing: ", bossList(i){1}] );
fflush( stdout );
ParryGibAnalysis( bossList(i){1}, spells, file );
end
- Attachments
-
ICC10.rar- ICC10 plots (up to Blood-Queen)
- (224.9 KiB) Downloaded 57 times
- Cliffton
- Posts: 17
- Joined: Thu Jan 21, 2010 12:19 pm
Re: Parry Hasting Addon
That code doesn't work properly in later versions of MATLAB. Somewhere around 7.0, they nerfed nested functions - they still work within function m-files, but not scripts. There's probably a good reason, but not being a computer scientist, I don't know what it is. It's a horrible annoyance for us amateurs though.
In any event, I've re-worked it into two files, a script file that serves as a launcher, and a function file that does all the dirty work. I also fixed a lot of errors MATLAB complained about (apparently calling cell arrays works differently in Octave).
Unfortunately, I don't have any combat logs at work. However, I have lots at home, so I'll run this on some of mine to troubleshoot it and see if my parses agree. I can also go back and check the Ulduar, and Naxx bosses when I get around to it.
Here's the final code I came up with - MATLAB doesn't complain about errors, but I haven't run it on an actual log to test it yet.
Script file:
Function:
In any event, I've re-worked it into two files, a script file that serves as a launcher, and a function file that does all the dirty work. I also fixed a lot of errors MATLAB complained about (apparently calling cell arrays works differently in Octave).
Unfortunately, I don't have any combat logs at work. However, I have lots at home, so I'll run this on some of mine to troubleshoot it and see if my parses agree. I can also go back and check the Ulduar, and Naxx bosses when I get around to it.
Here's the final code I came up with - MATLAB doesn't complain about errors, but I haven't run it on an actual log to test it yet.
Script file:
- Code: Select all
clear all
close all
%% File Name
file='Dec19.txt';
%% Names of bosses to analyze
% %ICC
bossList=[{'Lord Marrowgar'},...
{'Lady Deathwhisper'},...
{'High Overlord Saurfang'},...
{'Deathbringer Saurfang'},...
{'Rotface'},...
{'Festergut'},...
{'Professor Putricide'},...
{'Prince Taldaram'},...
{'Prince Valanar'},...
{'Blood-Queen Lana''thel'},...
{'Sindragosa'},...
];
% %ToC
%bossList=[{'Gormok the Impaler'},...
% {'Dreadscale'},...
% {'Acidmaw'},...
% {'Icehowl'},...
% {'Lord Jaraxxus'},...
% {'Fjola Lightbane'},...
% {'Eydis Darkbane'},...
% {'Anub''arak'}];
% bossList={'Icehowl'};
ph_analyze(file,bossList);
Function:
- Code: Select all
function ph_analyze(file, bossList)
% Parry-haste Plotter
% Plots combat log data in a way suitable for detecting whether or not a mob has parry haste enabled
% .m-file written for use with Octave, compatibility with Matlab is likely
% Author: Cliffton-Feathermoon
% modified by Theck-Blackrock to work in MATLAB R2008a
for k=1:size(bossList,2)
fdisp( stdout, ['Now Processing: ', bossList{k}] );
fflush( stdout );
ParryGibAnalysis( bossList{k}, spells, file );
end
function [day,mSecs]=ParseTime(logLine)
[day,rem]=strtok(logLine,' ');
[hour,rem]=strtok(rem,' :');
[minute,rem]=strtok(rem,':');
[second,rem]=strtok(rem,':.');
[mSecs,rem]=strtok(rem,'. ');
mSecs=str2num(mSecs);
mSecs=mSecs+1000*str2num(second);
mSecs=mSecs+60*1000*str2num(minute);
mSecs=mSecs+60*60*1000*str2num(hour);
end
function ParryGibAnalysis( boss, spells, file )
% Constants
UNABLE_TO_OPEN_FILE = 'Error: Unable to open file.';
UNABLE_TO_CLOSE_FILE = 'Error closing file.';
% Harvest useful data from logfile
parryData=[];
swingData=[];
fh=fopen(file,'r');
if fh~=-1
nextLine=1; %just to initiate
while( 0 < nextLine )
nextLine=fgetl(fh);
if( (strfind(nextLine,boss)) ) % Determine if this line is relevant to boss fight
if( (regexp(nextLine,['(.*,){5}.',boss,'.*PARRY$'])) ) % Determine if this event is a boss parry
parryData = [parryData; nextLine]; % Contains all events that might cause the boss to parry haste
elseif( (regexp(nextLine,['(.* .* )(SWING|SPELL)_(DAMAGE|MISSED),.*,.',boss])) )%need to parse SPELL_DAMAGE, SWING_DAMAGE, and _MISSED
if( (regexp(nextLine,['^([^,]*,){2}.',boss])) )
if( (regexp(nextLine,'.*SPELL_(DAMAGE|MISSED).*')) )
for i=(1:length(spells))
if( strfind(nextLine,spells{i}) )
swingData = [swingData; nextLine];
end
end
else
swingData = [swingData; nextLine];
end
end
end
end
end
% Close logfile
if( fclose(fh) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
% Get times from data
[prevDay,swingTimes]=ParseTime(swingData(1,:));
for i=(2:size(swingData,1))
[day,time]=ParseTime(swingData(i,:));
if(strmatch(day,prevDay))
swingTimes(i)=time;
else % Assume 1-day rollover
swingTimes(i)=time+24*60*60*1000;
end
prevDay=day;
end
[prevDay,parryTimes]=ParseTime(parryData(1,:));
for i=(2:size(parryData,1))
[day,time]=ParseTime(parryData(i,:));
if(strmatch(day,prevDay))
parryTimes(i)=time;
else % Assume 1-day rollover
parryTimes(i)=time+24*60*60*1000;
end
prevDay=day;
end
% Create delta vector
dSwings=swingTimes(2:length(swingTimes))-swingTimes(1:(length(swingTimes)-1));
% Count parries immediately preceding each swing
parryCount=zeros(1,length(dSwings));
j=1; % parryIndex
for i=1:length(dSwings)
if( j<(length(parryTimes)+1) ) % If there are parries left that haven't been examined
while( parryTimes(j) < swingTimes(i+1) )
parryCount(i)=parryCount(i)+1;
j=j+1;
if( j>length(parryTimes) ) % If all parries have been examined
break;
end
end
end
end
% Compute moving average attack speed
% Cap severe outliers since moving average is being used as a visual aid
%temp = dSwings;
%temp( find(temp>2*mean(temp)) )=2*mean(temp);
%temp = conv(temp,ones(1,5)/5);
%movingAverage = temp( 3:(length(temp)-2) );
% Removed because it's generally not helpful
zPI = find(0==parryCount); % indices of dSwings preceded by zero parries
oPI = find(1==parryCount); % one parry
tPI = find(1<parryCount); % two or more parries
x = 1:length(dSwings);
%plot(x(zPI),dSwings(zPI),'*','markersize',2,x(oPI),dSwings(oPI),'*r','markersize',2,x(tPI),dSwings(tPI),'*r','markersize',3,x,movingAverage);
plot(x(zPI),dSwings(zPI),'*','markersize',2,x(oPI),dSwings(oPI),'*r','markersize',2,x(tPI),dSwings(tPI),'*r','markersize',3);
axis([0,length(dSwings),0,3*median(dSwings)]);
% legend('No parries','One parry','Two or more parries','5-sample average');
legend('No parries','One parry','Two or more parries');
title(['Parry Effect on ',boss,'''s Attack Speed']);
xlabel('Sample Number');
ylabel('Time between attacks (ms)');
print([boss,'.png']);
% Write relevant log data for evidence
if( (fp==fopen( [boss,'_parryData.log'], 'w' )) )
fdisp( fp, parryData );
if( fclose( fp ) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
if( (fp==fopen( [boss,'_swingData.log'], 'w' )) )
fdisp( fp, swingData );
if( fclose( fp ) )
fwrite( stderr, UNABLE_TO_CLOSE_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
else
fwrite( stderr, UNABLE_TO_OPEN_FILE );
end
end
end
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
-

theckhd - Moderator
- Posts: 7452
- Joined: Thu Jul 31, 2008 3:06 pm
- Location: Harrisburg, PA
Re: Parry Hasting Addon
Cliffton wrote:Maybe:
Lord Marrowgar data is too sparse to say either way, and maybe I need to include Saber Lash to get a better handle on him.
Last time I looked, Marrowgar gets in about 4-6 melee hits before he starts saberlash spamming without any melee until the next cycle (after he comes out of bonestorm). I'm assuming they put those single target physical attacks in to give the tanks time to position him before he cleaves everyone to death. At a glance, it looks like the normal melee attacks only account for roughly 25% of his attacks.
- Code: Select all
[19:25:11.729] Lord Marrowgar hits Elgguns 12624 (A: 3561)
[19:25:12.930] Lord Marrowgar hits Elgguns 17137
[19:25:14.630] Lord Marrowgar hits Elgguns 14459 (A: 1745)
[19:25:15.801] Lord Marrowgar hits Elgguns Absorb (17270)
[19:25:17.097] Lord Marrowgar hits Elgguns 12148 (A: 3037, B: 1786)
[19:25:18.175] Lord Marrowgar hits Elgguns 13509 (A: 972, B: 1786)
[19:25:19.429] Lord Marrowgar casts Saber Lash
[19:25:20.621] Lord Marrowgar casts Saber Lash
[19:25:21.840] Lord Marrowgar casts Saber Lash
[19:25:23.083] Lord Marrowgar casts Saber Lash
[19:25:24.533] Lord Marrowgar casts Saber Lash
[19:25:29.844] Lord Marrowgar casts Saber Lash
...etc
I also saw a parry during the saber lashing but it didn't look like parry haste was enabled for it, which makes sense since it looks like a spell.
- Code: Select all
Time in braces is the time between attacks
[19:22:50.722] {1.0640} Lord Marrowgar casts Saber Lash
[19:22:51.314] Elgguns hits Lord Marrowgar Parry
[19:22:51.916] {1.1940} Lord Marrowgar casts Saber Lash
[19:22:53.130] {1.2140} Lord Marrowgar casts Saber Lash
[19:22:54.398] {1.2680} Lord Marrowgar casts Saber Lash
- elgguns
- Posts: 2
- Joined: Thu Nov 19, 2009 8:07 pm
Re: Parry Hasting Addon
Ardent Defender http://wow.curse.com/downloads/wow-addo ... ender.aspx has the ability to notify you when someone causes a parry on the mob you are tanking as well as a lot of other stuff btw but it doesn't collect the detailed data that you are getting
I've been quite surprised at how often people cause parries on the mob I'm tanking
Ardent Defender will:
* - Announces when Ardent Defender proc's and saves your life, as well as flashing your screen and shaking it to alert you to the averted death.
* - Detects and tells you when someone causes a parry on an NPC you are tanking. Also tells you if you cause a parry on an NPC someone else is tanking.
* - Announces bubblewall usage (when it activates and when it fades)
* - Announce if your taunt fails (and why) or if your Avenger Shield misses.
* - Tracks combat stats such as damage received, damage blocked, damage absorbed.
* - Makes use of LibDataBroker if you have it, to display combat stats and Ardent Defender info.. see screenshots to see what I mean.
* - Tracks & Whispers on usage: Hand of Protection, Sacrifice, Salvation,
Freedom. also Divine Sacrifice, Divine Intervention and Lay On Hands.
* - (Disabled by default) Can annoy you with red screen slashing if Righteous Fury is not active AND you are currently wearing defense gear.
* - Will not announce or track any of the above while in a Battleground, but will work normally while in an Arena.
* - The LDB object displays combat statistics such as how much damage you have absorbed, blocked and received, how many times (since reload)
Ardent Defender has saved your life, as well as how much Ardent Defender will heal you upon proc, how much damage Divine Sacrifice absorbs, and more..
I've been quite surprised at how often people cause parries on the mob I'm tanking
- Obor
- Posts: 21
- Joined: Sat Jan 23, 2010 5:51 pm
Re: Parry Hasting Addon
Lovely data analysiseration!
I am extremely interested to know if anyone can corroborate that basically all the bosses he tested cannot parry-haste (this is Clifton's result), except Deathwhisper.
No tests for Lich King
fair enough.
I am extremely interested to know if anyone can corroborate that basically all the bosses he tested cannot parry-haste (this is Clifton's result), except Deathwhisper.
No tests for Lich King
Last edited by Hammerjudge on Mon Feb 08, 2010 3:26 pm, edited 1 time in total.
- Hammerjudge
- Maintankadonor
- Posts: 143
- Joined: Mon Oct 01, 2007 8:36 pm
Re: Parry Hasting Addon
Marrowgar's Saber Lash is an "on next melee attack", unlike TBC's saber lashes which were instant attacks in addition to the bosses melee swings. It probably does count as a normal melee attack for all purposes, which makes the conclusion that Marrowgar doesn't parry haste.elgguns wrote:Cliffton wrote:Maybe:
Lord Marrowgar data is too sparse to say either way, and maybe I need to include Saber Lash to get a better handle on him.
Last time I looked, Marrowgar gets in about 4-6 melee hits before he starts saberlash spamming without any melee until the next cycle (after he comes out of bonestorm). I'm assuming they put those single target physical attacks in to give the tanks time to position him before he cleaves everyone to death. At a glance, it looks like the normal melee attacks only account for roughly 25% of his attacks.
...
I also saw a parry during the saber lashing but it didn't look like parry haste was enabled for it, which makes sense since it looks like a spell.
...

-

Chicken - Posts: 1597
- Joined: Fri Jun 26, 2009 2:19 pm
Re: Parry Hasting Addon
Hammerjudge wrote:Lovely data analysiseration!
I am extremely interested to know if anyone can corroborate that basically all the bosses he tested cannot parry-haste (this is Clifton's result), except Deathwhisper.
No tests for Lich Kingfair enough.
I'm in the process of doing so. Sadly, the MATLAB code took more work than I thought, and it runs awfully slowly. However, I have parses from all of the 10-man bosses, so I should be able to confirm all of his results given a few days.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
-

theckhd - Moderator
- Posts: 7452
- Joined: Thu Jul 31, 2008 3:06 pm
- Location: Harrisburg, PA
Re: Parry Hasting Addon
so is this making it so expertise is back to purely threat stat and not the 80% of dodge thing like was stated...
- steadypal
- Posts: 1206
- Joined: Sat Mar 15, 2008 12:28 pm
Re: Parry Hasting Addon
steadypal wrote:so is this making it so expertise is back to purely threat stat and not the 80% of dodge thing like was stated...
If Deathwhisper really is the only boss that can parry in ICC, then I'd say yes.
I should have some results for most bosses later today. Boy this regular expression check is slow.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
-

theckhd - Moderator
- Posts: 7452
- Joined: Thu Jul 31, 2008 3:06 pm
- Location: Harrisburg, PA
Re: Parry Hasting Addon
Sorry for the lack of updates but I've been fighting a stomach flu for the past bit.
I've been working on a logging mechanism so I can record the detection of parry hasting but from what I remember of using it in ICC, the only bosses without parry hasting were Festergut and Rotface.
His provided snippet doesn't prove Marrowgar doesn't parry haste (my addon has in fact detected him parry hasting). For parry hasting to occur, the boss must parry you within 40% of it's swing, otherwise the bonus of 40% would push it lower than the 20% minimum for hasting. The provided parry was after the 40% window.
I've been working on a logging mechanism so I can record the detection of parry hasting but from what I remember of using it in ICC, the only bosses without parry hasting were Festergut and Rotface.
Chicken wrote:Marrowgar's Saber Lash is an "on next melee attack", unlike TBC's saber lashes which were instant attacks in addition to the bosses melee swings. It probably does count as a normal melee attack for all purposes, which makes the conclusion that Marrowgar doesn't parry haste.elgguns wrote:Cliffton wrote:Maybe:
Lord Marrowgar data is too sparse to say either way, and maybe I need to include Saber Lash to get a better handle on him.
Last time I looked, Marrowgar gets in about 4-6 melee hits before he starts saberlash spamming without any melee until the next cycle (after he comes out of bonestorm). I'm assuming they put those single target physical attacks in to give the tanks time to position him before he cleaves everyone to death. At a glance, it looks like the normal melee attacks only account for roughly 25% of his attacks.
...
I also saw a parry during the saber lashing but it didn't look like parry haste was enabled for it, which makes sense since it looks like a spell.
...
His provided snippet doesn't prove Marrowgar doesn't parry haste (my addon has in fact detected him parry hasting). For parry hasting to occur, the boss must parry you within 40% of it's swing, otherwise the bonus of 40% would push it lower than the 20% minimum for hasting. The provided parry was after the 40% window.
- Tbdsamman
- Posts: 10
- Joined: Fri Jan 15, 2010 8:38 am
Re: Parry Hasting Addon
theckhd wrote:steadypal wrote:so is this making it so expertise is back to purely threat stat and not the 80% of dodge thing like was stated...
If Deathwhisper really is the only boss that can parry in ICC, then I'd say yes.
I should have some results for most bosses later today. Boy this regular expression check is slow.
My original algorithm took about 5-10 minutes to run on a 10-man ICC combat log. If you find the revised Matlab compatible code taking longer, you might want to sever the combat log into single-boss sections. It may have to do with the way Matlab interprets code on the fly.
- Cliffton
- Posts: 17
- Joined: Thu Jan 21, 2010 12:19 pm
Re: Parry Hasting Addon
Cliffton wrote:My original algorithm took about 5-10 minutes to run on a 10-man ICC combat log. If you find the revised Matlab compatible code taking longer, you might want to sever the combat log into single-boss sections. It may have to do with the way Matlab interprets code on the fly.
It was taking considerably longer. The regexp() call was the culprit for most of it, swapping it out for strfind() calls cut the run time down considerably.
I have to check a few parses to make sure the results are making sense though - I want to make sure the changes I made to the code didn't screw anything up. My only test parse so far with the latest version of the code was Jaraxxus, and it was giving me some very strange results.
<edit> Aha, I think I found it. I was erroneously including SPELL_PERIODIC_MISSED, which I think was causing the extra clutter that was screwing up my graphs.
I'm going to review the code some more this evening (can't log on anyway). I should have graphs for you by tomorrow. From the looks of it though, Sindragosa parry-hastes and Lich King doesn't.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
-

theckhd - Moderator
- Posts: 7452
- Joined: Thu Jul 31, 2008 3:06 pm
- Location: Harrisburg, PA
Return to Advanced Theorycraft and Calculations
Who is online
Users browsing this forum: No registered users and 2 guests