View Single Post
  #1  
Old 10-12-2008, 09:39 PM
seveianrex
Sarnak
 
Join Date: Sep 2008
Location: asdf
Posts: 60
Default Critical Affliction AA

{spell_effects.cpp}

~ line 2671, in Mob:oBuffTic, there should be this set of code:

Code:
			//TODO: account for AAs and stuff

			//dont know what the signon this should be... - makes sense
			if (caster && caster->IsClient() &&
				IsDetrimentalSpell(spell_id) &&
				effect_value < 0) {

				sint32 modifier = 100;
				modifier += caster->CastToClient()->GetFocusEffect(focusImprovedDamage, spell_id);

				if(caster){
					if(caster->IsClient() && !caster->CastToClient()->GetFeigned()){
						AddToHateList(caster, -effect_value);
					}
					else if(!caster->IsClient())
						AddToHateList(caster, -effect_value);
				}

				effect_value = effect_value * modifier / 100;
Insert directly underneath the last line:

Code:
// 2008-10-12 seveian
				float critChance = 0.00f;

				switch(GetAA(aaCriticalAffliction))
				{
					case 1:
						critChance += 0.03f;
						break;
					case 2:
						critChance += 0.06f;
						break;
					case 3:
						critChance += 0.10f;
						break;
					default:
						break;
				}

				switch (GetAA(aaImprovedCriticalAffliction))
				{
					case 1:
						critChance += 0.03f;
						break;
					case 2:
						critChance += 0.06f;
						break;
					case 3:
						critChance += 0.10f;
						break;
					default:
						break;
				}

				// since DOTs are the Necromancer forte, give an innate bonus
				// however, no chance to crit unless they've trained atleast one level in the AA first
				if (GetClass() == NECROMANCER && critChance > 0.0f){
					critChance += 0.05f;
				}

				if (critChance > 0.0f){
					if (MakeRandomFloat(0, 1) <= critChance)
					{
						effect_value = (effect_value * 2);
					}
				}
Reply With Quote