MXD-Server/src/client/MapleJob.java

385 lines
9.5 KiB
Java

package client;
import constants.SkillConstants;
public enum MapleJob {
新手(0),
战士(100),
剑客(110),
勇士(111),
英雄(112),
准骑士(120),
骑士(121),
圣骑士(122),
枪战士(130),
龙骑士(131),
黑骑士(132),
魔法师(200),
火毒法师(210),
火毒巫师(211),
火毒魔导士(212),
冰雷法师(220),
冰雷巫师(221),
冰雷魔导士(222),
牧师(230),
祭司(231),
主教(232),
弓箭手(300),
猎人(310),
游俠(311),
神射手(312),
弩弓手(320),
游侠(321),
箭神(322),
盜贼(400),
刺客(410),
无影人(411),
隐士(412),
侠客(420),
独行客(421),
侠盗(422),
海盜(500),
拳手(510),
斗士(511),
冲锋队长(512),
火枪手(520),
大副(521),
船长(522),
巡查者(800),
管理员(900),
初心者(1000),
魂骑士1转(1100),
魂骑士2转(1110),
魂骑士3转(1111),
魂骑士4转(1112),
炎术士1转(1200),
炎术士2转(1210),
炎术士3转(1211),
炎术士4转(1212),
风灵使者1转(1300),
风灵使者2转(1310),
风灵使者3转(1311),
风灵使者4转(1312),
夜行者1转(1400),
夜行者2转(1410),
夜行者3转(1411),
夜行者4转(1412),
奇袭者1转(1500),
奇袭者2转(1510),
奇袭者3转(1511),
奇袭者4转(1512),
战童(2000),
战神1转(2100),
战神2转(2110),
战神3转(2111),
战神4转(2112),
未知(999999);
private final int jobid;
private MapleJob(final int id) {
this.jobid = id;
}
public int getId() {
return this.jobid;
}
public static String getName(final MapleJob mjob) {
return mjob.name();
}
public static MapleJob getById(final int id) {
for (final MapleJob l : values()) {
if (l.getId() == id) {
return l;
}
}
return MapleJob.未知;
}
public static boolean isExist(final int id) {
for (final MapleJob job : values()) {
if (job.getId() == id) {
return true;
}
}
return false;
}
public static boolean is冒险家(final int job) {
return job / 1000 == 0;
}
public static boolean is英雄(final int job) {
return job / 10 == 11;
}
public static boolean is圣骑士(final int job) {
return job / 10 == 12;
}
public static boolean is黑骑士(final int job) {
return job / 10 == 13;
}
public static boolean is大魔导士_火毒(final int job) {
return job / 10 == 21;
}
public static boolean is大魔导士_冰雷(final int job) {
return job / 10 == 22;
}
public static boolean is主教(final int job) {
return job / 10 == 23;
}
public static boolean is箭神(final int job) {
return job / 10 == 31;
}
public static boolean is神射手(final int job) {
return job / 10 == 32;
}
public static boolean is隐士(final int job) {
return job / 10 == 41;
}
public static boolean is侠盗(final int job) {
return job / 10 == 42;
}
public static boolean is影武者(final int job) {
return job / 10 == 43;
}
public static boolean is拳霸(final int job) {
return job / 10 == 51;
}
public static boolean is枪神(final int job) {
return job / 10 == 52;
}
public static boolean is管理员(final int job) {
return job == 800 || job == 900 || job == 910;
}
public static boolean is皇家骑士团(final int job) {
return job / 1000 == 1;
}
public static boolean is魂骑士(final int job) {
return job / 100 == 11;
}
public static boolean is炎术士(final int job) {
return job / 100 == 12;
}
public static boolean is风灵使者(final int job) {
return job / 100 == 13;
}
public static boolean is夜行者(final int job) {
return job / 100 == 14;
}
public static boolean is奇袭者(final int job) {
return job / 100 == 15;
}
public static boolean is英雄团(final int job) {
return job / 1000 == 2;
}
public static boolean is战神(final int job) {
return job / 100 == 21 || job == 2000;
}
public static boolean is剑士(final int job) {
return getJobBranch(job) == 1;
}
public static boolean is魔法师(final int job) {
return getJobBranch(job) == 2;
}
public static boolean is弓箭手(final int job) {
return getJobBranch(job) == 3;
}
public static boolean is盜贼(final int job) {
return getJobBranch(job) == 4 || getJobBranch(job) == 6;
}
public static boolean is海盜(final int job) {
return getJobBranch(job) == 5 || getJobBranch(job) == 6;
}
public static short getBeginner(final short job) {
if (job % 1000 < 10) {
return job;
}
switch (job / 100) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 8:
case 9: {
return (short) MapleJob.新手.getId();
}
case 10:
case 11:
case 12:
case 13:
case 14:
case 15: {
return (short) MapleJob.初心者.getId();
}
case 20: {
return (short) MapleJob.战童.getId();
}
case 21: {
return (short) MapleJob.战童.getId();
}
default: {
return (short) MapleJob.新手.getId();
}
}
}
public static boolean is初心者(final int jobid) {
Label_0084:
{
if (jobid <= 5000) {
if (jobid != 5000) {
if (jobid < 2001) {
break Label_0084;
}
if (jobid > 2005) {
if (jobid <= 3000) {
break Label_0084;
}
if (jobid > 3002) {
if (jobid <= 4000) {
break Label_0084;
}
if (jobid > 4002) {
break Label_0084;
}
}
}
}
return true;
}
if (jobid >= 6000 && (jobid <= 6001 || jobid == 13000)) {
return true;
}
}
boolean result = isJob12000(jobid);
if (jobid % 1000 == 0 || jobid / 100 == 8000 || jobid == 8001 || result) {
result = true;
}
return result;
}
public static boolean isJob12000(final int job) {
boolean result = isJob12000HighLv(job);
if (isJob12000LowLv(job) || result) {
result = true;
}
return result;
}
public static boolean isJob12000HighLv(final int job) {
return job == 12003 || job == 12004;
}
public static boolean isJob12000LowLv(final int job) {
return job == 12000 || job == 12001 || job == 12002;
}
public static boolean isJob8000(final int job) {
final int v1 = SkillConstants.getJobBySkill(job);
return (v1 >= 800000 && v1 <= 800099) || v1 == 8001;
}
public static boolean isJob9500(final int job) {
final boolean result = job >= 0 && SkillConstants.getJobBySkill(job) == 9500;
return result;
}
public static int get转数(final int jobid) {
int result;
if (is初心者(jobid) || jobid % 100 == 0 || jobid == 501 || jobid == 3101 || jobid == 508) {
result = 1;
} else {
final int v1 = jobid % 10;
if (jobid / 10 == 43) {
final int v2 = v1 / 2 + 2;
} else {
final int v2 = v1 + 2;
}
result = 0;
}
return result;
}
public static boolean isBeginner(final int job) {
return getJobGrade(job) == 0;
}
public static boolean isSameJob(final int job, final int job2) {
final int jobNum = getJobGrade(job);
final int job2Num = getJobGrade(job2);
if (jobNum == 0 || job2Num == 0) {
return getBeginner((short) job) == getBeginner((short) job2);
}
if (getJobGroup(job) != getJobGroup(job2)) {
return false;
}
if (is管理员(job) || is管理员(job)) {
return is管理员(job2) && is管理员(job2);
}
if (jobNum == 1 || job2Num == 1) {
return job / 100 == job2 / 100;
}
return job / 10 == job2 / 10;
}
public static int getJobGroup(final int job) {
return job / 1000;
}
public static int getJobBranch(final int job) {
if (job / 100 == 27) {
return 2;
}
return job % 1000 / 100;
}
public static int getJobBranch2nd(final int job) {
if (job / 100 == 27) {
return 2;
}
return job % 1000 / 100;
}
public static int getJobGrade(final int jobz) {
final int job = jobz % 1000;
if (job / 10 == 0) {
return 0;
}
if (job / 10 % 10 == 0) {
return 1;
}
return job % 10 + 2;
}
}