change
+ private static final String ACUMULATE_SKILLS_FOR_CHAR_SUB = "SELECT skill_id,skill_level FROM character_skills WHERE charId=? ORDER BY skill_id , skill_level ASC";
to
+ private static final String ACUMULATE_SKILLS_FOR_CHAR_SUB = "SELECT skill_id,skill_level,class_index FROM character_skills WHERE charId=? ORDER BY class_index ,skill_id , skill_level ASC";
and
while (rset.next())
{
int id = rset.getInt("skill_id");
int level = rset.getInt("skill_level");
if (id > 9000 && id < 9007)
continue; // fake skills for base stats
// Create a L2Skill object for each record
L2Skill skill = SkillTable.getInstance().getInfo(id, level);
// Add the L2Skill object to the L2Character _skills and its Func objects to the calculator set of the L2Character
super.addSkill(skill);
}
to
while (rset.next())
{
int id = rset.getInt("skill_id");
int level = rset.getInt("skill_level");
int classindex = rset.getInt("class_index");
if (id > 9000 && id < 9007)
continue; // fake skills for base stats
// Create a L2Skill object for each record
L2Skill skill = SkillTable.getInstance().getInfo(id, level);
//check if it is passive and now of our class
if (skill.isPassive() && classindex != getClassIndex() )
continue;
// Add the L2Skill object to the L2Character _skills and its Func objects to the calculator set of the L2Character
super.addSkill(skill);
}
im not completely sure of this (ACUMULATE_SKILLS_FOR_CHAR_SUB most of all) but maybe it will work :)