summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/atcommand.c15
-rw-r--r--src/map/pc.c9
2 files changed, 17 insertions, 7 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 8db07f942..aea1f145b 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -2474,16 +2474,21 @@ int atcommand_joblevelup(
const char* command, const char* message)
{
int up_level = 50, level;
+ struct pc_base_job s_class;
nullpo_retr(-1, sd);
+ s_class = pc_calc_base_job(sd->status.class);
if (!message || !*message || (level = atoi(message)) == 0) {
clif_displaymessage(fd, "Please, enter a level adjustement (usage: @joblvup/@jlevel/@joblvlup <number of levels>).");
return -1;
}
- if (sd->status.class == 0 || sd->status.class == 4001)
+ if (s_class.job == 0)
up_level -= 40;
- else if ((sd->status.class > 4007 && sd->status.class < 4024) || sd->status.class == 23)
+ // super novices can go up to 99 [celest]
+ else if (s_class.job == 23)
+ up_level += 49;
+ else if (sd->status.class > 4007 && sd->status.class < 4023)
up_level += 20;
if (level > 0) {
@@ -4711,8 +4716,10 @@ int atcommand_character_joblevel(
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can change job level only lower or same gm level
if (pl_s_class.job == 0)
max_level -= 40;
- if ((pl_s_class.job == 23) || (pl_s_class.upper == 1 && pl_s_class.type == 2)) //スパノビと転生職はJobレベルの最高が70
- // To-do: super novices has max level 99 - celest
+ // super novices can go up to 99 [celest]
+ else if (pl_s_class.job == 23)
+ max_level += 49;
+ else if (pl_sd->status.class > 4007 && pl_sd->status.class < 4023)
max_level += 20;
if (level > 0) {
diff --git a/src/map/pc.c b/src/map/pc.c
index 8e7f607ce..d975deaf5 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -5746,14 +5746,17 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
pc_heal(sd, sd->status.max_hp, sd->status.max_sp);
break;
case SP_JOBLEVEL:
- if (sd->status.class == 0)
+ if (s_class.job == 0)
up_level -= 40;
- if ((sd->status.class == 23) || (sd->status.class >= 4001 && sd->status.class <= 4022))
+ // super novices can go up to 99 [celest]
+ else if (s_class.job == 23)
+ up_level += 49;
+ else if (sd->status.class >= 4008 && sd->status.class <= 4022)
up_level += 20;
if (val >= sd->status.job_level) {
if (val > up_level)val = up_level;
sd->status.skill_point += (val-sd->status.job_level);
- sd->status.job_level = val;
+ sd->status.job_level = val;
sd->status.job_exp = 0;
clif_updatestatus(sd, SP_JOBLEVEL);
clif_updatestatus(sd, SP_NEXTJOBEXP);