Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Druids

Closed Thread
 
LinkBack Thread Tools
Old 07/29/08, 4:58 AM   #576
Daboran
King Hippo
 
Daboran's Avatar
 
Tauren Druid
 
Twisting Nether (EU)
Originally Posted by Snarley View Post
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.

Offline
Old 07/29/08, 5:33 AM   #577
nightcrowler
Don Flamenco
 
nightcrowler's Avatar
 
Night Elf Druid
 
Runetotem (EU)
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

Offline
Old 07/29/08, 7:07 AM   #578
manapaws
Piston Honda
 
Tauren Druid
 
Blackrock
Thanks Night,

At first glance that looks awesome. I don't have a compiler on this PC to test it out though, anyone want to send me the executable?

Offline
Old 07/29/08, 7:47 AM   #579
nightcrowler
Don Flamenco
 
nightcrowler's Avatar
 
Night Elf Druid
 
Runetotem (EU)
Originally Posted by manapaws View Post
Thanks Night,

At first glance that looks awesome. I don't have a compiler on this PC to test it out though, anyone want to send me the executable?

I've made some correction into the original post.

Badly it doesn't have atm a keybord imput, it's all hardcoded, so if you want to change something you should code it down. I'll make an interface soon

Originally Posted by nightcrowler View Post

Powershifts each 4.19082 seconds (average)
I know it's too much. I need to code mana expense and mana regeneration, does anyone has some numbers?

Offline
Old 07/29/08, 7:55 AM   #580
Inaiwae
Piston Honda
 
Night Elf Druid
 
Sylvanas (EU)
Originally Posted by nightcrowler View Post
He...

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.

Is there anything else?

Offline
Old 07/29/08, 8:18 AM   #581
Snarley
Von Kaiser
 
Night Elf Druid
 
Mannoroth
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.

Source World of Raids | World of Warcraft News Guides Guilds & Raid Progression

Offline
Old 07/29/08, 9:19 AM   #582
nightcrowler
Don Flamenco
 
nightcrowler's Avatar
 
Night Elf Druid
 
Runetotem (EU)
Originally Posted by Inaiwae View Post
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 View Post
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.

Source World of Raids | World of Warcraft News Guides Guilds & Raid Progression
Because now it can work on pve (bosses) like the ability of paladins e warriors

Offline
Old 07/29/08, 9:30 AM   #583
phellan
Glass Joe
 
Tauren Druid
 
Frostmane (EU)
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.

Offline
Old 07/29/08, 9:46 AM   #584
Snarley
Von Kaiser
 
Night Elf Druid
 
Mannoroth
Originally Posted by phellan View Post
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.
Here is a great explanation of how Glyphs work.

Glyph of the White Bear Scroll down a bit in the post and someone has a nice screenshot.

The jyst being 2 Major, 2 Lesser, 2 Minor

Inscriptionists get 1 extra (not sure whether its an extra major, lesser or minor though)

Last edited by Snarley : 07/29/08 at 11:21 AM.

Offline
Old 07/29/08, 10:26 AM   #585
angi
Von Kaiser
 
Night Elf Druid
 
Kil'Jaeden (EU)
Originally Posted by nightcrowler View Post
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.

Offline
Old 07/29/08, 11:11 AM   #586
tlbj6142
Piston Honda
 
Tauren Druid
 
Steamwheedle Cartel
Originally Posted by phellan View Post
Can someone explain the new glyphs to me?
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.

Offline
Old 07/29/08, 11:45 AM   #587
Septus
Piston Honda
 
Blood Elf Death Knight
 
Ravenholdt
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.

Offline
Old 07/29/08, 11:46 AM   #588
 Hamlet
<Druid Trainer> Emeritus
 
Hamlet's Avatar
 
Tauren Druid
 
Mal'Ganis
Originally Posted by Septus View Post
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).

Links: Moonkin Resto WoWMath Twitter YouTube
Please don't PM requests for advice on UI or specific gear choices.

United States Offline
Old 07/29/08, 12:33 PM   #589
nightcrowler
Don Flamenco
 
nightcrowler's Avatar
 
Night Elf Druid
 
Runetotem (EU)
Originally Posted by Arawethion View Post
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).

Offline
Old 07/29/08, 12:39 PM   #590
loos
Von Kaiser
 
Night Elf Druid
 
Shadowsong
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).

Offline
Old 07/29/08, 12:41 PM   #591
nightcrowler
Don Flamenco
 
nightcrowler's Avatar
 
Night Elf Druid
 
Runetotem (EU)
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.

Offline
Old 07/29/08, 2:27 PM   #592
Wildstyle
Glass Joe
 
Tauren Druid
 
Darkspear (EU)
With these changes wouldn't Wolfshead Helm - Items - WOWDB possibly be better than lvl 80 epics?

Offline
Old 07/29/08, 2:41 PM   #593
Astrylian
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Stormrage
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.

Last edited by Astrylian : 07/29/08 at 4:04 PM.

Rawr!

Offline
Old 07/29/08, 5:14 PM   #594
Deliverance
Von Kaiser
 
Night Elf Druid
 
Tarren Mill (EU)
Originally Posted by Snarley View Post
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.

Offline
Old 07/29/08, 5:43 PM   #595
wuffles
Bald Bull
 
wuffles's Avatar
 
Tauren Druid
 
Mal'Ganis
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?

Offline
Old 07/29/08, 5:46 PM   #596
Melador
Soda Popinski
 
Melador's Avatar
 
Troll Druid
 
Mal'Ganis
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.

United States Online
Old 07/29/08, 6:28 PM   #597
Astrylian
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Stormrage
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.

Rawr!

Offline
Old 07/29/08, 6:53 PM   #598
Ravager
Piston Honda
 
Ravager's Avatar
 
Undead Mage
 
Mal'Ganis
Originally Posted by Melador View Post
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.

Offline
Old 07/29/08, 7:07 PM   #599
Melador
Soda Popinski
 
Melador's Avatar
 
Troll Druid
 
Mal'Ganis
Originally Posted by Ravager View Post
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.

United States Online
Old 07/29/08, 7:22 PM   #600
arlièn
Glass Joe
 
Night Elf Druid
 
Dunemaul (EU)
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.

Offline
Closed Thread

Go Back   Elitist Jerks » Druids

Thread Tools