summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
diff options
context:
space:
mode:
authorai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-11-26 07:44:35 +0000
committerai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-11-26 07:44:35 +0000
commitaa176338c5018b6fcaf24b11a68d40e77b1d2399 (patch)
treeb14d5566a3d606db1afac13251fd675f475e16dc /src/map/atcommand.c
parent971a20bad2710c31fc90d6b85fd82a59763ee11a (diff)
downloadhercules-aa176338c5018b6fcaf24b11a68d40e77b1d2399.tar.gz
hercules-aa176338c5018b6fcaf24b11a68d40e77b1d2399.tar.bz2
hercules-aa176338c5018b6fcaf24b11a68d40e77b1d2399.tar.xz
hercules-aa176338c5018b6fcaf24b11a68d40e77b1d2399.zip
* Fixed base and job exp not getting reset on (de)leveling through commands (bugreport:85).
- Fixed level up related functions not updating client-side exp information, causing the exp percent value display random values. - Fixed party system not getting notified of level-ups through parameter changes. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14505 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/atcommand.c')
-rw-r--r--src/map/atcommand.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index d48dda0db..41a27bc8a 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1777,8 +1777,10 @@ ACMD_FUNC(baselevelup)
sd->status.base_level -= (unsigned int)level;
clif_displaymessage(fd, msg_txt(22)); // Base level lowered.
}
+ sd->status.base_exp = 0;
clif_updatestatus(sd, SP_STATUSPOINT);
clif_updatestatus(sd, SP_BASELEVEL);
+ clif_updatestatus(sd, SP_BASEEXP);
clif_updatestatus(sd, SP_NEXTBASEEXP);
status_calc_pc(sd, 0);
if(sd->status.party_id)
@@ -1808,11 +1810,7 @@ ACMD_FUNC(joblevelup)
if ((unsigned int)level > pc_maxjoblv(sd) || (unsigned int)level > pc_maxjoblv(sd) - sd->status.job_level) // fix positiv overflow
level = pc_maxjoblv(sd) - sd->status.job_level;
sd->status.job_level += (unsigned int)level;
- clif_updatestatus(sd, SP_JOBLEVEL);
- clif_updatestatus(sd, SP_NEXTJOBEXP);
sd->status.skill_point += level;
- clif_updatestatus(sd, SP_SKILLPOINT);
- status_calc_pc(sd, 0);
clif_misceffect(&sd->bl, 1);
clif_displaymessage(fd, msg_txt(24)); // Job level raised.
} else {
@@ -1824,18 +1822,20 @@ ACMD_FUNC(joblevelup)
if ((unsigned int)level >= sd->status.job_level) // fix negativ overflow
level = sd->status.job_level-1;
sd->status.job_level -= (unsigned int)level;
- clif_updatestatus(sd, SP_JOBLEVEL);
- clif_updatestatus(sd, SP_NEXTJOBEXP);
if (sd->status.skill_point < level)
pc_resetskill(sd,0); //Reset skills since we need to substract more points.
if (sd->status.skill_point < level)
sd->status.skill_point = 0;
else
sd->status.skill_point -= level;
- clif_updatestatus(sd, SP_SKILLPOINT);
- status_calc_pc(sd, 0);
clif_displaymessage(fd, msg_txt(25)); // Job level lowered.
}
+ sd->status.job_exp = 0;
+ clif_updatestatus(sd, SP_JOBLEVEL);
+ clif_updatestatus(sd, SP_JOBEXP);
+ clif_updatestatus(sd, SP_NEXTJOBEXP);
+ clif_updatestatus(sd, SP_SKILLPOINT);
+ status_calc_pc(sd, 0);
return 0;
}