Anyway, so far I'm under the impression that unpredictability=fun, as players can't map out in their head what will happen before the game even starts. They will have to adapt to different scenarios in order to win.
I have a system set up something like this.
mob/proc/Boss_action()
var/R=rand(1,5)
if(R==1)
Effect1()
Effect2()
if(R==2)
Effect3()
if(R==3)
if(prob(10))
Ultimate_Effect()
else
R=4
if(R==4)
Effect4()
if(R==5)
Effect5()
mob/proc/Effect1()
world << "Boss attacks all the enemies around him."
mob/proc/Effect2()
world << "Boss incapacitates one enemy around him."
mob/proc/Effect3()
world << "Boss causes an earthquake."
mob/proc/Ultimate_Effect()
world << "Boss summons three dragons!"
mob/proc/Effect4()
world << "Boss claws at two enemies around him"
mob/proc/Effect5()
world << "Boss conjures a potion and drinks it to restore health."
Anyway, any suggestions? Comments? Tips? Links? Anything?
I'm not saying don't use an element of randomness at all, but make it so these random actions are based on other things, which make the boss somewhat predictable, but not always so.
Base the randomness off of other things and conditions.
An example might be a boss that can punch you, fire a fireball at you, and summon a goon.
In melee range it might be much more prone to punching you, with a lesser chance of shooting a fireball at you, and rarely it might summon a good.
But at a melee range it will most likely shoot a fireball at you, it might also have a decent chance of summoning a good, if it does neither of those then it simply tries to get in melee range to punch you instead.
This sort of AI still makes the boss somewhat unpredictable, but not so much so that it is totally random. A player will still be able to make a good guess of what it is going to do based on how close to the boss they are.
Obviously, the conditions can be more or less anything present in the game.
They could be based on how much health the boss has, it's position relative to the players, how many players there are, how many allies/goons it has and so on.
You can also use multiple conditions.
Depending on how you make use of such an AI it can range from pretty simple to an AI that seems amazingly complex.
Another thing I find that works well with an AI like this is to give the boss a "theme" so to say.
Maybe the boss is offensively very poor, but defensively it is very strong, it may even be able to reflect/counter incoming attacks.
It might specialize at crippling a certain type of player (such as magic users).
It might just use a specific type of attack a lot (such as attacks of a specific element).