コード例 #1
0
 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;
 }
コード例 #2
0
  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;
  }