summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/skill.c3
-rw-r--r--src/map/unit.c12
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;