Well, the thing is you should gather your inputs in a single event.
I mean, when you are pressing left arrow AND you don't have a gun AND the "Walk" animation is not currently playing, play it. When you are pressing left arrow AND you have a gun AND the "Lazerwalk" animation is not currently playing, play it. And so on.
Currently, each tick, your code reads your input, sets the walk animation, then read again your input and sees that you are having the gun, and so setting the lazerwalk animation.
Plus the fact that all the collision polygon are off, so in addition to that there is often some "Platform on landed" interrupting in there as well.
Corrected capx (Made in Beta 226 see at the bottom of the page for a link if you haven't it).