From b23e86c84c2532d5900422295c5b352b99a13b30 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 6 Feb 2007 00:03:16 +0000 Subject: - Fixed @lvup, #lvup not doing a stat reset and lowering your status points if you had 0 status points at that time. - Fixed MvP exp and item rewards being given even when the mob_dead flag specifies you should not receive exp or items. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9795 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/atcommand.c | 20 +++++++++----------- src/map/charcommand.c | 20 +++++++++----------- src/map/mob.c | 4 ++-- 3 files changed, 20 insertions(+), 24 deletions(-) (limited to 'src/map') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 76dfdd879..68b1909d0 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2743,17 +2743,15 @@ int atcommand_baselevelup(const int fd, struct map_session_data* sd, const char* level*=-1; if ((unsigned int)level >= sd->status.base_level) level = sd->status.base_level-1; - if (sd->status.status_point > 0) { - for (i = 0; i > -level; i--) - status_point += (sd->status.base_level + i + 14) / 5; - if (sd->status.status_point < status_point) - pc_resetstate(sd); - if (sd->status.status_point < status_point) - sd->status.status_point = 0; - else - sd->status.status_point -= status_point; - clif_updatestatus(sd, SP_STATUSPOINT); - } /* to add: remove status points from stats */ + for (i = 0; i > -level; i--) + status_point += (sd->status.base_level + i + 14) / 5; + if (sd->status.status_point < status_point) + pc_resetstate(sd); + if (sd->status.status_point < status_point) + sd->status.status_point = 0; + else + sd->status.status_point -= status_point; + clif_updatestatus(sd, SP_STATUSPOINT); sd->status.base_level -= (unsigned int)level; clif_updatestatus(sd, SP_BASELEVEL); clif_updatestatus(sd, SP_NEXTBASEEXP); diff --git a/src/map/charcommand.c b/src/map/charcommand.c index 1d0ad382b..30afa278d 100644 --- a/src/map/charcommand.c +++ b/src/map/charcommand.c @@ -1338,17 +1338,15 @@ int charcommand_baselevel( level *= -1; if ((unsigned int)level >= pl_sd->status.base_level) level = pl_sd->status.base_level -1; - if (pl_sd->status.status_point > 0) { - for (i = 0; i > -level; i--) - status_point += (pl_sd->status.base_level +i + 14) / 5; - if (pl_sd->status.status_point < status_point) - pc_resetstate(pl_sd); - if (pl_sd->status.status_point < status_point) - pl_sd->status.status_point = 0; - else - pl_sd->status.status_point -= status_point; - clif_updatestatus(pl_sd, SP_STATUSPOINT); - } // to add: remove status points from stats + for (i = 0; i > -level; i--) + status_point += (pl_sd->status.base_level +i + 14) / 5; + if (pl_sd->status.status_point < status_point) + pc_resetstate(pl_sd); + if (pl_sd->status.status_point < status_point) + pl_sd->status.status_point = 0; + else + pl_sd->status.status_point -= status_point; + clif_updatestatus(pl_sd, SP_STATUSPOINT); pl_sd->status.base_level -= (unsigned int)level; clif_updatestatus(pl_sd, SP_BASELEVEL); clif_updatestatus(pl_sd, SP_NEXTBASEEXP); diff --git a/src/map/mob.c b/src/map/mob.c index bba0505c6..7434aae3a 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2058,7 +2058,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) double exp; //mapflag: noexp check [Lorky] - if (map[m].flag.nobaseexp) + if (map[m].flag.nobaseexp || !(type&2)) exp =1; else { exp = md->db->mexp; @@ -2075,7 +2075,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) clif_mvp_exp(mvp_sd,mexp); pc_gainexp(mvp_sd, &md->bl, mexp,0); log_mvp[1] = mexp; - if(!map[m].flag.nomvploot) + if(!map[m].flag.nomvploot && !(type&1)) for(j=0;j<3;j++){ i = rand() % 3; -- cgit v1.2.3-60-g2f50