summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/skill.c3
-rw-r--r--src/map/unit.c12
3 files changed, 12 insertions, 5 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 05be59de5..cf01951ad 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,8 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/04/17
+ * Fixed TK_RUN having a cast-bar when attempting to stop-running and
+ generating timer_delete errors when halting as well. [Skotlex]
* Clearing the dummy npc after fooling the client. [Lance]
* Updated DLLS. Please DO NOT update the libs from now on
(except if mySQL has newer builds which are not compatible
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;