diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/pc.c | 11 | ||||
-rw-r--r-- | src/map/skill.c | 14 |
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; |