Где проверяется нашел верно. Если метод возвращает (return) значение false, то передвижение не происходит; если true то происходит. Теперь смотрим как выполнение метода может завести тебя в false. Для этого необходимо чтобы два свойства - IsCasting и BlocksMovement были истинны (true). Смотрим где эти свойства объявлены:
Код
public virtual bool IsCasting{ get{ return m_State == SpellState.Casting; } }
public virtual bool BlocksMovement{ get{ return true; } }
Т.е. IsCasting дает true только когда какое-то поле m_State находится в положении Casting. BlocksMovement дает true всегда. С IsCasting все интуитивно понятно по названиям (ее и поля m_State) - это текущее состояние заклинателя, т.е. попросту она показывает произносится сейчас заклинателем это заклинание или еще нет (или уже было произнесено). Можно и дальше копать в каких случаях какое значение принимает m_State, если интересно посмотри. С BlocksMovement вообще все тривиально, она всегда по определению true, ни от чего не зависит и ее-то править и нужно.
Резюме. Нужно перевести BlocksMovement в положение false