MaiorPain в отдельном потоке имхо лучше, если вы в чём-то накосячите, то это приведёт только к неудачному касту, а без потока функция вылетит и не выполнит кусок кода.
И насколько я понимаю, вы же делаете каст юнитом во время его хода в хуке UnitMove(unit)? Тогда если каст состоялся, нужно просто чтобы эта функция вернула not nil и игра не будет сама управлять этим существом в этот ход.