I would recommend you use global values - when anything happens set a value rather than all the negated conditions.
For example morph is active set global.morph = 1
Then when down arrow is pressed
+ global.morph = 1
change animation to crouch down
If the player overlaps a ladder set global.climb = 1
then when up arrow is pressed
+ global.climb = 1
change animation to ladder climb
when up arrow is pressed
+ global.climb = 0
change animation to jump
I would also recommend that you only have one character. When something is happening and you don't have enough animations you can at that point replace it with a new character.
Create Character B at location Character A then delete Character A and when Character B is done create character A again.
Again if you want different uniforms and you've used values you can have:
global.uniform = 1
create character C from Character A
global.uniform = 2
create character D from Character A
Having two characters run like that is going to create problems for you.