Ver Fonte

- 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 há 19 anos atrás
pai
commit
7beb5f23c3
3 ficheiros alterados com 12 adições e 5 exclusões
  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.
 
 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 

+ 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 */
 			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;

+ 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)
 		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) // ˆÊ’u•â�³‘—�M‚ª•K—v
 		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;