summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/pc.c11
-rw-r--r--src/map/skill.c14
2 files changed, 16 insertions, 9 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 5ec5b8a1b..7f08690ad 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -5947,10 +5947,15 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
return 1;
// check if we are changing from 1st to 2nd job
- if (s_class.job > 0 && s_class.job < 7 && job >= 7 && job <= 21)
- sd->change_level = sd->status.job_level;
+ if (job >= 7 && job <= 21) {
+ if (s_class.job > 0 && s_class.job < 7)
+ sd->change_level = sd->status.job_level;
+ else
+ sd->change_level = 40;
+ }
else
sd->change_level = 0;
+
pc_setglobalreg (sd, "jobchange_level", sd->change_level);
sd->status.class = sd->view_class = b_class;
@@ -7341,7 +7346,7 @@ static int pc_natural_heal_sub(struct map_session_data *sd,va_list ap) {
if ((battle_config.natural_heal_weight_rate > 100 || sd->weight*100/sd->max_weight < battle_config.natural_heal_weight_rate) &&
!pc_isdead(sd) &&
!pc_ishiding(sd) &&
- sd->sc_data[SC_POISON].timer == -1 &&
+ !(sd->sc_data[SC_POISON].timer != -1 && sd->sc_data[SC_SLOWPOISON].timer == -1) &&
sd->sc_data[SC_BERSERK].timer == -1 ) {
pc_natural_heal_hp(sd);
if( sd->sc_data && sd->sc_data[SC_EXTREMITYFIST].timer == -1 && //ˆ¢C—…?‘Ô‚Å‚ÍSP‚ª‰ñ•œ‚µ‚È‚¢
diff --git a/src/map/skill.c b/src/map/skill.c
index ed0521aec..785da6224 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5965,14 +5965,16 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int
int type=SkillStatusChangeTable[sg->skill_id];
if(sg->src_id == bl->id)
break;
- if(sc_data && sc_data[type].timer==-1)
- skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2,
- (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0);
- else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){
- if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 )
+ if(sc_data) {
+ if (sc_data[type].timer==-1)
skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2,
(int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0);
- ts->tick-=sg->interval;
+ else if( (unit2=(struct skill_unit *)sc_data[type].val4) && unit2 != src ){
+ if( unit2->group && DIFF_TICK(sg->tick,unit2->group->tick)>0 )
+ skill_status_change_start(bl,type,sg->skill_lv,sg->val1,sg->val2,
+ (int)src,skill_get_time2(sg->skill_id,sg->skill_lv),0);
+ ts->tick-=sg->interval;
+ }
}
} break;