Yes, because it's a brute force that sacrifices PRC functionality, such as weapon finesse applying to melee touch attacks, ray weapon spec, who knows what else. But if you're playing in a campaign where AC bonuses are used, abused, and abused some more, you come out on top. It's been awhile, but a quick diff and I think the only thing I did was change prc_inc_sp_tch.nss in include, replacing the two occurrences of the GetAttackRoll calls, namely:
int nResult = GetAttackRoll(oTarget,oCaster,OBJECT_INVALID,0,nAttackBonus,0,nDisplayFeedback,0.0,TOUCH_ATTACK_RANGED_SPELL); //line 17
int nResult = GetAttackRoll(oTarget,oCaster,OBJECT_INVALID,0,nAttackBonus,0,nDisplayFeedback,0.0,TOUCH_ATTACK_MELEE_SPELL); //line 32
with these two code blocks respectively:
int nResult;
if (oCaster == OBJECT_SELF)
{
nResult = TouchAttackRanged(oTarget, nDisplayFeedback);
}
else
{
nResult = GetAttackRoll(oTarget,oCaster,OBJECT_INVALID,0,nAttackBonus,0,nDisplayFeedback,0.0,TOUCH_ATTACK_RANGED_SPELL);
}
int nResult;
if (oCaster == OBJECT_SELF)
{
nResult = TouchAttackMelee(oTarget, nDisplayFeedback);
}
else
{
nResult = GetAttackRoll(oTarget,oCaster,OBJECT_INVALID,0,nAttackBonus,0,nDisplayFeedback,0.0,TOUCH_ATTACK_MELEE_SPELL);
}
Now, I remember this as working right, but looking at it I can't really remember what the purpose is of that if statement. So who knows...