Depending on the amount of DK's we see in raids, they get benefits to their damage according to how many disease's are on a target. So depending on that bonus it may be good for the synergy of your raid to have at least 1 feral with the talent.
Ultimately I think it will depend heavily on your raid makeup as well as your choice of raiding 10 or 25 mans respectively. 25 mans *maybe* you would have 2 ferals, 10 mans you will most definitely only have 1.
Min/Maxing aside, once you get some respectable gear, your spec becomes less important as encounters get trivialized
In simple terms, I would be tempted to spec IW regardless. When tanking you're using Mangle (and on bosses Maul also) on every cooldown anyway thus you're putting up the debuff "free of charge" where the equivalents will be costing the Warrior/Pali in mana/rage/threat/dps.
Here as promised the code for the program I've made to theorycraft cat dps. EDIT: Corrected some error into the program and made it more realistic with a 0.01 second time tick
Changes from the initial program:
- Glyph added
- Changed the energy regeneration according to the beta (now is continuous).
- Introduced a time step of 0.01 seconds to take better into account haste and the new energy regeneration (1 energy every 0.1 secods).
EDIT: Tiger fury / King of the Jungle and Ferocious Bite damage was not computed correctly in the previous release, I've posted the new code here. With the right KoJ the dps increase. Also with the right FB, 2SR/4RIP is still the best cycle
On a side note The change in energy regeneration alone give us 350+ dps increase!
Here some stats: DPS: 3454.26,
White: 998.131, Yellow: 2456.13,
Bleed debuff uptime: 54.8259%, Mangle debuff uptime: 76.7682%,
Powershifts each 5.52283 seconds (average)
To do:
-compute the mana expense for powershifting
-try intelligent wait time inside the cycle.
THE CODE (C++):
#include <iostream>
using namespace std;
/*Set RNG (0,1)*/
double randnum(){
double r;
r=((double)(rand()%10000))/10000;
return r;}
/*Create a class for special attacks, Yes I know, It's only to give variables cool names :P*/
class attack{
public:
int energy; //energy use of ability
double adamage; //attack power scaling component of damage
double acritdamage; //attack power scaling component of damage (critical damage)
double bdamage; //fixed component of damage
double bcritdamage; //fixed component of damage (critical damage)
double hit; //hit chance of the ability
double crit; //crit chance of the ability
};
/*main*/
int main (int argc, char * const argv[]) {
/*RNG seed*/
srand((unsigned)time(0));
/*Standard Value*/
double base_paw=54.5; /*Base Paw Damage*/
/*Haste*/
int haste=0; //Round the value. Value in 1/100 of seconds.
//Set cp for ability-cycle
int sr_t=4; //Savage Roar combo points, set to 10 if you don't use it
int rip_t=4; //Rip combo points
int fb_t=10; //Ferocious Bite combo points
int rk=0; //set to 1 if you use rake.
double dmg=0; //damage
double wdamage=0; //white damage
double ydamage=0; //yellow damage
double damage2=0;
double wdamage2=0;
double ydamage2=0;
/*Talents*/
double ferocity_t = 5; //ferocity 0-5
int s_att_t = 2; //shreding attack 0-2
double precision_t = 2; //precision 0-2
double fury_t = 2; //fury 0-2
double pistinct_t = 5; //predatory istinct 0-5
int impmangle_t= 3; //improved mangle 0-3
double ret_t = 5; // Rend & Tear 0-5
double nss_t = 2; // Natural ShapeShifter
double warrior = 0; /*If there is a warrior with trauma and trauma stack with mangle debuff*/
int wf_haste=16; //+16% haste by windfury
int wf=1; // set to 1 if there is windfury, set to 0 otherwise.
int speed=100-haste-wf*wf_haste; //autoattack speed
/*compute talent modifier to ability*/
double ferocity_m = 0.03*ferocity_t;
int s_att_m=9*s_att_t;
double precision_m1=5*precision_t;
double precision_m2=0.4*precision_t;
double fury_m = 0.1*fury_t;
double pistinct_m=0.02*pistinct_t;
int impmangle_m=2*impmangle_t;
double ret_m1 = 0.02*ret_t;
double ret_m2 = 0.1*ret_t;
double nss_m = 0.02*nss_t;
//Glyphs
int mangle_glyph=6; //increase duration of mangle debuff by 6 seconds.
int rip_glyph=3; //Increse duration of rip by 3 seconds, additional damage not yet implemented.
int m_g=0; //set to 1 if you have the mangle glyph, 0 otherwise.
int rip_g=0; //set to 1 if you have rip glyph, 0 otherwise.
/*Base Stats*/
int apbase=10000; /*Attack Power*/
int mana=10000; /*Mana*/
double crit=0.30; /*Critical hit chance without Master Shapeshifter*/
double hit=0.09; /*Hit percent*/
double expertise=0+precision_m1; /*Expertise value*/
double weapon=base_paw; /*Weapon*/
double red=0.3; /*Boss damage reduction based on boss armor (30% is about the usual numbers after 5 sunder and Fairie Fire)*/
/*Initial values and timers*/
int sim_time=60000; //each step is 0.01 seconds.
int bdebuff_up=0; //bleed debuff uptime
int mdebuff_up=0; //mangle debuff uptime
int pw=0; //numbers of powershifts
double ap = apbase; //attack power value
int timer2=0;
int timer=0; //time
int en=99; //initial energy
int cp=0; //combo points
double mdebuff=0; //mangle debuff switch
int mdebuff_timer=0; //mangle debuff timer
int mdebuff_cd=12+mangle_glyph*m_g; //mangle debuff initial timer value
double att; //dumb variable with the attack roll value
double damage; //total damage
double bdebuff=0; //bleed debuff switch
int bdebuff_timer=0; //bleed debuff timer
int rip_timer=0; //rip timer
int ooc_cd=10; // Omen of clarity hiden cooldown
int ooc_timer=0; //Omen of clarity timer
double ooc_rate=0.06; // Omen of clarity proc chanche (6%)
int ooc_proc=2; // omen of clarity switch (1 = proccing)
int koj_timer=0; // tiger fury timer
int koj_cd=30; // tiger fury cooldown
int koj_step=6; // tiger fury timer
double koj_damage=131.0; //tiger fury added damage
double koj=0; // tiger fury switch
int sr=0; // savage roar switch
int sr_timer=0; // savage roar timer
int gcd=0; //Global cooldown
/*Base Combat Table*/
double miss=0.09; /*Base miss chance vs lvl 83 mobs*/
double dodge=0.065; /*Base dodge chance of a lvl 83 mobs*/
double glance=0.25; /*Glancing Blow Chance, afflicts only white attacks*/
/*Modified combat table white damage*/
miss-=hit;
dodge-=expertise*0.0025;
glance=glance;
double wcrit=crit;
double wmiss=miss+dodge+glance;
double wnhit=1-crit-wmiss;
/*Modified combat table yellow damage, 2 roll system pre-calculated to avoid using 2 RNG*/
double ymiss=miss+dodge;
double dumb_yhit=1-ymiss;
double ycrit=crit*dumb_yhit;
double yhit=dumb_yhit-ycrit;
/*Ability damage*/
attack paw, mangle, shred, rake, rip, fb;
/*paw*/
paw.energy=0;
paw.adamage=(1-red)*(ap/14)*1.1;
paw.bdamage=(1-red)*(weapon)*1.1;
paw.acritdamage=paw.adamage*2*(1+pistinct_m);
paw.bcritdamage=paw.bdamage*2*(1+pistinct_m);
paw.hit=wnhit-nss_m;
paw.crit=wcrit+nss_m;
//mangle
mangle.energy=40-impmangle_m;
mangle.adamage=(1-red)*((ap/14)*1.6+507.2)*(1+fury_m)*1.1;
mangle.acritdamage=mangle.adamage*2*(1+pistinct_m);
mangle.bdamage=(1-red)*((weapon)*1.6+507.2)*(1+fury_m)*1.1;
mangle.bcritdamage=mangle.bdamage*2*(1+pistinct_m);
mangle.crit=(wcrit+nss_m)*dumb_yhit;
mangle.hit=dumb_yhit-mangle.crit;
//shred
shred.energy=60-s_att_m;
shred.adamage=(1-red)*((ap/14)*2.25+742.5)*1.1;//*(1+mdebuff*0.3)*(1+bdebuff*ret_m1);
shred.acritdamage=shred.adamage*2*(1+pistinct_m);
shred.bdamage=(1-red)*((weapon)*2.25+742.5)*1.1;//*(1+mdebuff*0.3)*(1+bdebuff*ret_m1);
shred.bcritdamage=shred.bdamage*2*(1+pistinct_m);
shred.crit=(wcrit+nss_m)*dumb_yhit;
shred.hit=dumb_yhit-shred.crit;
//rake
rake.energy=35;
rake.adamage=((ap*0.01))*(1+fury_m)*1.1+(ap*0.06)*(1+fury_m)*1.1;//*(1+(mdebuff+warrior)*0.3);
rake.acritdamage=(2*(1+pistinct_m)*((ap*0.01))*(1+fury_m)*1.1+(ap*0.06)*(1+fury_m)*1.1);//*(1+(mdebuff+warrior)*0.3);
rake.bdamage=(190)*(1+fury_m)*1.1+(397)*(1+fury_m)*1.1;//*(1+(mdebuff+warrior)*0.3);
rake.bcritdamage=(2*(1+pistinct_m)*(190)*(1+fury_m)*1.1+(397)*(1+fury_m)*1.1);//*(1+(mdebuff+warrior)*0.3);
rake.crit=(wcrit+nss_m)*dumb_yhit;
rake.hit=dumb_yhit-rake.crit;
//RIP
rip.energy=30;
rip.adamage=((ap)*0.01*cp)*6*1.1;//*(1+(mdebuff+warrior)*0.3);
rip.acritdamage=rip.adamage;
rip.bdamage=(39+99*cp)*6*1.1;//*(1+(mdebuff+warrior)*0.3);
rip.bcritdamage=rip.bdamage;
rip.crit=0;
rip.hit=dumb_yhit;
//fb
fb.energy=35;
fb.adamage=(1-red)*((0.07*ap)*cp+(ap*0.002439)*(en-fb.energy))*1.1*(1+ferocity_m);
fb.acritdamage=fb.adamage*2*(1+pistinct_m);
fb.bdamage=(1-red)*(120+290*cp+(9.4)*(en-fb.energy))*1.1*(1+ferocity_m);
fb.bcritdamage=fb.bdamage*2*(1+pistinct_m);
fb.crit=(wcrit+nss_m)*dumb_yhit+ret_m2;
fb.hit=dumb_yhit-fb.crit;
for(timer2=0; timer2<100;timer2++){
dmg=0; //damage
wdamage=0; //white damage
ydamage=0; //yellow damage
en=99; //initial energy
cp=0; //combo points
mdebuff=0; //mangle debuff switch
mdebuff_timer=0; //mangle debuff timer
mdebuff_cd=12+mangle_glyph*m_g; //mangle debuff initial timer value
att=0; //dumb variable with the attack roll value
damage=0; //total damage
bdebuff=0; //bleed debuff switch
bdebuff_timer=0; //bleed debuff timer
rip_timer=0; //rip timer
ooc_cd=10; // Omen of clarity hiden cooldown
ooc_timer=0; //Omen of clarity timer
ooc_rate=0.06; // Omen of clarity proc chanche (6%)
ooc_proc=2; // omen of clarity switch (1 = proccing)
koj_timer=0; // tiger fury timer
koj_cd=30; // tiger fury cooldown
koj_step=6; // tiger fury timer
koj_damage=131.0; //tiger fury added damage
koj=0; // tiger fury switch
sr=0; // savage roar switch
sr_timer=0; // savage roar timer
gcd=0; //Global cooldown
for(timer=0;timer<sim_time;timer++){
//ability counter time
mdebuff_timer--;
bdebuff_timer--;
ooc_timer--;
koj_step--;
koj_timer--;
sr_timer--;
rip_timer--;
gcd--;
if(timer%10==0){
en+=1; //energy regeneration
if(en>100){
en=100;
}
}
//debuff update
if(mdebuff_timer<0){
mdebuff=0;
}
if(bdebuff_timer<0){
bdebuff=0;
}
if((koj_step<0)&&(koj_step>-3)){
koj=0;
weapon=base_paw;
/*paw*/
paw.acritdamage=paw.adamage*2*(1+pistinct_m);
paw.bcritdamage=paw.bdamage*2*(1+pistinct_m);
//mangle
mangle.bdamage=(1-red)*((weapon)*1.6+507.2)*(1+fury_m)*1.1;
mangle.bcritdamage=mangle.bdamage*2*(1+pistinct_m);
//shred
shred.bdamage=(1-red)*((weapon)*2.25+742.5)*1.1;//*(1+mdebuff*0.3)*(1+bdebuff*ret_m1);
shred.bcritdamage=shred.bdamage*2*(1+pistinct_m);
}
if(sr_timer<0){
sr=0;
}
if(ooc_timer<0){
ooc_cd=0;
}
bdebuff_up+=bdebuff;
mdebuff_up+=mdebuff;
//combo points
if(cp>5){
cp=5;
}
/*cout << "\n" << "Time: " << timer/100.0 << ", Energy: " << en << ", Combo Points: " << cp << ",GCD: " << gcd/100.0 << ", KoJ: " << koj <<"\n" <<
"Mangle Debuff: "<< mdebuff << ", Mangle Debuff Counter: " << mdebuff_timer/100.0 <<"\n"
<<"Savage Roar up: " << sr << ", Savage Roar Timer: " << sr_timer/100.0 << "\n"
<<"Rip ticking: " << rip_timer/100.0 << ", Bleed debuff: " << bdebuff/100.0 <<", Bleed Timer: " << bdebuff_timer/100.0 << ", Omen Timer: " << ooc_timer/100.0 << "\n"
<< "DPS: " << (100.0*damage)/(1.0*timer)<< ", White: " << (100.0*wdamage)/(1.0*timer) <<", Yellow: " << (100.0*ydamage)/(1.0*timer) <<"\n" << "\n";
*/
//when to use Tiger Fury / King of the Jungle
if((koj_timer<=0)&&(en<=20)){
koj_timer=koj_cd*100;
koj=1;
koj_step=600;
en+=60;
weapon+=koj_damage;
/*paw*/
paw.acritdamage=paw.adamage*2*(1+pistinct_m);
paw.bcritdamage=paw.bdamage*2*(1+pistinct_m);
//mangle
mangle.bdamage=(1-red)*((weapon)*1.6+507.2)*(1+fury_m)*1.1;
mangle.bcritdamage=mangle.bdamage*2*(1+pistinct_m);
//shred
shred.bdamage=(1-red)*((weapon)*2.25+742.5)*1.1;//*(1+mdebuff*0.3)*(1+bdebuff*ret_m1);
shred.bcritdamage=shred.bdamage*2*(1+pistinct_m);
}
//using l'autoattack
if((timer%speed)==0){
att=randnum();
//cout << "Attack roll: " << att << "\n";
if(att<paw.crit){
dmg=((paw.acritdamage)*(1+sr*0.25)+paw.bcritdamage+koj*koj_damage*2*(1+pistinct_m));
damage+=dmg;
wdamage+=dmg;
//cout << "Paw (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
ooc_cd=1000;
}
}
}
else if(att<(paw.crit+paw.hit)){
dmg=(paw.adamage*(1+sr*0.25)+paw.bdamage+koj*koj_damage);
damage+=dmg;
wdamage+=dmg;
//cout << "Paw (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
ooc_cd=1000;
}
}
}
else{
//cout << "Paw (miss)" << ", Total damage: " << damage <<"\n";
}
}
// omen of clarity, when it proc I always shred.
if(gcd<=0){
if(ooc_proc==1){
att=randnum();
//cout <<"USING OMEN!" <<"\n";
//cout << "Attack roll: " << att << "\n";
if(att<shred.crit){
dmg=((shred.acritdamage)*(1+sr*0.25)+shred.bcritdamage)*(1+ret_m1*bdebuff+0.3*mdebuff)+koj*koj_damage*2*(1+pistinct_m);
damage+=dmg;
ydamage+=dmg;
cp+=2;
//cout << "shred (crit): " << dmg <<", Total damage: " << damage <<"\n";
ooc_proc=0;
ooc_timer=1000;
ooc_cd=1000;
gcd=100;
}
else if(att<(shred.crit+shred.hit)){
dmg=(shred.adamage*(1+sr*0.25)+shred.bdamage)*(1+ret_m1*bdebuff+0.3*mdebuff)+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
cp++;
//cout << "shred (normal): " << dmg <<", Total damage: " << damage <<"\n";
ooc_proc=0;
ooc_timer=1000;
ooc_cd=1000;
gcd=100;
}
else{
//cout << "shred (miss)" << ", Total damage: " << damage <<"\n";
ooc_proc=0;
ooc_timer=1000;
ooc_cd=1000;
gcd=100;
}
goto fine;
}
//Power Shifting
//Savage Roar
if((sr_timer<=100)&&(en<15)&&(cp>=sr_t)){
//cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//Mangle
if((mdebuff_timer<=100)&&(en<24)&&(cp<rip_t)){
//cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//Shred
if((mdebuff_timer>100)&&(en<32)&&(cp<rip_t)&&(bdebuff==1)){
//cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//RIP
if((mdebuff==1)&&(en<20)&&(cp>=rip_t)&&(rip_timer<100)){
//cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//Rake
if((mdebuff_timer>100)&&(en<15)&&(cp<fb_t)&&(bdebuff=0)&&(rk==1)){
// //cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//Ferocious Bite
if((en<20)&&(cp>=fb_t)&&(bdebuff=1)){
// //cout << "POWERSHIFTING, Lost " << en << " Energy";
en=40;
gcd=100;
pw+=1;
goto fine;
}
//decision making cycle
// savage roar?
if((sr_timer<=0)&&(en>=25)&&(cp>=sr_t)){
sr_timer=(6+cp*3)*100;
en-=25;
cp=0;
sr=1;
gcd=100;
if(ooc_timer<=0){
if(ooc_proc>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
goto fine;
}
//mangle?
if((mdebuff_timer<=0)&&(en>=mangle.energy)&&(cp<rip_t)){
att=randnum();
//cout << "Attack roll: " << att << "\n";
if(att<mangle.crit){
dmg=(mangle.acritdamage)*(1+sr*0.25)+mangle.bcritdamage+koj*koj_damage*2*(1+pistinct_m);
damage+=dmg;
ydamage+=dmg;
en-=mangle.energy;
cp+=2;
mdebuff=1;
mdebuff_timer=mdebuff_cd*100;
gcd=100;
//cout << "Mangle (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else if(att<(mangle.crit+mangle.hit)){
dmg=mangle.adamage*(1+sr*0.25)+mangle.bdamage+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
en-=mangle.energy;
cp++;
mdebuff=1;
mdebuff_timer=mdebuff_cd*100;
gcd=100;
//cout << "Mangle (normal): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else{
en-=mangle.energy;
gcd=100;
//cout << "Mangle (miss)" << ", Total damage: " << damage <<"\n";
}
goto fine;
}
//shred?
if((mdebuff_timer>0)&&(en>=shred.energy)&&(cp<rip_t)/*&&(bdebuff==1)*/){
att=randnum();
//cout << "Attack roll: " << att << "\n";
if(att<shred.crit){
dmg=((shred.acritdamage)*(1+sr*0.25)+shred.bcritdamage)*(1+ret_m1*bdebuff+0.3*mdebuff)+koj*koj_damage*2*(1+pistinct_m);
damage+=dmg;
ydamage+=dmg;
en-=shred.energy;
cp+=2;
gcd=100;
//cout << "shred (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else if(att<(shred.crit+shred.hit)){
dmg=(shred.adamage*(1+sr*0.25)+shred.bdamage)*(1+ret_m1*bdebuff+0.3*mdebuff)+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
en-=shred.energy;
cp++;
gcd=100;
//cout << "shred (normal): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else{
en-=shred.energy;
gcd=100;
//cout << "shred (miss)" << ", Total damage: " << damage <<"\n";
}
goto fine;
}
//rake?
if((mdebuff_timer>0)&&(en>=rake.energy)&&(cp<fb_t)&&(bdebuff==0)&&(rk==1)){
att=randnum();
// //cout << "Attack roll: " << att << "\n";
if(att<rake.crit){
dmg=((rake.acritdamage)*(1+sr*0.25)+rake.bcritdamage)*(1+0.3*mdebuff)+koj*koj_damage*2*(1+pistinct_m);
damage+=dmg;
ydamage+=dmg;
en-=rake.energy;
bdebuff=1;
bdebuff_timer=900;
cp+=2;
gcd=100;
// //cout << "rake (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else if(att<(rake.crit+rake.hit)){
dmg=(rake.adamage*(1+sr*0.25)+rake.bdamage)*(1+0.3*mdebuff)+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
en-=rake.energy;
bdebuff=1;
bdebuff_timer=900;
cp++;
gcd=100;
// //cout << "rake (normal): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else{
en-=rake.energy;
gcd=100;
// //cout << "rake (miss)" << ", Total damage: " << damage <<"\n";
}
goto fine;
}
//ferocious bite?
if((mdebuff_timer>0)&&(en>=fb.energy)&&(cp<fb_t)&&(bdebuff==1)){
att=randnum();
// //cout << "Attack roll: " << att << "\n";
if(att<fb.crit){
fb.adamage=(1-red)*((0.07*ap)*cp+(ap*0.002439)*(en-fb.energy))*1.1*(1+ferocity_m);
fb.acritdamage=fb.adamage*2*(1+pistinct_m);
fb.bdamage=(1-red)*(120+290*cp+(9.4)*(en-fb.energy))*1.1*(1+ferocity_m);
fb.bcritdamage=fb.bdamage*2*(1+pistinct_m);
fb.hit=dumb_yhit-fb.crit;
dmg=((fb.acritdamage)*(1+sr*0.25)+fb.bcritdamage)+koj*koj_damage*2*(1+pistinct_m);
damage+=dmg;
ydamage+=dmg;
en-=fb.energy;
cp+=2;
gcd=100;
// //cout << "fb (crit): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else if(att<(fb.crit+fb.hit)){
fb.adamage=(1-red)*((0.07*ap)*cp+(ap*0.002439)*(en-fb.energy))*1.1*(1+ferocity_m);
fb.bdamage=(1-red)*(120+290*cp+(9.4)*(en-fb.energy))*1.1*(1+ferocity_m);
dmg=(fb.adamage*(1+sr*0.25)+fb.bdamage)+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
en-=fb.energy;
cp++;
gcd=100;
// //cout << "fb (normal): " << dmg <<", Total damage: " << damage <<"\n";
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else{
en-=(int)((1-precision_m2)*fb.energy);
gcd=100;
// //cout << "fb (miss)" << ", Total damage: " << damage <<"\n";
}
goto fine;
}
//rip?
if((mdebuff==1)&&(en>=rip.energy)&&(cp>=rip_t)&&(rip_timer<1)){
att=randnum();
//cout << "Attack roll: " << att << "\n";
if(att<(rip.crit+rip.hit)){
dmg=(((ap)*0.01*cp)*6*1.1*(1+sr*0.25)+(39+99*cp)*6*1.1)*(1+(mdebuff+warrior)*0.3)+koj*koj_damage;
damage+=dmg;
ydamage+=dmg;
en-=rip.energy;
bdebuff=1;
bdebuff_timer=(12+rip_g*rip_glyph)*100;
rip_timer=(12+rip_g*rip_glyph)*100;
gcd=100;
//cout << "rip (bleed): " << dmg <<", Total damage: " << damage <<"\n";
cp=0;
if(ooc_timer<=0){
if(ooc_rate>randnum()){
ooc_proc=1;
ooc_timer=1000;
}
}
}
else{
en-=(int)((1-precision_m2)*rip.energy);
gcd=100;
//cout << "rip (miss)" << ", Total damage: " << damage <<"\n";
}
goto fine;
}
fine:;
}
}
damage2+=damage;
wdamage2+=wdamage;
ydamage2+=ydamage;
}
//Writing DPS, White and Yellow components.
cout << "\n" << "\n" << "DPS: " << (damage2)/(1.0*timer)<< ", White: " << (wdamage2)/(1.0*timer) <<", Yellow: " << (ydamage2)/(1.0*timer) << ", Bleed debuff uptime: " << (bdebuff_up)/(1.0*timer) <<"%" << ", Mangle debuff uptime: " << (mdebuff_up)/(1.0*timer) <<"%" << ", Powershifts each " << (timer*1.0)/(1.0*pw) << " seconds (average)" << "\n" << "\n";
return 0;
}
Last edited by nightcrowler : 07/30/08 at 1:27 AM.
Reason: Wrong code posted
On a side note now it seams that for certain value of ap and crit 3SR/4RIP is better than 2SR/4RIP. The change in energy regeneration alone give us 350+ dps increase!
Hmm, why is that? Do you mean the change that energy regeneration is now continuous?
The only major impact i can think of is on powershifting. Now we can powershift at "0" energy everytime, so we only lose 10 energy (due to 1s GCD). But it does not seem that big difference.
Infected Wounds - Your Shred, Maul, and Mangle attacks have a 33% chance to cause an Infected Wound in the target, The Infected Wound reduces the movement speed of the target by 10% and the attack speed by 3% (old version: 10%), Stacks up to 5 times.
rough nerf to the attack speed pvp wise... I wonder what the train of thought is behind it.
Hmm, why is that? Do you mean the change that energy regeneration is now continuous?
The only major impact i can think of is on powershifting. Now we can powershift at "0" energy everytime, so we only lose 10 energy (due to 1s GCD). But it does not seem that big difference.
Is there anything else?
It is very big indead, you will gain far more from powershifting than before (and also without it).
Originally Posted by Snarley
Some Changes in the latest Beta Build:
Infected Wounds - Your Shred, Maul, and Mangle attacks have a 33% chance to cause an Infected Wound in the target, The Infected Wound reduces the movement speed of the target by 10% and the attack speed by 3% (old version: 10%), Stacks up to 5 times.
rough nerf to the attack speed pvp wise... I wonder what the train of thought is behind it.
Can someone explain the new glyphs to me? I dont understand how they will work. If you activate one glyph, does that alteration of the spell becomes permanent, so if I use the swipe glyph, from now on all my swipes will hit 4 targets instead of 3? Or is the glyphs a one-time-use, if so, will they induce a global cooldown? Can I stack glyphs to make swipe hit 5 targets. How many glyphs can I have active at the same time? Lets say I will be a real hardcore raider, will I then have to stack in my inventory (if single use) as many swipe glyphs as I think I will use swipes in that raid?
Some of the glyphs seems so extremely overpowered if they are permanent, I just dont understand how they will be able to work (for instance turning Healing touch into Flash of light). When I read on mmo-champion, it seems like they already believe that everyone knows how glyphs will work and don't bother explaining it.
Can someone explain the new glyphs to me? I dont understand how they will work. If you activate one glyph, does that alteration of the spell becomes permanent, so if I use the swipe glyph, from now on all my swipes will hit 4 targets instead of 3? Or is the glyphs a one-time-use, if so, will they induce a global cooldown? Can I stack glyphs to make swipe hit 5 targets. How many glyphs can I have active at the same time? Lets say I will be a real hardcore raider, will I then have to stack in my inventory (if single use) as many swipe glyphs as I think I will use swipes in that raid?
Some of the glyphs seem so extremely overpowered if they are permanent, I just don’t understand how they will be able to work (for instance turning Healing touch into Flash of light). When I read on mmo-champion, it seems like they already believe that everyone knows how glyphs will work and don't bother explaining it.
It is very big indead, you will gain far more from powershifting than before (and also without it).
You can also powershift after every attack which is not very attractive today. With that change only the mana pool/regen limit the use of powershifting. This together with tigery fury and berserk will offer a great burst potential for pvp. (perhaps to great :P)
I played around with your code a little bit and with only 5 powershifts per minute (which is usable today), the white/yellow damage is approx the same as today. Rip damage is only 10-11% of all, so we really don`t have to worry about trauma. (it is only a 3-4% increase). Shred Damage goes up because of all the energy we get. Nice work btw.
From what I read. They are basically "gem" slots on your toon (not equipment). You get 6 slots (Inscriptionists get 7). 2 greater, 2 lesser (intermediate??) and 2 minor. They are permanent though you can replace them. Just like gems.
Wasn't one of the things that made powershifting work, the fact that ticks keep moving forward while you're in caster form, but only counted every 2 seconds? So if you timed it right, you would shift back into cat form with 20+40 energy and so lose none in the shifting process?
It seems worse now if shift in and start with just 40.
Wasn't one of the things that made powershifting work, the fact that ticks keep moving forward while you're in caster form, but only counted every 2 seconds? So if you timed it right, you would shift back into cat form with 20+40 energy and so lose none in the shifting process?
It seems worse now if shift in and start with just 40.
This was changed a little ways back. But powershifting remained viable because instant-reshift was enabled at the same time (I think).
This was changed a little ways back. But powershifting remained viable because instant-reshift was enabled at the same time (I think).
As he said.
For istance with the new talent and energy mechanics, powershifting when needed (this is how the program works basically) I reach (with the stats wrote down in my previous post) about 3200 dps. Without powershifting at all I reach only 2400 dps. That's basically a 33% increase in dps (all yellow).
They've started a thread on the beta forums about which bosses are immune to IW and which aren't. So it looks like both sources were correct (some bosses are currently immune to IW).
As a note to my previous post, it seams that given particular AP and crit % 2SR/5RIP could be better, but only if you "always" powershift (prolly usable in short fight), If you can't powershift like a mad, 2SR/4RIP is basically always the way to go.
I think that may hinge on when furor and wolfshead give you energy. On Live they lag behind by about a sec. I'll get on beta in a few min and edit in here how that actually works.
EDIT: Wow, this is pretty cool:
A) Wolfshead seems to have been heavily nerfed, though I can't exactly tell how. I saw it work a couple times, but its effect either now has a long cooldown, or only a small chance of working, or else how much energy you get from it scales down with level, or something. With how fast energy flies by now, and no addon to track this, I couldn't tell for sure; it may have been giving an extra 5 energy on shifts or something, but it certainly wasn't a noticeable difference to me.
B) There's still a ~1sec lag on Furor... but it only seems to be on switching to cat form from fully being in caster form. Just using a powershift macro in cat form, it seemed to be instant. My energy never hit 0 when shifting in cat form. And it doesn't lose the energy you regen during the powershift latency anymore, either. You tell it to powershift, with a 300ms ping, and 300ms later, you've got 43 energy, it looked like to me.
C) Furor rage is broken in this build... I think. Shifting into bear gives you 1 rage, whether with just Furor, or with Wolfshead too. However, I think it may still be counting the rage, server-side, or something, because several times I'd powershift and then get hit by some tiny attack from a non-elite 70 and it would jump me up to like 25 rage. Not sure about this, whatever the case is, it's not working right, so best to just wait for them to fix it.
D) I was testing this up in Skettis. The fluid energy regen is really really awesome. I was able to kill the Skettis Forestragers (the big tree guys, I farm them on live for herbs all the time) using 29energy mangles combined with Tigersfury and 2 powershifts, and had a mangle/powershift on every single GCD, as each GCD ended. I used berserk on one too, and could barely use my energy fast enough.
Infected Wounds - Your Shred, Maul, and Mangle attacks have a 33% chance to cause an Infected Wound in the target, The Infected Wound reduces the movement speed of the target by 10% and the attack speed by 3% (old version: 10%), Stacks up to 5 times.
rough nerf to the attack speed pvp wise... I wonder what the train of thought is behind it.
The old version was 4% for the attack speed (datamined), only the tooltip said 10%.
The thinking is almost certainly that with 10 man raid progression to the bitter end, it just does not work to have only one class capable of applying a significant attack speed debuff unless you want to make that one class essential in all 10 man raids, and that's plain bad design since, with 10 classes to choose from, a significant number of 10 man raids will run with one or two classes missing, and making a single class a point failure would really hurt many raids over time. If it is changed to 3% per application now, that puts warriors at 20%, paladins at 20%, and death knights and druids at 15%, guaranteeing that no matter which tank you are using, you will have access to a significant attack speed debuff on boss fights.
Now, infected wounds being what it is (a disease), it would be unsurprising to see some bosses immune to it at least on launch of the expansion, same way that (logically, we'll all admit), several bosses were immune to bleeding effects at the start of TBC, only have to have said immunity removed when it became clear just how much it was hurting us.
That's really exciting Astrylian, did you also notice a 3min cd challenging roar? There are also people talking about melee dps damage being out of whack (armor not being applied correctly or somesuch) right now, any comments on that?
I specced feral last night for the first time in beta, and it was kind of absurd. I'm wearing all T6/BT gear, basically a mix of stam and agi for casual tanking (I don't have a feral dps set), and was killing level 70-71 mobs within a single energy bar. I think I topped out at a 7.6k FB crit. It was pretty crazy.
I'm 95% certain that the Challenging Shout cooldown reduction to 3min has been there for 2 weeks, just the major news sites never said anything about it til now. I did Utgard last week, and used it frivolously, enjoying the short cooldown.
I specced feral last night for the first time in beta, and it was kind of absurd. I'm wearing all T6/BT gear, basically a mix of stam and agi for casual tanking (I don't have a feral dps set), and was killing level 70-71 mobs within a single energy bar. I think I topped out at a 7.6k FB crit. It was pretty crazy.
Don't get too excited. There are reports on the beta forums that armor values are currently bugged at zero and resulting in much higher-than-normal physical damage.
Don't get too excited. There are reports on the beta forums that armor values are currently bugged at zero and resulting in much higher-than-normal physical damage.
Yeah I know, I was replying to the "There are also people talking about melee dps damage being out of whack (armor not being applied correctly or somesuch) right now, any comments on that?" question right before my post. Guess I should have quoted it.
I was wondering about SotF, would it be possible to leave one point out? I reckon we still get some defence from items as rings, necklaces and cloaks? putting that one point in infected wounds should be enough to get a stack up and running. it would save some precious talent points.