Index: src/map/unit.c
===================================================================
--- src/map/unit.c (revision 17344)
+++ src/map/unit.c (working copy)
@@ -137,19 +137,21 @@
}
int unit_teleport_timer(int tid, unsigned int tick, int id, intptr_t data){
+ struct block_list *bl = map_id2bl(id);
+ int *mast_tid = unit_get_masterteleport_timer(bl);
+
if(tid == INVALID_TIMER)
return 0;
+ else if(*mast_tid && *mast_tid != tid)
+ return 0;
else {
- struct block_list *bl = map_id2bl(id);
- int *mast_tid = unit_get_masterteleport_timer(bl);
TBL_PC *msd = unit_get_master(bl);
-
switch(data){
case BL_HOM:
case BL_ELEM:
case BL_PET :
case BL_MER :
- if(msd && *mast_tid != INVALID_TIMER && !check_distance_bl(&msd->bl, bl, MAX_MER_DISTANCE)){
+ if(msd && !check_distance_bl(&msd->bl, bl, MAX_MER_DISTANCE)){
*mast_tid = INVALID_TIMER;
unit_warp(bl, msd->bl.id, msd->bl.x, msd->bl.y, CLR_TELEPORT );
}