Skillbook announcer + isInJobTree fix

Abdula is now the Skillbook announcer NPC. Fixed some inconguencies with
the isInJobTree function, now properly returning if a skill id does make
presence on a player's current job path or not.
This commit is contained in:
ronancpl
2017-06-05 21:08:35 -03:00
parent 9d00f33783
commit 83d20e3c8b
31 changed files with 426 additions and 285 deletions

View File

@@ -70,12 +70,37 @@ public class GameConstants {
return job == 2000 || (job >= 2100 && job <= 2112);
}
private static boolean isInBranchJobTree(int skillJobId, int jobId, int branchType) {
int branch = (int)(Math.pow(10, branchType));
int skillBranch = (int)(skillJobId / branch) * branch;
int jobBranch = (int)(jobId / branch) * branch;
return skillBranch == jobBranch;
}
private static boolean hasDivergedBranchJobTree(int skillJobId, int jobId, int branchType) {
int branch = (int)(Math.pow(10, branchType));
int skillBranch = (int)(skillJobId / branch);
int jobBranch = (int)(jobId / branch);
return skillBranch != jobBranch && skillBranch % 10 != 0;
}
public static boolean isInJobTree(int skillId, int jobId) {
int skill = skillId / 10000;
if ((jobId - skill) + skill == jobId) {
return true;
}
return false;
int skillJob = skillId / 10000;
if(!isInBranchJobTree(skillJob, jobId, 0)) {
for(int i = 1; i <= 3; i++) {
if(hasDivergedBranchJobTree(skillJob, jobId, i)) return false;
if(isInBranchJobTree(skillJob, jobId, i)) return true;
}
} else {
return true;
}
return false;
}
public static boolean isPqSkill(final int skill) {