Просмотр исходного кода

Fixes skill_keep_using timer mismatch (#7127)

* Fixes #7095.
* Resolves an issue where skill_keep_using was not resetting the timer ID after the timer ends.
* Cleans up the check when applying the timer to confirm a timer doesn't already exist.
Thanks to @eppc0330!
Aleos 2 лет назад
Родитель
Сommit
3418221dba
1 измененных файлов с 2 добавлено и 1 удалено
  1. 2 1
      src/map/skill.cpp

+ 2 - 1
src/map/skill.cpp

@@ -12620,6 +12620,7 @@ TIMER_FUNC( skill_keep_using ){
 
 	if( sd && sd->skill_keep_using.skill_id ){
 		clif_parse_skill_toid( sd, sd->skill_keep_using.skill_id, sd->skill_keep_using.level, sd->skill_keep_using.target );
+		sd->skill_keep_using.tid = INVALID_TIMER;
 	}
 
 	return 0;
@@ -12880,7 +12881,7 @@ TIMER_FUNC(skill_castend_id){
 		else
 			skill_castend_damage_id(src,target,ud->skill_id,ud->skill_lv,tick,flag);
 
-		if( sd && sd->skill_keep_using.skill_id > 0 && sd->skill_keep_using.skill_id == ud->skill_id && !skill_isNotOk(ud->skill_id, sd) && skill_check_condition_castbegin(sd, ud->skill_id, ud->skill_lv) ){
+		if( sd && sd->skill_keep_using.tid == INVALID_TIMER && sd->skill_keep_using.skill_id > 0 && sd->skill_keep_using.skill_id == ud->skill_id && !skill_isNotOk(ud->skill_id, sd) && skill_check_condition_castbegin(sd, ud->skill_id, ud->skill_lv) ){
 			sd->skill_keep_using.tid = add_timer( sd->ud.canact_tick + 100, skill_keep_using, sd->bl.id, 0 );
 		}