What module are you playing? I haven't really played the class but at least I never got my feats at the wrong level. That I can't pick a second insightful strike at lvl 12 happens for me, too, though. Looking at the code in prc_enforce_feat.nss, I can't quite figure out why.
int Swordsage(object oPC = OBJECT_SELF)
{
int nClass = GetLevelByClass(CLASS_TYPE_SWORDSAGE, oPC);
if(nClass)
{
int nWF = GetHasFeat(FEAT_SS_DF_WF_DW, oPC)
+ GetHasFeat(FEAT_SS_DF_WF_DM, oPC)
+ GetHasFeat(FEAT_SS_DF_WF_SS, oPC)
+ GetHasFeat(FEAT_SS_DF_WF_SH, oPC)
+ GetHasFeat(FEAT_SS_DF_WF_SD, oPC)
+ GetHasFeat(FEAT_SS_DF_WF_TC, oPC);
if(nWF > 1)
{
FloatingTextStringOnCreature("You may only have one Discipline Focus (Weapon Focus). Please reselect your feats.", oPC, FALSE);
return FALSE;
}
if(nClass > 3)
{
int nIS = GetHasFeat(FEAT_SS_DF_IS_DW, oPC)
+ GetHasFeat(FEAT_SS_DF_IS_DM, oPC)
+ GetHasFeat(FEAT_SS_DF_IS_SS, oPC)
+ GetHasFeat(FEAT_SS_DF_IS_SH, oPC)
+ GetHasFeat(FEAT_SS_DF_IS_SD, oPC)
+ GetHasFeat(FEAT_SS_DF_IS_TC, oPC);
if((nIS > 1 && nClass < 12)
|| (nIS > 2 && nClass > 11))
{
FloatingTextStringOnCreature("You do not have the correct amount of Discipline Focus (Insightful Strike). Please reselect your feats.", oPC, FALSE);
return FALSE;
}
}
if(nClass > 7)
{
int nDS = GetHasFeat(FEAT_SS_DF_DS_DW, oPC)
+ GetHasFeat(FEAT_SS_DF_DS_DM, oPC)
+ GetHasFeat(FEAT_SS_DF_DS_SS, oPC)
+ GetHasFeat(FEAT_SS_DF_DS_SH, oPC)
+ GetHasFeat(FEAT_SS_DF_DS_SD, oPC)
+ GetHasFeat(FEAT_SS_DF_DS_TC, oPC);
if((nDS > 1 && nClass < 16)
|| (nDS > 2 && nClass > 15))
{
FloatingTextStringOnCreature("You do not have the correct amount of Discipline Focus (Defensive Stance). Please reselect your feats.", oPC, FALSE);
return FALSE;
}
}
}
return TRUE;
}