aqui el problema es que como estas ejecutando
[gml]alarm[0]=100;[/gml]
en el evento step, esto hace que en cada paso se restablesca alarm[0] a 100 y por lo tanto nunca llegara a 0, y por lo tanto a ejecutar el codigo que contiene. Lo que puedes hacer es usar una variable para que solo se ejecute esa accion una vez y ya quedaria
[gml]if collision_point(soldado_01.x,soldado_01.y,cv2,1,1) {alerta=1;aux=false}
else if aux= false{ alarm[0]=100; aux=true}
if alerta=1 {
mp_potential_settings(1,1,1,1)
mp_potential_step(soldado_01.x,soldado_01.y,1,0)
};[/gml]
[gml]alarm[0]=100;[/gml]
en el evento step, esto hace que en cada paso se restablesca alarm[0] a 100 y por lo tanto nunca llegara a 0, y por lo tanto a ejecutar el codigo que contiene. Lo que puedes hacer es usar una variable para que solo se ejecute esa accion una vez y ya quedaria
[gml]if collision_point(soldado_01.x,soldado_01.y,cv2,1,1) {alerta=1;aux=false}
else if aux= false{ alarm[0]=100; aux=true}
if alerta=1 {
mp_potential_settings(1,1,1,1)
mp_potential_step(soldado_01.x,soldado_01.y,1,0)
};[/gml]