For vertex scenes, the instruction only sets the entity's frame and next_frame parameters. For bones scenes, the instruction blends the entity's skeleton between the scenes.
As vertex animation can only blend between two frames, not between three or more, ent_blend can not interpolate between two already-interpolated frames. The source and target frames are not interpolated, but 'snapped' to the next full frame number.
Some snapping is inevitable when using vertex animations. It's better to create some transitional animations yourself, for instance from "walk" at 0% to "stand", and then do something as follows:
if(abs(movement) < 5 or your dist close)
{
if(walk_percentage < 50) walk_percentage = maxv(walk_percentage-2*time_step,0);
if(walk_percentage > 50) walk_percentage = minv(walk_percentage+2*time_step,100);
ent_animate(me,"walk",walk_percentage,ANM_CYCLE);
if(walk_percentage == 0 || walk_percentage == 100)
{
blend_percentage = minv(blend_percentage+2*time_step,100);
ent_blendframe(me,my,"stand",0,blend_percentage); //maybe mixed up the parameters
}
}
Btw. I'm not sure what's the reasoning behind your following 3 lines of code, you are just "overwriting" or undoing stuff that way:
ent_animatefrom(me,me,"run",50,ANM_CYCLE);
ent_blendframe(me,me,"walk",0,25);
ent_animate(my, "walk", walk_percentage, NULL);