Hmmm, this line seems to be the culprit in the mega man object in the drawing event:
if global.charge=1{draw_sprite(sprChargeA,-1,x,y)}
The -1 must mean the current sub-image of the sprite_index. When you jump it's only 1 sub-image. Thus the charge will only show one sub-image. When you run it's 21 I believe, and when you shoot in mid-air 6 sub-images, so it gives you the illusion that the charge animation is correct. Alas it is not.
One way to correct it:
In creation event:
charge_index = 0;
In draw event replace: if global.charge=1{draw_sprite(sprChargeA,-1,x,y)} with:
frame += 1;
if (global.charge == 1)
{
draw_sprite(sprChargeA, frame, x, y);
if (frame mod 10 == 0)
frame = 0;
}
worked for me.