Oof. I was hoping to avoid something like that, but I'll try.
I take it this part from prc_inc_function is what I need to change:
void ScrubPCSkin(object oPC, object oSkin)
{
int nGeneration = PRC_NextGeneration(GetLocalInt(oPC, PRC_ScrubPCSkin_Generation));
if (DEBUG > 1) DoDebug("ScrubPCSkin Generation: " + IntToString(nGeneration));
SetLocalInt(oPC, PRC_ScrubPCSkin_Generation, nGeneration);
int iCode = GetHasFeat(FEAT_SF_CODE,oPC);
int st;
if(!(/*GetIsPolyMorphedOrShifted(oPC) || */GetIsObjectValid(GetMaster(oPC))))
{
itemproperty ip = GetFirstItemProperty(oSkin);
while(GetIsItemPropertyValid(ip))
{
// Insert Logic here to determine if we spare a property
if(GetItemPropertyType(ip) == ITEM_PROPERTY_BONUS_FEAT)
{
// Check for specific Bonus Feats
// Reference iprp_feats.2da
st = GetItemPropertySubType(ip);
// Spare 400 through 570 and 398 -- epic spells & spell effects
//also spare the new spellbook feats (1000-12000 & 17701-24704
//also spare the psionic, trunaming, tob, invocation feats (12000-16000)
// spare template, tob stuff (16300-17700)
// also spare Pnp spellschool feats and PRC options feat (231-249 & 229)
// changed by fluffyamoeba so that iprp weapon specialization, dev crit, epic weapon focus, epic weapon spec
// overwhelming crit and weapon of choice are no longer skipped.
// 259 - psionic focus
// 141 - shadowmaster shades, 142-151 bonus domains casting feats
if ((st < 400 || st > 570)
&& st != 398
&& (st < 1000 || st > 15999)
//&& (st < 1000 || st > 13999)
//&& (st < 14501 || st > 15999)
&& (st < 16300 || st > 24704)
&& (st < 223 || st > 226) //draconic feats
&& (st < 229 || st > 249)
&& st != 259
&& (st < 141 || st > 151)
&& ( (st == IP_CONST_FEAT_PRC_POWER_ATTACK_QUICKS_RADIAL ||
st == IP_CONST_FEAT_POWER_ATTACK_SINGLE_RADIAL ||
st == IP_CONST_FEAT_POWER_ATTACK_FIVES_RADIAL) ? // Remove the PRC Power Attack radials if the character no longer has Power Attack
!GetHasFeat(FEAT_POWER_ATTACK, oPC) :
TRUE // If the feat is not relevant to this clause, always pass
)
)
RemoveItemProperty(oSkin, ip);
}
else
RemoveItemProperty(oSkin, ip);
// Get the next property
ip = GetNextItemProperty(oSkin);
}
}
If I un-comment this part: //&& (st < 1000 || st > 13999) and change the numbers in parenthesis to 1087 and 1095 (the range of the horse-related feats on the feats.2da), will that work? And which scripts besides prc_rest, prc_onenter, and prc_levelup call the ScrubPCSkin function?