{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);
}
}