Example #1
0
  /**
   * Begins an experience gain. The amount will be affected by skill modifiers, global rate and
   * perks
   *
   * @param skill Skill being used
   * @param xp Experience amount to process
   */
  public void beginUnsharedXpGain(SkillType skill, float xp, XPGainReason xpGainReason) {
    applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason);

    if (party == null) {
      return;
    }

    if (!Config.getInstance().getPartyXpNearMembersNeeded()
        || !PartyManager.getNearMembers(this).isEmpty()) {
      party.applyXpGain(modifyXpGain(skill, xp));
    }
  }
Example #2
0
  /**
   * Applies an experience gain
   *
   * @param skillType Skill being used
   * @param xp Experience amount to add
   */
  public void applyXpGain(SkillType skillType, float xp, XPGainReason xpGainReason) {
    if (!skillType.getPermissions(player)) {
      return;
    }

    if (skillType.isChildSkill()) {
      Set<SkillType> parentSkills = FamilyTree.getParents(skillType);

      for (SkillType parentSkill : parentSkills) {
        applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason);
      }

      return;
    }

    if (!EventUtils.handleXpGainEvent(player, skillType, xp, xpGainReason)) {
      return;
    }

    isUsingUnarmed = (skillType == SkillType.UNARMED);
    checkXp(skillType, xpGainReason);
  }