{attack.cpp}
~2631, right after the definition of Mob::TryCriticalHit, add:
Code:
bool slayUndeadCrit = false;
A few lines down, find the following:
Code:
if(defender && defender->GetBodyType() == BT_Undead || defender->GetBodyType() == BT_SummonedUndead || defender->GetBodyType() == BT_Vampire){
switch(GetAA(aaSlayUndead)){
case 1:
critMod += 33;
break;
case 2:
critMod += 66;
break;
case 3:
critMod += 100;
break;
}
}
And add the following immediately after the switch close bracket:
Code:
slayUndeadCrit = true;
Then, a few more lines down find the following:
Code:
if(critChance > 0){
if(MakeRandomFloat(0, 1) <= critChance)
{
And add immediately below:
Code:
if (slayUndeadCrit)
{
damage = (damage * (critMod * 1.65)) / 100;
entity_list.MessageClose(this, false, 200, MT_CritMelee, "%s cleanses %s target!(%d)", GetCleanName(), this->GetGender() == 0 ? "his" : "her", damage);
return;
}