/** * 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)); } }
/** * 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); }