The refactoring for character controllers is 100% done.
Some of the pathfinding for Sera has been simplified and improved as well, she used to dash into stuff at corners, but now checks if she has a clear line of sight to the enemy. Sera no longer loses health (on the default difficulty) for normal attacks. In exchange, Lea has lost the ability to easily attack multiple opponents with her default ranged weapon. Enemies are also now more aggressive, and more enemies will be added.
The current code is structured in a way where I can dereference a few nodes, reference a player module, swap out a state machine, and that should automatically convert Sera to a playable character. Last thing to do for co-op is to introduce some input filtering. Just need to get a decent joypad for testing first. The idea is to allow someone to just plug in a controller, hit a button and join at anytime during the game.
I'm back to working out the last few bugs in the boss fight.
prototype design of the new enemy 
Also, some old concept art of the gatherers, the first enemies that are encountered in the game. 