The territories are loaded via a CSV database and a colored map (examples are available in the app), the database must be UTF-8 encoded.
At every iteration a random territory is chosen; if this territory is occupied, it can rebel against the occupier and get back its freedom with a configurable probability, otherwise a normal battle is carried out and its closest non-allied neighbor is then the defender.
The two challengers win with a probability that is proportional to the respective power.
If the defendant resists, the process restart until an attacker wins or a successful rebellion takes place. When the attacker wins, the defendant becomes part of the attacker.
If the attacker was occupied, the invasion is conducted on behalf of the attacker's occupier.
The game stops when all the territories belong to one.
For every iteration, an image file representing the current situation is saved and a description is generated. A summary is also generated at configurable intervals.
The reports content is configurable as well as the battle logo and the local vassal logo.
The reports are also automatically exported as text file.
The colors white (255,255,255) and black (0,0,0) can not be used for territories on the map.
Breakpoint files can be generated and then reloaded to restart the war from a specific scenario.
The results can be directly posted via Telegram bot.