summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/pc.c')
-rw-r--r--src/map/pc.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 25ef846ae..e1ef92d00 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -7119,6 +7119,19 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp)
return 0;
}
+static int jobchange_killclone(struct block_list *bl, va_list ap)
+{
+ struct mob_data *md;
+ int flag;
+ md = (struct mob_data *)bl;
+ nullpo_ret(md);
+ flag = va_arg(ap, int);
+
+ if (md->master_id && md->special_state.clone && md->master_id == flag)
+ status_kill(&md->bl);
+ return 1;
+}
+
/*==========================================
* Called when player changes job
* Rewrote to make it tidider [Celest]
@@ -7228,6 +7241,13 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper)
//Update skill tree.
pc_calc_skilltree(sd);
clif_skillinfoblock(sd);
+
+ if (sd->ed)
+ elemental_delete(sd->ed, 0);
+ if (sd->state.vending)
+ vending_closevending(sd);
+
+ map_foreachinmap(jobchange_killclone, sd->bl.m, BL_MOB, sd->bl.id);
//Remove peco/cart/falcon
i = sd->sc.option;