So I've continued to look into why it seems like the AI is able to get around monsters easier than humans.
I know what the code says but I also know what I see with my own eyes.
I've finally reached a conclusion as to why it seems like AI players don't get attacked by monsters as much -- it's all in the movement.
Elemental games are based on a simulatenous move system. This is a hold-over from War of Magic which was a multiplayer game.
The attacks, however, occur based on hit detection. That is, a unit moves into a tile, it sees if there is a unit there and if so, a hit occurs and that is worked out.
If human beings were fast enough, they could avoid getting attacked by monsters simply by moving their unit before the monster moves into that tile. As a practical reality, humans aren't fast enough. But you know who are? Computer players.
Picture this scenario:
for i = 1 to number_of_players
MoveUnitsforPlayer(i)
Where the monster player is the last player to move.
So what happens is that a monster will target say a pioneer on turn 50. On turn 51, the AI player moves its unit and the monster moves to the tile the AI unit was in (missing it). This is exacerbated when they are off screen since movement is instant when there's nothing to animate.
That said, I can assure you that the monsters do attack cities just as often as human players. Statistically, it's the same amount and I have added code so that the AI will occasionally when when one of its cities gets destroyed by monsters to better communicate that yea, the AI has a real problem with monsters city-wise.
But unit wise, it's going to take some thought on how to do this. Most of the easy solutions would result in late game turns taking much longer (everyone moving at once is great).
I may, just to be a bastard, reverse the order of moving so that the monsters move first. 