summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/mob.c1
-rw-r--r--src/map/pc.c20
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;