public List<Integer> getAvailableSkills(L2Summon cha) { List<Integer> skillIds = new ArrayList<>(); if (!_skillTrees.containsKey(cha.getId())) { LOGGER.warning( getClass().getSimpleName() + ": Pet id " + cha.getId() + " does not have any skills assigned."); return skillIds; } Collection<L2PetSkillLearn> skills = _skillTrees.get(cha.getId()).values(); for (L2PetSkillLearn temp : skills) { if (skillIds.contains(temp.getId())) { continue; } skillIds.add(temp.getId()); } return skillIds; }
public int getAvailableLevel(L2Summon cha, int skillId) { int lvl = 0; if (!_skillTrees.containsKey(cha.getId())) { LOGGER.warning( getClass().getSimpleName() + ": Pet id " + cha.getId() + " does not have any skills assigned."); return lvl; } Collection<L2PetSkillLearn> skills = _skillTrees.get(cha.getId()).values(); for (L2PetSkillLearn temp : skills) { if (temp.getId() != skillId) { continue; } if (temp.getLevel() == 0) { if (cha.getLevel() < 70) { lvl = (cha.getLevel() / 10); if (lvl <= 0) { lvl = 1; } } else { lvl = (7 + ((cha.getLevel() - 70) / 5)); } // formula usable for skill that have 10 or more skill levels int maxLvl = SkillData.getInstance().getMaxLevel(temp.getId()); if (lvl > maxLvl) { lvl = maxLvl; } break; } else if (temp.getMinLevel() <= cha.getLevel()) { if (temp.getLevel() > lvl) { lvl = temp.getLevel(); } } } return lvl; }