The AI uses the java services architecture for the bundled AIs as well as to allow for additional AIs.
You can add an additional AIs by adding to the file:Inside the main jar file or creating a new jar with a file in the same location that contains a list of classes, one on each lineMETA-INF/services/net.yura.domination.engine.ai.AIManager
Each of the classes need to implement the AI interfacenet.yura.domination.engine.ai.AISubmissive net.yura.domination.engine.ai.AIEasy net.yura.domination.engine.ai.AIAverage net.yura.domination.engine.ai.AIHard net.yura.domination.engine.ai.AITest
Each AI needs to have a unique id. It can be any positive integer that does not clash with existing ids, it is returned by this method:
Each AI also has a unique String, this is used for selecting the AI and should also not clash with any existing AIs and not contain any spaces (e.g. aggressive)int getType();
Here are the existing types and commands that come with the game:String getCommand();
Before each turn of the AI this method is called in order to give the current game object to the AI.
class type command reserved for human players 0 AISubmissive 3 crap AIEasy 1 easy AIAverage 4 average AIHard 2 hard AITest 5 test
These are the methods that are called depending on the current state of the game, they all return a String that is the command which is passed back to the game.void setGame(RiskGame game);
The list of commands can be found in hereString getBattleWon(); String getTacMove(); String getTrade(); String getPlaceArmies(); String getAttack(); String getRoll(); String getCapital(); String getAutoDefendString();