Fix for dual class skills (Exalted skills).

Thanks to nasseka.
This commit is contained in:
MobiusDevelopment 2021-09-23 21:16:59 +00:00
parent 17cfba1ead
commit 46e8da1621
10 changed files with 90 additions and 260 deletions

View File

@ -7370,23 +7370,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7539,8 +7536,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7563,20 +7558,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7599,8 +7580,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7377,23 +7377,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7546,8 +7543,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7570,20 +7565,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7606,8 +7587,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7379,23 +7379,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7548,8 +7545,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7572,20 +7567,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7608,8 +7589,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7374,23 +7374,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7543,8 +7540,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7567,20 +7562,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7603,8 +7584,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7356,23 +7356,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7525,8 +7522,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7549,20 +7544,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7585,8 +7566,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7356,23 +7356,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7525,8 +7522,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7549,20 +7544,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7585,8 +7566,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7357,23 +7357,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7526,8 +7523,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7550,20 +7545,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7586,8 +7567,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7371,23 +7371,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7540,8 +7537,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7564,20 +7559,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7600,8 +7581,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7473,23 +7473,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7642,8 +7639,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7666,20 +7661,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7702,8 +7683,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}

View File

@ -7499,23 +7499,20 @@ public class PlayerInstance extends Playable
if (store)
{
storeSkill(newSkill, oldSkill, -1);
if (CommonUtil.contains(DUAL_CLASS_SKILLS, newSkill.getId()))
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
if (!dualClassSkills.contains(newSkill))
for (Skill dualSkill : dualClassSkills)
{
for (Skill dualSkill : dualClassSkills)
if (dualSkill.getId() == newSkill.getId())
{
if (dualSkill.getId() == newSkill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.remove(dualSkill);
break;
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
dualClassSkills.add(newSkill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
}
return oldSkill;
@ -7668,8 +7665,6 @@ public class PlayerInstance extends Playable
*/
private void restoreSkills()
{
final List<Skill> dualClassSkills = getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, new ArrayList<>());
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement = con.prepareStatement(RESTORE_SKILLS_FOR_CHAR))
{
@ -7692,20 +7687,6 @@ public class PlayerInstance extends Playable
continue;
}
if (CommonUtil.contains(DUAL_CLASS_SKILLS, id) && !dualClassSkills.contains(skill))
{
for (Skill dualSkill : dualClassSkills)
{
if (dualSkill.getId() == skill.getId())
{
dualClassSkills.remove(dualSkill);
break;
}
}
dualClassSkills.add(skill);
getVariables().set(KNOWN_DUAL_SKILLS_VAR, dualClassSkills);
}
// Add the Skill object to the Creature _skills and its Func objects to the calculator set of the Creature
addSkill(skill);
@ -7728,8 +7709,10 @@ public class PlayerInstance extends Playable
// Learn known dualclass skills.
if (isDualClassActive() || !isSubClassActive())
{
final List<Skill> dualClassSkills = new ArrayList<>(getVariables().getList(KNOWN_DUAL_SKILLS_VAR, Skill.class, Collections.emptyList()));
for (Skill skill : dualClassSkills)
{
removeSkill(skill);
addSkill(skill, true);
}
}