Здравствуйте. Подскажите, пожалуйста: как в боевом скрипте дождаться окончания проигрываемой анимации.
Обязательно ли запускать анимацию в отдельном потоке, или можно запускать её в основном?
Идея боя такая, что при ходе юнита, юнит накладывает на случайный стек игрока слепоту. Необходимые проверки на применимость вызваны до вызова этой функции. Проблема в том, что получается ситуация, когда юнит двигается, потом анимация движения прерывается, он начинает анимацию каста, и анимация каста прерывается не закончившись анимацией атаки, если юнит изначально планировал атаковать стек игрока.
Вот код используемых функций:
function Cast(unit, target)
combatSetPause(not nil);
CastBlindForFree(unit, target);
playAnimation(target, 'hit', ONESHOT_STILL);
table.insert(blind_array, target);
combatSetPause(nil);
return not nil
end
function CastBlindForFree(caster, target)
SetUnitManaPoints(caster, 100);
local mana_before_cast = GetUnitManaPoints(caster);
repeat sleep(1) until(GetUnitManaPoints(caster) == 100);
UnitCastAimedSpell(caster, SPELL_BLIND, target);
sleep(4);
SetUnitManaPoints(caster, mana_before_cast);
repeat sleep(1) until(GetUnitManaPoints(caster) == mana_before_cast);
end
Другими словами именно логика отрабатывает корректно, а как синхронизировать анимации, чтобы они проигрывались последовательно, а не основные игровые анимации прерывали анимацию каста.
Большое спасибо за уделённое время и внимание к прочтению вопроса, будут благодарен за информацию.