diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/mob.c | 1 | ||||
-rw-r--r-- | src/map/pc.c | 20 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index f32acc85f..4abd1dd58 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -257,6 +257,7 @@ int mob_get_random_id(int type, int flag, int lv) { class_ = rand() % MAX_MOB_DB; mob = mob_db(class_); } while ((mob == mob_dummy || + mob_is_clone(class_) || (flag&1 && mob->summonper[type] <= rand() % 1000000) || (flag&2 && lv < mob->lv) || (flag&4 && mob->status.mode&MD_BOSS) || diff --git a/src/map/pc.c b/src/map/pc.c index 238a88b5a..3731dda29 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4720,8 +4720,24 @@ int pc_resetskill(struct map_session_data* sd, int flag) int i, lv, inf2, skill_point=0; nullpo_retr(0, sd); - if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd)) - clif_status_load(&sd->bl, SI_DEVIL, 0); //Remove perma blindness due to skill-reset. [Skotlex] + if(!(flag&2)) + { //Remove stuff lost when resetting skills. + if (pc_checkskill(sd, SG_DEVIL) && !pc_nextjobexp(sd)) + clif_status_load(&sd->bl, SI_DEVIL, 0); //Remove perma blindness due to skill-reset. [Skotlex] + i = sd->sc.option; + if (i&OPTION_RIDING && pc_checkskill(sd, KN_RIDING)) + i&=~OPTION_RIDING; + if(i&OPTION_CART && pc_checkskill(sd, MC_PUSHCART)) + i&=~OPTION_CART; + if(i&OPTION_FALCON && pc_checkskill(sd, HT_FALCON)) + i&=~OPTION_FALCON; + + if(i != sd->sc.option) + pc_setoption(sd, i); + + if(merc_is_hom_active(sd->hd) && pc_checkskill(sd, AM_CALLHOMUN)) + merc_hom_vaporize(sd, 0); + } for (i = 1; i < MAX_SKILL; i++) { lv= sd->status.skill[i].lv; |