diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/skill.c | 3 | ||||
-rw-r--r-- | src/map/unit.c | 12 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index ee9c55385..d728a7a9f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -5747,7 +5747,8 @@ int skill_castend_id( int tid, unsigned int tick, int id,int data ) if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1)) /* 使用条件チェック */
break;
- unit_stop_walking(src,0);
+ if (ud->walktimer != -1 && ud->skillid != TK_RUN)
+ unit_stop_walking(src,0);
if (ud->skillid == SA_MAGICROD)
ud->canact_tick = tick;
diff --git a/src/map/unit.c b/src/map/unit.c index 82f628a2a..f1c61c934 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -503,10 +503,6 @@ int unit_stop_walking(struct block_list *bl,int type) if(!ud || ud->walktimer == -1)
return 0;
- sc = status_get_sc(bl);
- if (sc && sc->count && sc->data[SC_RUN].timer != -1)
- status_change_end(bl, SC_RUN, -1);
-
// if(md) { md->state.skillstate = MSS_IDLE; }
if(type&0x01) // 位置補正送信が必要
clif_fixpos(bl);
@@ -531,6 +527,10 @@ int unit_stop_walking(struct block_list *bl,int type) if(type&~0xff)
ud->canmove_tick = gettick() + (type>>8);
}
+ sc = status_get_sc(bl);
+ if (sc && sc->count && sc->data[SC_RUN].timer != -1)
+ status_change_end(bl, SC_RUN, -1);
+
return 1;
}
@@ -816,6 +816,10 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int casttime = 0;
temp = 1;
break;
+ case TK_RUN:
+ if (sc && sc->data[SC_RUN].timer != -1)
+ casttime = 0;
+ break;
case SA_MAGICROD:
case SA_SPELLBREAKER:
temp =1;
|