|
@@ -503,6 +503,7 @@ public final class SkillTreesData extends DocumentParser
|
|
{
|
|
{
|
|
final List<L2SkillLearn> result = new ArrayList<>();
|
|
final List<L2SkillLearn> result = new ArrayList<>();
|
|
final Map<Integer, L2SkillLearn> skills = getCompleteClassSkillTree(classId);
|
|
final Map<Integer, L2SkillLearn> skills = getCompleteClassSkillTree(classId);
|
|
|
|
+
|
|
if (skills.isEmpty())
|
|
if (skills.isEmpty())
|
|
{
|
|
{
|
|
// The Skill Tree for this class is undefined.
|
|
// The Skill Tree for this class is undefined.
|
|
@@ -512,6 +513,11 @@ public final class SkillTreesData extends DocumentParser
|
|
|
|
|
|
for (L2SkillLearn skill : skills.values())
|
|
for (L2SkillLearn skill : skills.values())
|
|
{
|
|
{
|
|
|
|
+ if (((skill.getSkillId() == CommonSkill.DIVINE_INSPIRATION.getId()) && !Config.AUTO_LEARN_DIVINE_INSPIRATION && !player.isGM()))
|
|
|
|
+ {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (((includeAutoGet && skill.isAutoGet()) || skill.isLearnedByNpc() || (includeByFs && skill.isLearnedByFS())) && (player.getLevel() >= skill.getGetLevel()))
|
|
if (((includeAutoGet && skill.isAutoGet()) || skill.isLearnedByNpc() || (includeByFs && skill.isLearnedByFS())) && (player.getLevel() >= skill.getGetLevel()))
|
|
{
|
|
{
|
|
final Skill oldSkill = holder.getKnownSkill(skill.getSkillId());
|
|
final Skill oldSkill = holder.getKnownSkill(skill.getSkillId());
|
|
@@ -534,20 +540,13 @@ public final class SkillTreesData extends DocumentParser
|
|
public Collection<Skill> getAllAvailableSkills(L2PcInstance player, ClassId classId, boolean includeByFs, boolean includeAutoGet)
|
|
public Collection<Skill> getAllAvailableSkills(L2PcInstance player, ClassId classId, boolean includeByFs, boolean includeAutoGet)
|
|
{
|
|
{
|
|
// Get available skills
|
|
// Get available skills
|
|
- int unLearnable = 0;
|
|
|
|
PlayerSkillHolder holder = new PlayerSkillHolder(player);
|
|
PlayerSkillHolder holder = new PlayerSkillHolder(player);
|
|
List<L2SkillLearn> learnable = getAvailableSkills(player, classId, includeByFs, includeAutoGet, holder);
|
|
List<L2SkillLearn> learnable = getAvailableSkills(player, classId, includeByFs, includeAutoGet, holder);
|
|
- while (learnable.size() > unLearnable)
|
|
|
|
|
|
+ while (learnable.size() > 0)
|
|
{
|
|
{
|
|
for (L2SkillLearn s : learnable)
|
|
for (L2SkillLearn s : learnable)
|
|
{
|
|
{
|
|
Skill sk = SkillData.getInstance().getSkill(s.getSkillId(), s.getSkillLevel());
|
|
Skill sk = SkillData.getInstance().getSkill(s.getSkillId(), s.getSkillLevel());
|
|
- if ((sk == null) || ((sk.getId() == CommonSkill.DIVINE_INSPIRATION.getId()) && !Config.AUTO_LEARN_DIVINE_INSPIRATION && !player.isGM()))
|
|
|
|
- {
|
|
|
|
- unLearnable++;
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
holder.addSkill(sk);
|
|
holder.addSkill(sk);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -731,6 +730,7 @@ public final class SkillTreesData extends DocumentParser
|
|
public List<L2SkillLearn> getAvailablePledgeSkills(L2Clan clan)
|
|
public List<L2SkillLearn> getAvailablePledgeSkills(L2Clan clan)
|
|
{
|
|
{
|
|
final List<L2SkillLearn> result = new ArrayList<>();
|
|
final List<L2SkillLearn> result = new ArrayList<>();
|
|
|
|
+
|
|
for (L2SkillLearn skill : _pledgeSkillTree.values())
|
|
for (L2SkillLearn skill : _pledgeSkillTree.values())
|
|
{
|
|
{
|
|
if (!skill.isResidencialSkill() && (clan.getLevel() >= skill.getGetLevel()))
|
|
if (!skill.isResidencialSkill() && (clan.getLevel() >= skill.getGetLevel()))
|
|
@@ -738,7 +738,7 @@ public final class SkillTreesData extends DocumentParser
|
|
final Skill oldSkill = clan.getSkills().get(skill.getSkillId());
|
|
final Skill oldSkill = clan.getSkills().get(skill.getSkillId());
|
|
if (oldSkill != null)
|
|
if (oldSkill != null)
|
|
{
|
|
{
|
|
- if (oldSkill.getLevel() == (skill.getSkillLevel() - 1))
|
|
|
|
|
|
+ if (oldSkill.getLevel() < skill.getSkillLevel())
|
|
{
|
|
{
|
|
result.add(skill);
|
|
result.add(skill);
|
|
}
|
|
}
|
|
@@ -752,6 +752,44 @@ public final class SkillTreesData extends DocumentParser
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Gets the available pledge skills.
|
|
|
|
+ * @param clan the pledge skill learning clan
|
|
|
|
+ * @param includeSquad if squad skill will be added too
|
|
|
|
+ * @return all the available pledge skills for a given {@code clan}
|
|
|
|
+ */
|
|
|
|
+ public Map<Integer, L2SkillLearn> getMaxPledgeSkills(L2Clan clan, boolean includeSquad)
|
|
|
|
+ {
|
|
|
|
+ final Map<Integer, L2SkillLearn> result = new HashMap<>();
|
|
|
|
+ for (L2SkillLearn skill : _pledgeSkillTree.values())
|
|
|
|
+ {
|
|
|
|
+ if (!skill.isResidencialSkill() && (clan.getLevel() >= skill.getGetLevel()))
|
|
|
|
+ {
|
|
|
|
+ final Skill oldSkill = clan.getSkills().get(skill.getSkillId());
|
|
|
|
+ if ((oldSkill == null) || (oldSkill.getLevel() < skill.getSkillLevel()))
|
|
|
|
+ {
|
|
|
|
+ result.put(skill.getSkillId(), skill);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (includeSquad)
|
|
|
|
+ {
|
|
|
|
+ for (L2SkillLearn skill : _subPledgeSkillTree.values())
|
|
|
|
+ {
|
|
|
|
+ if ((clan.getLevel() >= skill.getGetLevel()))
|
|
|
|
+ {
|
|
|
|
+ final Skill oldSkill = clan.getSkills().get(skill.getSkillId());
|
|
|
|
+ if ((oldSkill == null) || (oldSkill.getLevel() < skill.getSkillLevel()))
|
|
|
|
+ {
|
|
|
|
+ result.put(skill.getSkillId(), skill);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Gets the available sub pledge skills.
|
|
* Gets the available sub pledge skills.
|
|
* @param clan the sub-pledge skill learning clan
|
|
* @param clan the sub-pledge skill learning clan
|