Ta funkcja zwraca czy instancja osiągnęła pozycję xgoal i ygoal a nie czy się rusza.
No i do poruszania instancją nie używa vspeed, hspeed, speed tylko po prostu od razu przenosi instację na wolną pozycję o krok określony w parametrze "speed" dlatego mimo że instancja się rusza to jej zmienna speed nadal jest równa 0.
W ten sposób powodujesz że instancja rusza się podwójnie i podwójnie wylicza czy pozycja do której ma zamiar się udać jest wolna
GML
mp_potential_step(xx,yy,4,false)
if mp_potential_step(xx,yy,4,false)=false // gdy postać się porusza to...
{