Start off with a low number of conditions for the main animations, so running right = running anim, running left = running anim+mirrored, not running = idle. You are bound to come across logic that conflicts with other logic when playing certain anims, bugs are expected but they can be easily fixed if you keep the logic simple and not too convoluted. I'm not sure something like 'is on ground' is needed unless you're triggering different anims for different types of ground. If you're coming across any specific problems then detail them here and someone will help simplify the logic.