浏览代码

- Fixed TK_RUN having a cast-bar when attempting to stop-running and generating timer_delete errors when halting as well.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6135 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 年之前
父节点
当前提交
7beb5f23c3
共有 3 个文件被更改,包括 12 次插入5 次删除
  1. 2 0
      Changelog-Trunk.txt
  2. 2 1
      src/map/skill.c
  3. 8 4
      src/map/unit.c

+ 2 - 0
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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
 2006/04/17
 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]
 	* Clearing the dummy npc after fooling the client. [Lance]
 	* Updated DLLS. Please DO NOT update the libs from now on 
 	* Updated DLLS. Please DO NOT update the libs from now on 
 	  (except if mySQL has newer builds which are not compatible 
 	  (except if mySQL has newer builds which are not compatible 

+ 2 - 1
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))		/* Žg—p�ðŒ�ƒ`ƒFƒbƒN */
 		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1))		/* Žg—p�ðŒ�ƒ`ƒFƒbƒN */
 			break;
 			break;
 			
 			
-		unit_stop_walking(src,0);
+		if (ud->walktimer != -1 && ud->skillid != TK_RUN)
+			unit_stop_walking(src,0);
 		
 		
 		if (ud->skillid == SA_MAGICROD)
 		if (ud->skillid == SA_MAGICROD)
 			ud->canact_tick = tick;
 			ud->canact_tick = tick;

+ 8 - 4
src/map/unit.c

@@ -503,10 +503,6 @@ int unit_stop_walking(struct block_list *bl,int type)
 	if(!ud || ud->walktimer == -1)
 	if(!ud || ud->walktimer == -1)
 		return 0;
 		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(md) { md->state.skillstate = MSS_IDLE; }
 	if(type&0x01) // ˆÊ’u•â�³‘—�M‚ª•K—v
 	if(type&0x01) // ˆÊ’u•â�³‘—�M‚ª•K—v
 		clif_fixpos(bl);
 		clif_fixpos(bl);
@@ -531,6 +527,10 @@ int unit_stop_walking(struct block_list *bl,int type)
 		if(type&~0xff)
 		if(type&~0xff)
 			ud->canmove_tick = gettick() + (type>>8);
 			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;
 	return 1;
 }
 }
 
 
@@ -816,6 +816,10 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int
 			casttime = 0;
 			casttime = 0;
 		temp = 1;
 		temp = 1;
 		break;
 		break;
+	case TK_RUN:
+		if (sc && sc->data[SC_RUN].timer != -1)
+			casttime = 0;
+		break;
 	case SA_MAGICROD:
 	case SA_MAGICROD:
 	case SA_SPELLBREAKER:
 	case SA_SPELLBREAKER:
 		temp =1;
 		temp =1;