With all the shuffling done over the past two days, a little bug slipped into the movement code in handmade_brain.cpp:

1
2
3
4
5
6
7
8
9
for(u32 E = 0;
    E < 3;
    ++E)
{
    if(NoPush || (TimerIsUp && (Square(ConHero->ddP.E[E]) < 0.1f)))  /* culprit */
    {
        ddP2.E[E] = Cp*(ClosestP.E[E] - Head->P.E[E]) - 30.0f*Head->dP.E[E];
    }
}


ConHero->ddP only has two elements, but the loop is iterating over three.