summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c179
-rw-r--r--src/map/map.h66
-rw-r--r--src/map/pc.c337
3 files changed, 436 insertions, 146 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index b44eae946..0d1c8f9d9 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1252,7 +1252,7 @@ ACMD_FUNC(jobchange)
if (!message || !*message || sscanf(message, "%d %d", &job, &upper) < 1)
{
int i, found = 0;
- const struct { char name[16]; int id; } jobs[] = {
+ const struct { char name[22]; int id; } jobs[] = {
{ "novice", 0 },
{ "swordsman", 1 },
{ "mage", 2 },
@@ -1327,6 +1327,45 @@ ACMD_FUNC(jobchange)
{ "taekwon girl", 4046 },
{ "star gladiator", 4047 },
{ "soul linker", 4049 },
+ { "rune knight", 4054 },
+ { "warlock", 4055 },
+ { "ranger", 4056 },
+ { "arch bishop", 4057 },
+ { "mechanic", 4058 },
+ { "guillotine cross", 4059 },
+ { "rune knight2", 4060 },
+ { "warlock2", 4061 },
+ { "ranger2", 4062 },
+ { "arch bishop2", 4063 },
+ { "mechanic2", 4064 },
+ { "guillotine cross2", 4065 },
+ { "royal guard", 4066 },
+ { "sorcerer", 4067 },
+ { "minstrel", 4068 },
+ { "wanderer", 4069 },
+ { "sura", 4070 },
+ { "genetic", 4071 },
+ { "shadow chaser", 4072 },
+ { "royal guard2", 4073 },
+ { "sorcerer2", 4074 },
+ { "minstrel2", 4075 },
+ { "wanderer2", 4076 },
+ { "sura2", 4077 },
+ { "genetic2", 4078 },
+ { "shadow chaser2", 4079 },
+ { "baby rune knight", 4096 },
+ { "baby warlock", 4097 },
+ { "baby ranger", 4098 },
+ { "baby arch bishop", 4099 },
+ { "baby mechanic", 4100 },
+ { "baby guillotine cross", 4101 },
+ { "baby royal guard", 4102 },
+ { "baby sorcerer", 4103 },
+ { "baby minstrel", 4104 },
+ { "baby wanderer", 4105 },
+ { "baby sura", 4106 },
+ { "baby genetic", 4107 },
+ { "baby shadow chaser", 4108 },
};
for (i=0; i < ARRAYLENGTH(jobs); i++) {
@@ -1340,36 +1379,61 @@ ACMD_FUNC(jobchange)
if (!found) {
clif_displaymessage(fd, "Please, enter job ID (usage: @job/@jobchange <job name/ID>).");
- clif_displaymessage(fd, " 0 Novice 7 Knight 14 Crusader 21 N/A");
- clif_displaymessage(fd, " 1 Swordman 8 Priest 15 Monk 22 N/A");
- clif_displaymessage(fd, " 2 Mage 9 Wizard 16 Sage 23 Super Novice");
- clif_displaymessage(fd, " 3 Archer 10 Blacksmith 17 Rogue 24 Gunslinger");
- clif_displaymessage(fd, " 4 Acolyte 11 Hunter 18 Alchemist 25 Ninja");
- clif_displaymessage(fd, " 5 Merchant 12 Assassin 19 Bard 26 N/A");
- clif_displaymessage(fd, " 6 Thief 13 N/A 20 Dancer 27 N/A");
- clif_displaymessage(fd, "4001 Novice High 4008 Lord Knight 4015 Paladin 4022 N/A");
- clif_displaymessage(fd, "4002 Swordman High 4009 High Priest 4016 Champion");
- clif_displaymessage(fd, "4003 Mage High 4010 High Wizard 4017 Professor");
- clif_displaymessage(fd, "4004 Archer High 4011 Whitesmith 4018 Stalker");
- clif_displaymessage(fd, "4005 Acolyte High 4012 Sniper 4019 Creator");
- clif_displaymessage(fd, "4006 Merchant High 4013 Assassin Cross 4020 Clown");
- clif_displaymessage(fd, "4007 Thief High 4014 N/A 4021 Gypsy");
- clif_displaymessage(fd, "4023 Baby Novice 4030 Baby Knight 4037 Baby Crusader 4044 N/A");
- clif_displaymessage(fd, "4024 Baby Swordsman 4031 Baby Priest 4038 Baby Monk 4045 Super Baby");
- clif_displaymessage(fd, "4025 Baby Mage 4032 Baby Wizard 4039 Baby Sage 4046 Taekwon Kid");
- clif_displaymessage(fd, "4026 Baby Archer 4033 Baby Blacksmith 4040 Baby Rogue 4047 Taekwon Master");
- clif_displaymessage(fd, "4027 Baby Acolyte 4034 Baby Hunter 4041 Baby Alchemist 4048 N/A");
- clif_displaymessage(fd, "4028 Baby Merchant 4035 Baby Assassin 4042 Baby Bard 4049 Soul Linker");
- clif_displaymessage(fd, "4029 Baby Thief 4036 N/A 4043 Baby Dancer");
+ clif_displaymessage(fd, "----- Novice / 1st Class -----");
+ clif_displaymessage(fd, " 0 Novice 1 Swordman 2 Mage 3 Archer");
+ clif_displaymessage(fd, " 4 Acolyte 5 Merchant 6 Thief");
+ clif_displaymessage(fd, "----- 2nd Class -----");
+ clif_displaymessage(fd, " 7 Knight 8 Priest 9 Wizard 10 Blacksmith");
+ clif_displaymessage(fd, " 11 Hunter 12 Assassin 14 Crusader 15 Monk");
+ clif_displaymessage(fd, " 16 Sage 17 Rogue 18 Alchemist 19 Bard");
+ clif_displaymessage(fd, " 20 Dancer");
+ clif_displaymessage(fd, "----- High Novice / High 1st Class -----");
+ clif_displaymessage(fd, "4001 Novice High 4002 Swordman High 4003 Mage High 4004 Archer High");
+ clif_displaymessage(fd, "4005 Acolyte High 4006 Merchant High 4007 Thief High");
+ clif_displaymessage(fd, "----- Transcendent Class -----");
+ clif_displaymessage(fd, "4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith");
+ clif_displaymessage(fd, "4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion");
+ clif_displaymessage(fd, "4017 Professor 4018 Stalker 4019 Creator 4020 Clown");
+ clif_displaymessage(fd, "4021 Gypsy");
+ clif_displaymessage(fd, "----- 3rd Class (Regular 3rd) -----");
+ clif_displaymessage(fd, "4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop");
+ clif_displaymessage(fd, "4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer");
+ clif_displaymessage(fd, "4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic");
+ clif_displaymessage(fd, "4072 Shadow Chaser");
+ clif_displaymessage(fd, "----- 3rd Class (Trans 3rd) -----");
+ clif_displaymessage(fd, "4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop");
+ clif_displaymessage(fd, "4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer");
+ clif_displaymessage(fd, "4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic");
+ clif_displaymessage(fd, "4079 Shadow Chaser");
+ clif_displaymessage(fd, "----- Expanded Class -----");
+ clif_displaymessage(fd, " 23 Super Novice 24 Gunslinger 25 Ninja 4046 Taekwon");
+ clif_displaymessage(fd, "4047 Star Gladiator 4049 Soul Linker");
+ clif_displaymessage(fd, "---- Baby 1st / 2nd Class ----");
+ clif_displaymessage(fd, "4023 Baby Novice 4024 Baby Swordsman 4025 Baby Mage 4026 Baby Archer");
+ clif_displaymessage(fd, "4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief 4030 Baby Knight");
+ clif_displaymessage(fd, "4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith 4034 Baby Hunter");
+ clif_displaymessage(fd, "4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk 4039 Baby Sage");
+ clif_displaymessage(fd, "4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard 4043 Baby Dancer");
+ clif_displaymessage(fd, "4045 Super Baby");
+ clif_displaymessage(fd, "---- Baby 3rd Class ----");
+ clif_displaymessage(fd, "4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger");
+ clif_displaymessage(fd, "4099 Baby Arch Bishop 4100 Baby Mechanic 4101 Baby Guillotine Cross");
+ clif_displaymessage(fd, "4102 Baby Royal Guard 4103 Baby Sorcerer 4104 Baby Minstrel");
+ clif_displaymessage(fd, "4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic");
+ clif_displaymessage(fd, "4108 Baby Shadow Chaser");
clif_displaymessage(fd, "[upper]: -1 (default) to automatically determine the 'level', 0 to force normal job, 1 to force high job.");
return -1;
}
}
- if (job == 13 || job == 21 || job == 22 || job == 26 || job == 27
- || job == 4014 || job == 4022 || job == 4036 || job == 4044 || job == 4048
- ) // Deny direct transformation into dummy jobs
- return 0;
+ switch(job)
+ {
+ case 13: case 21: case 4014: case 4022: case 4036:
+ case 4044: case 4080: case 4081: case 4082: case 4083:
+ case 4084: case 4085: case 4086: case 4087: case 4109:
+ case 4110: case 4111: case 4112:
+ return 0; // Deny direct transformation into dummy jobs
+ }
if (pcdb_checkid(job))
{
@@ -1381,27 +1445,48 @@ ACMD_FUNC(jobchange)
}
} else {
clif_displaymessage(fd, "Please, enter job ID (usage: @job/@jobchange <job name/ID>).");
- clif_displaymessage(fd, " 0 Novice 7 Knight 14 Crusader 21 N/A");
- clif_displaymessage(fd, " 1 Swordman 8 Priest 15 Monk 22 N/A");
- clif_displaymessage(fd, " 2 Mage 9 Wizard 16 Sage 23 Super Novice");
- clif_displaymessage(fd, " 3 Archer 10 Blacksmith 17 Rogue 24 Gunslinger");
- clif_displaymessage(fd, " 4 Acolyte 11 Hunter 18 Alchemist 25 Ninja");
- clif_displaymessage(fd, " 5 Merchant 12 Assassin 19 Bard 26 N/A");
- clif_displaymessage(fd, " 6 Thief 13 N/A 20 Dancer 27 N/A");
- clif_displaymessage(fd, "4001 Novice High 4008 Lord Knight 4015 Paladin 4022 N/A");
- clif_displaymessage(fd, "4002 Swordman High 4009 High Priest 4016 Champion");
- clif_displaymessage(fd, "4003 Mage High 4010 High Wizard 4017 Professor");
- clif_displaymessage(fd, "4004 Archer High 4011 Whitesmith 4018 Stalker");
- clif_displaymessage(fd, "4005 Acolyte High 4012 Sniper 4019 Creator");
- clif_displaymessage(fd, "4006 Merchant High 4013 Assassin Cross 4020 Clown");
- clif_displaymessage(fd, "4007 Thief High 4014 N/A 4021 Gypsy");
- clif_displaymessage(fd, "4023 Baby Novice 4030 Baby Knight 4037 Baby Crusader 4044 N/A");
- clif_displaymessage(fd, "4024 Baby Swordsman 4031 Baby Priest 4038 Baby Monk 4045 Super Baby");
- clif_displaymessage(fd, "4025 Baby Mage 4032 Baby Wizard 4039 Baby Sage 4046 Taekwon Kid");
- clif_displaymessage(fd, "4026 Baby Archer 4033 Baby Blacksmith 4040 Baby Rogue 4047 Taekwon Master");
- clif_displaymessage(fd, "4027 Baby Acolyte 4034 Baby Hunter 4041 Baby Alchemist 4048 N/A");
- clif_displaymessage(fd, "4028 Baby Merchant 4035 Baby Assassin 4042 Baby Bard 4049 Soul Linker");
- clif_displaymessage(fd, "4029 Baby Thief 4036 N/A 4043 Baby Dancer");
+ clif_displaymessage(fd, "----- Novice / 1st Class -----");
+ clif_displaymessage(fd, " 0 Novice 1 Swordman 2 Mage 3 Archer");
+ clif_displaymessage(fd, " 4 Acolyte 5 Merchant 6 Thief");
+ clif_displaymessage(fd, "----- 2nd Class -----");
+ clif_displaymessage(fd, " 7 Knight 8 Priest 9 Wizard 10 Blacksmith");
+ clif_displaymessage(fd, " 11 Hunter 12 Assassin 14 Crusader 15 Monk");
+ clif_displaymessage(fd, " 16 Sage 17 Rogue 18 Alchemist 19 Bard");
+ clif_displaymessage(fd, " 20 Dancer");
+ clif_displaymessage(fd, "----- High Novice / High 1st Class -----");
+ clif_displaymessage(fd, "4001 Novice High 4002 Swordman High 4003 Mage High 4004 Archer High");
+ clif_displaymessage(fd, "4005 Acolyte High 4006 Merchant High 4007 Thief High");
+ clif_displaymessage(fd, "----- Transcendent Class -----");
+ clif_displaymessage(fd, "4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith");
+ clif_displaymessage(fd, "4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion");
+ clif_displaymessage(fd, "4017 Professor 4018 Stalker 4019 Creator 4020 Clown");
+ clif_displaymessage(fd, "4021 Gypsy");
+ clif_displaymessage(fd, "----- 3rd Class (Regular 3rd) -----");
+ clif_displaymessage(fd, "4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop");
+ clif_displaymessage(fd, "4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer");
+ clif_displaymessage(fd, "4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic");
+ clif_displaymessage(fd, "4072 Shadow Chaser");
+ clif_displaymessage(fd, "----- 3rd Class (Trans 3rd) -----");
+ clif_displaymessage(fd, "4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop");
+ clif_displaymessage(fd, "4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer");
+ clif_displaymessage(fd, "4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic");
+ clif_displaymessage(fd, "4079 Shadow Chaser");
+ clif_displaymessage(fd, "----- Expanded Class -----");
+ clif_displaymessage(fd, " 23 Super Novice 24 Gunslinger 25 Ninja 4046 Taekwon");
+ clif_displaymessage(fd, "4047 Star Gladiator 4049 Soul Linker");
+ clif_displaymessage(fd, "---- Baby 1st / 2nd Class ----");
+ clif_displaymessage(fd, "4023 Baby Novice 4024 Baby Swordsman 4025 Baby Mage 4026 Baby Archer");
+ clif_displaymessage(fd, "4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief 4030 Baby Knight");
+ clif_displaymessage(fd, "4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith 4034 Baby Hunter");
+ clif_displaymessage(fd, "4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk 4039 Baby Sage");
+ clif_displaymessage(fd, "4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard 4043 Baby Dancer");
+ clif_displaymessage(fd, "4045 Super Baby");
+ clif_displaymessage(fd, "---- Baby 3rd Class ----");
+ clif_displaymessage(fd, "4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger");
+ clif_displaymessage(fd, "4099 Baby Arch Bishop 4100 Baby Mechanic 4101 Baby Guillotine Cross");
+ clif_displaymessage(fd, "4102 Baby Royal Guard 4103 Baby Sorcerer 4104 Baby Minstrel");
+ clif_displaymessage(fd, "4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic");
+ clif_displaymessage(fd, "4108 Baby Shadow Chaser");
clif_displaymessage(fd, "[upper]: -1 (default) to automatically determine the 'level', 0 to force normal job, 1 to force high job.");
return -1;
}
diff --git a/src/map/map.h b/src/map/map.h
index 3b1775e46..8c817387f 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -40,7 +40,7 @@ struct item_data;
#define NATURAL_HEAL_INTERVAL 500
#define MIN_FLOORITEM 2
#define MAX_FLOORITEM START_ACCOUNT_NUM
-#define MAX_LEVEL 99
+#define MAX_LEVEL 150
#define MAX_DROP_PER_MAP 48
#define MAX_IGNORE_LIST 20 // official is 14
#define MAX_VENDING 12
@@ -62,6 +62,7 @@ struct item_data;
#define JOBL_UPPER 0x1000 //4096
#define JOBL_BABY 0x2000 //8192
+#define JOBL_3 0x4000 //16384
//for filtering and quick checking.
#define MAPID_UPPERMASK 0x0fff
@@ -71,6 +72,7 @@ struct item_data;
//Super Novices are considered the 2-1 version of the novice! Novices are considered a first class type, too...
enum {
MAPID_NOVICE = 0x0,
+//1st classes
MAPID_SWORDMAN,
MAPID_MAGE,
MAPID_ARCHER,
@@ -84,7 +86,7 @@ enum {
MAPID_XMAS,
MAPID_SUMMER,
//2_1 classes
- MAPID_SUPER_NOVICE = JOBL_2_1|0x0,
+ MAPID_SUPER_NOVICE = JOBL_2_1|MAPID_NOVICE,
MAPID_KNIGHT,
MAPID_WIZARD,
MAPID_HUNTER,
@@ -93,15 +95,29 @@ enum {
MAPID_ASSASSIN,
MAPID_STAR_GLADIATOR,
//2_2 classes
- MAPID_CRUSADER = JOBL_2_2|0x1,
+ MAPID_CRUSADER = JOBL_2_2|MAPID_SWORDMAN,
MAPID_SAGE,
MAPID_BARDDANCER,
MAPID_MONK,
MAPID_ALCHEMIST,
MAPID_ROGUE,
MAPID_SOUL_LINKER,
-//1-1, advanced
- MAPID_NOVICE_HIGH = JOBL_UPPER|0x0,
+//3_1 classes
+ MAPID_RUNE_KNIGHT = JOBL_3|JOBL_2_1|MAPID_SWORDMAN,
+ MAPID_WARLOCK,
+ MAPID_RANGER,
+ MAPID_ARCHBISHOP,
+ MAPID_MECHANIC,
+ MAPID_GUILLOTINE_CROSS,
+//3_2 classes
+ MAPID_ROYAL_GUARD = JOBL_3|JOBL_2_2|MAPID_SWORDMAN,
+ MAPID_SORCERER,
+ MAPID_MINSTRELWANDERER,
+ MAPID_SURA,
+ MAPID_GENETIC,
+ MAPID_SHADOW_CHASER,
+//1st, advanced
+ MAPID_NOVICE_HIGH = JOBL_UPPER|MAPID_NOVICE,
MAPID_SWORDMAN_HIGH,
MAPID_MAGE_HIGH,
MAPID_ARCHER_HIGH,
@@ -109,21 +125,35 @@ enum {
MAPID_MERCHANT_HIGH,
MAPID_THIEF_HIGH,
//2_1 advanced
- MAPID_LORD_KNIGHT = JOBL_UPPER|JOBL_2_1|0x1,
+ MAPID_LORD_KNIGHT = JOBL_UPPER|JOBL_2_1|MAPID_SWORDMAN,
MAPID_HIGH_WIZARD,
MAPID_SNIPER,
MAPID_HIGH_PRIEST,
MAPID_WHITESMITH,
MAPID_ASSASSIN_CROSS,
//2_2 advanced
- MAPID_PALADIN = JOBL_UPPER|JOBL_2_2|0x1,
+ MAPID_PALADIN = JOBL_UPPER|JOBL_2_2|MAPID_SWORDMAN,
MAPID_PROFESSOR,
MAPID_CLOWNGYPSY,
MAPID_CHAMPION,
MAPID_CREATOR,
MAPID_STALKER,
-//1-1 baby
- MAPID_BABY = JOBL_BABY|0x0,
+//3_1 advanced
+ MAPID_RUNE_KNIGHT_H = JOBL_3|JOBL_UPPER|JOBL_2_1|MAPID_SWORDMAN,
+ MAPID_WARLOCK_H,
+ MAPID_RANGER_H,
+ MAPID_ARCHBISHOP_H,
+ MAPID_MECHANIC_H,
+ MAPID_GUILLOTINE_CROSS_H,
+//3_2 advanced
+ MAPID_ROYAL_GUARD_H = JOBL_3|JOBL_UPPER|JOBL_2_2|MAPID_SWORDMAN,
+ MAPID_SORCERER_H,
+ MAPID_MINSTRELWANDERER_H,
+ MAPID_SURA_H,
+ MAPID_GENETIC_H,
+ MAPID_SHADOW_CHASER_H,
+//1st baby
+ MAPID_BABY = JOBL_BABY|MAPID_NOVICE,
MAPID_BABY_SWORDMAN,
MAPID_BABY_MAGE,
MAPID_BABY_ARCHER,
@@ -132,7 +162,7 @@ enum {
MAPID_BABY_THIEF,
MAPID_BABY_TAEKWON,
//2_1 baby
- MAPID_SUPER_BABY = JOBL_BABY|JOBL_2_1|0x0,
+ MAPID_SUPER_BABY = JOBL_BABY|JOBL_2_1|MAPID_NOVICE,
MAPID_BABY_KNIGHT,
MAPID_BABY_WIZARD,
MAPID_BABY_HUNTER,
@@ -141,13 +171,27 @@ enum {
MAPID_BABY_ASSASSIN,
MAPID_BABY_STAR_GLADIATOR,
//2_2 baby
- MAPID_BABY_CRUSADER = JOBL_BABY|JOBL_2_2|0x1,
+ MAPID_BABY_CRUSADER = JOBL_BABY|JOBL_2_2|MAPID_SWORDMAN,
MAPID_BABY_SAGE,
MAPID_BABY_BARDDANCER,
MAPID_BABY_MONK,
MAPID_BABY_ALCHEMIST,
MAPID_BABY_ROGUE,
MAPID_BABY_SOUL_LINKER,
+//3_1 baby
+ MAPID_BABY_RUNE = JOBL_3|JOBL_BABY|JOBL_2_1|MAPID_SWORDMAN,
+ MAPID_BABY_WARLOCK,
+ MAPID_BABY_RANGER,
+ MAPID_BABY_BISHOP,
+ MAPID_BABY_MECHANIC,
+ MAPID_BABY_CROSS,
+//3_2 baby
+ MAPID_BABY_GUARD = JOBL_3|JOBL_BABY|JOBL_2_2|MAPID_SWORDMAN,
+ MAPID_BABY_SORCERER,
+ MAPID_BABY_MINSTRELWANDERER,
+ MAPID_BABY_SURA,
+ MAPID_BABY_GENETIC,
+ MAPID_BABY_CHASER
};
//Max size for inputs to Graffiti, Talkie Box and Vending text prompts
diff --git a/src/map/pc.c b/src/map/pc.c
index 4b2d4511e..82e395153 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4435,102 +4435,144 @@ int pc_checkequip(struct map_session_data *sd,int pos)
*------------------------------------------*/
int pc_jobid2mapid(unsigned short b_class)
{
- int class_ = 0;
- if (b_class >= JOB_BABY && b_class <= JOB_SUPER_BABY)
+ switch(b_class)
{
- if (b_class == JOB_SUPER_BABY)
- b_class = JOB_SUPER_NOVICE;
- else
- b_class -= JOB_BABY;
- class_|= JOBL_BABY;
- }
- else if (b_class >= JOB_NOVICE_HIGH && b_class <= JOB_PALADIN2)
- {
- b_class -= JOB_NOVICE_HIGH;
- class_|= JOBL_UPPER;
- }
- if (b_class >= JOB_KNIGHT && b_class <= JOB_KNIGHT2)
- class_|= JOBL_2_1;
- else if (b_class >= JOB_CRUSADER && b_class <= JOB_CRUSADER2)
- class_|= JOBL_2_2;
- switch (b_class)
- {
- case JOB_NOVICE:
- case JOB_SWORDMAN:
- case JOB_MAGE:
- case JOB_ARCHER:
- case JOB_ACOLYTE:
- case JOB_MERCHANT:
- case JOB_THIEF:
- class_ |= b_class;
- break;
- case JOB_KNIGHT:
- case JOB_KNIGHT2:
- case JOB_CRUSADER:
- case JOB_CRUSADER2:
- class_ |= MAPID_SWORDMAN;
- break;
- case JOB_PRIEST:
- case JOB_MONK:
- class_ |= MAPID_ACOLYTE;
- break;
- case JOB_WIZARD:
- case JOB_SAGE:
- class_ |= MAPID_MAGE;
- break;
- case JOB_BLACKSMITH:
- case JOB_ALCHEMIST:
- class_ |= MAPID_MERCHANT;
- break;
- case JOB_HUNTER:
+ case JOB_NOVICE: return MAPID_NOVICE;
+ //1st classes
+ case JOB_SWORDMAN: return MAPID_SWORDMAN;
+ case JOB_MAGE: return MAPID_MAGE;
+ case JOB_ARCHER: return MAPID_ARCHER;
+ case JOB_ACOLYTE: return MAPID_ACOLYTE;
+ case JOB_MERCHANT: return MAPID_MERCHANT;
+ case JOB_THIEF: return MAPID_THIEF;
+ case JOB_TAEKWON: return MAPID_TAEKWON;
+ case JOB_WEDDING: return MAPID_WEDDING;
+ case JOB_GUNSLINGER: return MAPID_GUNSLINGER;
+ case JOB_NINJA: return MAPID_NINJA;
+ case JOB_XMAS: return MAPID_XMAS;
+ case JOB_SUMMER: return MAPID_SUMMER;
+ //2_1 classes
+ case JOB_SUPER_NOVICE: return MAPID_SUPER_NOVICE;
+ case JOB_KNIGHT: return MAPID_KNIGHT;
+ case JOB_WIZARD: return MAPID_WIZARD;
+ case JOB_HUNTER: return MAPID_HUNTER;
+ case JOB_PRIEST: return MAPID_PRIEST;
+ case JOB_BLACKSMITH: return MAPID_BLACKSMITH;
+ case JOB_ASSASSIN: return MAPID_ASSASSIN;
+ case JOB_STAR_GLADIATOR: return MAPID_STAR_GLADIATOR;
+ //2_2 classes
+ case JOB_CRUSADER: return MAPID_CRUSADER;
+ case JOB_SAGE: return MAPID_SAGE;
case JOB_BARD:
- case JOB_DANCER:
- class_ |= MAPID_ARCHER;
- break;
- case JOB_ASSASSIN:
- case JOB_ROGUE:
- class_ |= MAPID_THIEF;
- break;
-
- case JOB_STAR_GLADIATOR:
- case JOB_STAR_GLADIATOR2:
- class_ |= JOBL_2_1;
- class_ |= MAPID_TAEKWON;
- break;
- case JOB_SOUL_LINKER:
- class_ |= JOBL_2_2;
- case JOB_TAEKWON:
- class_ |= MAPID_TAEKWON;
- break;
- case JOB_WEDDING:
- class_ = MAPID_WEDDING;
- break;
- case JOB_SUPER_NOVICE: //Super Novices are considered 2-1 novices. [Skotlex]
- class_ |= JOBL_2_1;
- break;
- case JOB_GUNSLINGER:
- class_ |= MAPID_GUNSLINGER;
- break;
- case JOB_NINJA:
- class_ |= MAPID_NINJA;
- break;
- case JOB_XMAS:
- class_ = MAPID_XMAS;
- break;
- case JOB_SUMMER:
- class_ = MAPID_SUMMER;
- break;
+ case JOB_DANCER: return MAPID_BARDDANCER;
+ case JOB_MONK: return MAPID_MONK;
+ case JOB_ALCHEMIST: return MAPID_ALCHEMIST;
+ case JOB_ROGUE: return MAPID_ROGUE;
+ case JOB_SOUL_LINKER: return MAPID_SOUL_LINKER;
+ //3_1 classes
+ case JOB_RUNE_KNIGHT: return MAPID_RUNE_KNIGHT;
+ case JOB_WARLOCK: return MAPID_WARLOCK;
+ case JOB_RANGER: return MAPID_RANGER;
+ case JOB_ARCHBISHOP: return MAPID_ARCHBISHOP;
+ case JOB_MECHANIC: return MAPID_MECHANIC;
+ case JOB_GUILLOTINE_CROSS: return MAPID_GUILLOTINE_CROSS;
+ //3_2 classes
+ case JOB_ROYAL_GUARD: return MAPID_ROYAL_GUARD;
+ case JOB_SORCERER: return MAPID_SORCERER;
+ case JOB_MINSTREL:
+ case JOB_WANDERER: return MAPID_MINSTRELWANDERER;
+ case JOB_SURA: return MAPID_SURA;
+ case JOB_GENETIC: return MAPID_GENETIC;
+ case JOB_SHADOW_CHASER: return MAPID_SHADOW_CHASER;
+ //1st: advanced
+ case JOB_NOVICE_HIGH: return MAPID_NOVICE_HIGH;
+ case JOB_SWORDMAN_HIGH: return MAPID_SWORDMAN_HIGH;
+ case JOB_MAGE_HIGH: return MAPID_MAGE_HIGH;
+ case JOB_ARCHER_HIGH: return MAPID_ARCHER_HIGH;
+ case JOB_ACOLYTE_HIGH: return MAPID_ACOLYTE_HIGH;
+ case JOB_MERCHANT_HIGH: return MAPID_MERCHANT_HIGH;
+ case JOB_THIEF_HIGH: return MAPID_THIEF_HIGH;
+ //2_1 advanced
+ case JOB_LORD_KNIGHT: return MAPID_LORD_KNIGHT;
+ case JOB_HIGH_WIZARD: return MAPID_HIGH_WIZARD;
+ case JOB_SNIPER: return MAPID_SNIPER;
+ case JOB_HIGH_PRIEST: return MAPID_HIGH_PRIEST;
+ case JOB_WHITESMITH: return MAPID_WHITESMITH;
+ case JOB_ASSASSIN_CROSS: return MAPID_ASSASSIN_CROSS;
+ //2_2 advanced
+ case JOB_PALADIN: return MAPID_PALADIN;
+ case JOB_PROFESSOR: return MAPID_PROFESSOR;
+ case JOB_CLOWN:
+ case JOB_GYPSY: return MAPID_CLOWNGYPSY;
+ case JOB_CHAMPION: return MAPID_CHAMPION;
+ case JOB_CREATOR: return MAPID_CREATOR;
+ case JOB_STALKER: return MAPID_STALKER;
+ //3_1 advanced
+ case JOB_RUNE_KNIGHT_H: return MAPID_RUNE_KNIGHT_H;
+ case JOB_WARLOCK_H: return MAPID_WARLOCK_H;
+ case JOB_RANGER_H: return MAPID_RANGER_H;
+ case JOB_ARCHBISHOP_H: return MAPID_ARCHBISHOP_H;
+ case JOB_MECHANIC_H: return MAPID_MECHANIC_H;
+ case JOB_GUILLOTINE_CROSS_H:return MAPID_GUILLOTINE_CROSS_H;
+ //3_2 advanced
+ case JOB_ROYAL_GUARD_H: return MAPID_ROYAL_GUARD_H;
+ case JOB_SORCERER_H: return MAPID_SORCERER_H;
+ case JOB_MINSTREL_H:
+ case JOB_WANDERER_H: return MAPID_MINSTRELWANDERER_H;
+ case JOB_SURA_H: return MAPID_SURA_H;
+ case JOB_GENETIC_H: return MAPID_GENETIC_H;
+ case JOB_SHADOW_CHASER_H: return MAPID_SHADOW_CHASER_H;
+ //1-1 baby
+ case JOB_BABY: return MAPID_BABY;
+ case JOB_BABY_SWORDMAN: return MAPID_BABY_SWORDMAN;
+ case JOB_BABY_MAGE: return MAPID_BABY_MAGE;
+ case JOB_BABY_ARCHER: return MAPID_BABY_ARCHER;
+ case JOB_BABY_ACOLYTE: return MAPID_BABY_ACOLYTE;
+ case JOB_BABY_MERCHANT: return MAPID_BABY_MERCHANT;
+ case JOB_BABY_THIEF: return MAPID_BABY_THIEF;
+ //2_1 baby
+ case JOB_SUPER_BABY: return MAPID_SUPER_BABY;
+ case JOB_BABY_KNIGHT: return MAPID_BABY_KNIGHT;
+ case JOB_BABY_WIZARD: return MAPID_BABY_WIZARD;
+ case JOB_BABY_HUNTER: return MAPID_BABY_HUNTER;
+ case JOB_BABY_PRIEST: return MAPID_BABY_PRIEST;
+ case JOB_BABY_BLACKSMITH: return MAPID_BABY_BLACKSMITH;
+ case JOB_BABY_ASSASSIN: return MAPID_BABY_ASSASSIN;
+ //2_2 baby
+ case JOB_BABY_CRUSADER: return MAPID_BABY_CRUSADER;
+ case JOB_BABY_SAGE: return MAPID_BABY_SAGE;
+ case JOB_BABY_BARD:
+ case JOB_BABY_DANCER: return MAPID_BABY_BARDDANCER;
+ case JOB_BABY_MONK: return MAPID_BABY_MONK;
+ case JOB_BABY_ALCHEMIST: return MAPID_BABY_ALCHEMIST;
+ case JOB_BABY_ROGUE: return MAPID_BABY_ROGUE;
+ //3_1 baby classes
+ case JOB_BABY_RUNE: return MAPID_BABY_RUNE;
+ case JOB_BABY_WARLOCK: return MAPID_BABY_WARLOCK;
+ case JOB_BABY_RANGER: return MAPID_BABY_RANGER;
+ case JOB_BABY_BISHOP: return MAPID_BABY_BISHOP;
+ case JOB_BABY_MECHANIC: return MAPID_BABY_MECHANIC;
+ case JOB_BABY_CROSS: return MAPID_BABY_CROSS;
+ //3_2 baby classes
+ case JOB_BABY_GUARD: return MAPID_BABY_GUARD;
+ case JOB_BABY_SORCERER: return MAPID_BABY_SORCERER;
+ case JOB_BABY_WANDERER:
+ case JOB_BABY_MINSTREL: return MAPID_BABY_MINSTRELWANDERER;
+ case JOB_BABY_SURA: return MAPID_BABY_SURA;
+ case JOB_BABY_GENETIC: return MAPID_BABY_GENETIC;
+ case JOB_BABY_CHASER: return MAPID_BABY_CHASER;
default:
return -1;
}
- return class_;
}
//Reverts the map-style class id to the client-style one.
int pc_mapid2jobid(unsigned short class_, int sex)
{
- switch(class_) {
+ switch(class_)
+ {
case MAPID_NOVICE: return JOB_NOVICE;
+ //1st classes
case MAPID_SWORDMAN: return JOB_SWORDMAN;
case MAPID_MAGE: return JOB_MAGE;
case MAPID_ARCHER: return JOB_ARCHER;
@@ -4560,7 +4602,21 @@ int pc_mapid2jobid(unsigned short class_, int sex)
case MAPID_ALCHEMIST: return JOB_ALCHEMIST;
case MAPID_ROGUE: return JOB_ROGUE;
case MAPID_SOUL_LINKER: return JOB_SOUL_LINKER;
- //1-1: advanced
+ //3_1 classes
+ case MAPID_RUNE_KNIGHT: return JOB_RUNE_KNIGHT;
+ case MAPID_WARLOCK: return JOB_WARLOCK;
+ case MAPID_RANGER: return JOB_RANGER;
+ case MAPID_ARCHBISHOP: return JOB_ARCHBISHOP;
+ case MAPID_MECHANIC: return JOB_MECHANIC;
+ case MAPID_GUILLOTINE_CROSS:return JOB_GUILLOTINE_CROSS;
+ //3_2 classes
+ case MAPID_ROYAL_GUARD: return JOB_ROYAL_GUARD;
+ case MAPID_SORCERER: return JOB_SORCERER;
+ case MAPID_MINSTRELWANDERER:return sex?JOB_MINSTREL:JOB_WANDERER;
+ case MAPID_SURA: return JOB_SURA;
+ case MAPID_GENETIC: return JOB_GENETIC;
+ case MAPID_SHADOW_CHASER: return JOB_SHADOW_CHASER;
+ //1st: advanced
case MAPID_NOVICE_HIGH: return JOB_NOVICE_HIGH;
case MAPID_SWORDMAN_HIGH: return JOB_SWORDMAN_HIGH;
case MAPID_MAGE_HIGH: return JOB_MAGE_HIGH;
@@ -4582,6 +4638,20 @@ int pc_mapid2jobid(unsigned short class_, int sex)
case MAPID_CHAMPION: return JOB_CHAMPION;
case MAPID_CREATOR: return JOB_CREATOR;
case MAPID_STALKER: return JOB_STALKER;
+ //3_1 advanced
+ case MAPID_RUNE_KNIGHT_H: return JOB_RUNE_KNIGHT_H;
+ case MAPID_WARLOCK_H: return JOB_WARLOCK_H;
+ case MAPID_RANGER_H: return JOB_RANGER_H;
+ case MAPID_ARCHBISHOP_H: return JOB_ARCHBISHOP_H;
+ case MAPID_MECHANIC_H: return JOB_MECHANIC_H;
+ case MAPID_GUILLOTINE_CROSS_H: return JOB_GUILLOTINE_CROSS_H;
+ //3_2 advanced
+ case MAPID_ROYAL_GUARD_H: return JOB_ROYAL_GUARD_H;
+ case MAPID_SORCERER_H: return JOB_SORCERER_H;
+ case MAPID_MINSTRELWANDERER_H: return sex?JOB_MINSTREL_H:JOB_WANDERER_H;
+ case MAPID_SURA_H: return JOB_SURA_H;
+ case MAPID_GENETIC_H: return JOB_GENETIC_H;
+ case MAPID_SHADOW_CHASER_H: return JOB_SHADOW_CHASER_H;
//1-1 baby
case MAPID_BABY: return JOB_BABY;
case MAPID_BABY_SWORDMAN: return JOB_BABY_SWORDMAN;
@@ -4605,6 +4675,20 @@ int pc_mapid2jobid(unsigned short class_, int sex)
case MAPID_BABY_MONK: return JOB_BABY_MONK;
case MAPID_BABY_ALCHEMIST: return JOB_BABY_ALCHEMIST;
case MAPID_BABY_ROGUE: return JOB_BABY_ROGUE;
+ //3_1 baby classes
+ case MAPID_BABY_RUNE: return JOB_BABY_RUNE;
+ case MAPID_BABY_WARLOCK: return JOB_BABY_WARLOCK;
+ case MAPID_BABY_RANGER: return JOB_BABY_RANGER;
+ case MAPID_BABY_BISHOP: return JOB_BABY_BISHOP;
+ case MAPID_BABY_MECHANIC: return JOB_BABY_MECHANIC;
+ case MAPID_BABY_CROSS: return JOB_BABY_CROSS;
+ //3_2 baby classes
+ case MAPID_BABY_GUARD: return JOB_BABY_GUARD;
+ case MAPID_BABY_SORCERER: return JOB_BABY_SORCERER;
+ case MAPID_BABY_MINSTRELWANDERER: return sex?JOB_BABY_MINSTREL:JOB_BABY_WANDERER;
+ case MAPID_BABY_SURA: return JOB_BABY_SURA;
+ case MAPID_BABY_GENETIC: return JOB_BABY_GENETIC;
+ case MAPID_BABY_CHASER: return JOB_BABY_CHASER;
default:
return -1;
}
@@ -4736,9 +4820,86 @@ char* job_name(int class_)
return msg_txt(619);
case JOB_NINJA:
return msg_txt(620);
-
+
+ case JOB_RUNE_KNIGHT:
+ case JOB_WARLOCK:
+ case JOB_RANGER:
+ case JOB_ARCHBISHOP:
+ case JOB_MECHANIC:
+ case JOB_GUILLOTINE_CROSS:
+ return msg_txt(625 - JOB_RUNE_KNIGHT +class_);
+
+ case JOB_RUNE_KNIGHT_H:
+ case JOB_WARLOCK_H:
+ case JOB_RANGER_H:
+ case JOB_ARCHBISHOP_H:
+ case JOB_MECHANIC_H:
+ case JOB_GUILLOTINE_CROSS_H:
+ return msg_txt(625 - JOB_RUNE_KNIGHT_H +class_);
+
+ case JOB_ROYAL_GUARD:
+ case JOB_SORCERER:
+ case JOB_MINSTREL:
+ case JOB_WANDERER:
+ case JOB_SURA:
+ case JOB_GENETIC:
+ case JOB_SHADOW_CHASER:
+ return msg_txt(631 - JOB_ROYAL_GUARD +class_);
+
+ case JOB_ROYAL_GUARD_H:
+ case JOB_SORCERER_H:
+ case JOB_MINSTREL_H:
+ case JOB_WANDERER_H:
+ case JOB_SURA_H:
+ case JOB_GENETIC_H:
+ case JOB_SHADOW_CHASER_H:
+ return msg_txt(631 - JOB_ROYAL_GUARD_H +class_);
+
+ case JOB_RUNE_KNIGHT2:
+ case JOB_RUNE_KNIGHT_H2:
+ return msg_txt(625);
+
+ case JOB_ROYAL_GUARD2:
+ case JOB_ROYAL_GUARD_H2:
+ return msg_txt(631);
+
+ case JOB_RANGER2:
+ case JOB_RANGER_H2:
+ return msg_txt(627);
+
+ case JOB_MECHANIC2:
+ case JOB_MECHANIC_H2:
+ return msg_txt(629);
+
+ case JOB_BABY_RUNE:
+ case JOB_BABY_WARLOCK:
+ case JOB_BABY_RANGER:
+ case JOB_BABY_BISHOP:
+ case JOB_BABY_MECHANIC:
+ case JOB_BABY_CROSS:
+ case JOB_BABY_GUARD:
+ case JOB_BABY_SORCERER:
+ case JOB_BABY_MINSTREL:
+ case JOB_BABY_WANDERER:
+ case JOB_BABY_SURA:
+ case JOB_BABY_GENETIC:
+ case JOB_BABY_CHASER:
+ return msg_txt(638 - JOB_BABY_RUNE +class_);
+
+ case JOB_BABY_RUNE2:
+ return msg_txt(638);
+
+ case JOB_BABY_GUARD2:
+ return msg_txt(644);
+
+ case JOB_BABY_RANGER2:
+ return msg_txt(640);
+
+ case JOB_BABY_MECHANIC2:
+ return msg_txt(642);
+
default:
- return msg_txt(650);
+ return msg_txt(651);
}
}