Ver Fonte

Fixed skill delay paw print icons showing for far too long.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13624 54d463be-8e91-2dee-dedb-b68131a5f0ec
Sara há 16 anos atrás
pai
commit
71e1662e67
2 ficheiros alterados com 14 adições e 4 exclusões
  1. 12 2
      src/map/skill.c
  2. 2 2
      src/map/unit.c

+ 12 - 2
src/map/skill.c

@@ -950,8 +950,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 			ud = unit_bl2ud(src);
 			if (ud) {
 				rate = skill_delayfix(src, skill, skilllv);
-				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0)
+				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){
 					ud->canact_tick = tick+rate;
+					if ( battle_config.display_status_timers && sd )
+						clif_status_change(src, SI_ACTIONDELAY, 1, rate);
+				}
 			}
 			break; //Only one auto skill comes off at a time.
 		}
@@ -1197,8 +1200,11 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 			ud = unit_bl2ud(bl);
 			if (ud) {
 				rate = skill_delayfix(bl, skillid, skilllv);
-				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0)
+				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){
 					ud->canact_tick = tick+rate;
+					if ( battle_config.display_status_timers && dstsd )
+						clif_status_change(bl, SI_ACTIONDELAY, 1, rate);
+				}
 			}
 			break; //trigger only one auto-spell per hit.
 		}
@@ -5667,6 +5673,8 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr data)
 			unit_stop_walking(src,1);
 		
 		ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv);
+		if ( battle_config.display_status_timers && sd )
+			clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv));
 	
 		if (skill_get_state(ud->skillid) != ST_MOVE_ENABLE)
 			unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1);
@@ -5844,6 +5852,8 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr data)
 				src->type, src->id, ud->skillid, ud->skilllv, ud->skillx, ud->skilly);
 		unit_stop_walking(src,1);
 		ud->canact_tick = tick + skill_delayfix(src, ud->skillid, ud->skilllv);
+		if ( battle_config.display_status_timers && sd )
+			clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skillid, ud->skilllv));
 		unit_set_walkdelay(src, tick, battle_config.default_walk_delay+skill_get_walkdelay(ud->skillid, ud->skilllv), 1);
 
 		map_freeblock_lock();

+ 2 - 2
src/map/unit.c

@@ -1071,7 +1071,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh
 
 	ud->canact_tick  = tick + casttime + 100;
 	if ( battle_config.display_status_timers && sd )
-		clif_status_change(src, SI_ACTIONDELAY, 1, ud->canact_tick);
+		clif_status_change(src, SI_ACTIONDELAY, 1, casttime);
 	ud->skilltarget  = target_id;
 	ud->skillx       = 0;
 	ud->skilly       = 0;
@@ -1178,7 +1178,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh
 
 	ud->canact_tick  = tick + casttime + 100;
 	if ( battle_config.display_status_timers && sd )
-		clif_status_change(src, SI_ACTIONDELAY, 1, ud->canact_tick);
+		clif_status_change(src, SI_ACTIONDELAY, 1, casttime);
 	ud->skillid      = skill_num;
 	ud->skilllv      = skill_lv;
 	ud->skillx       = skill_x;