I see that you committed some updates already. I'll include all my notes here anyway.
Do we want to have an intelligent AI that tries to defeat the player, or just an AI that does something? Maybe some randomness would also add some challenge.
"default movement is to stay put?" Okay, I can see that working as a template for movement, but I think you should consider "default movement is to stay in formation"
One of the main issues commonly met with AI (mostly this can be seen when a non-casual player plays a casual game) is that the AI is designed to hurt the player. I'd rather like to see an AI that tries to minimize losses and survive through the battle.
Ideas for improving the ai:
- Each creature has intelligence. This defines whether or not it can think rationally and consider tactics at all.
- Each creature has objectives. These are used to select the next action - may it be attacking some target, getting to formation or just staying alive. Objectives are updated at the beginning of each turn
- Create a threat list. The list defines the potential threat from each of the player characters and then assigns them as top priority goals. The threat rating would be calculated by including a simple function based on the character (youmu is stronger than chen...), level, hp, damage and traits
- I looked at the objectives.py and noticed that the only "objective" enemy units have is defeating all player characters. I think that some sort of hierarchical system might work here, such as aiming for the main objective, but calculating if some other objective seems more important at the moment.
It would be useful to get some sort of output for AI behaviour to the console. It doesn't make much sense at some points, and clearly the AI makes some bad choices at the moment.