I, too, like Vicious have done a 'real' AI, but I still think I can give you some advice.
Yes, you have to prioritize of course. However, I think you should prioritize at more than one level; I'll explain.
The categories you listed for certain actions in the game are "bomb layed", "player died", and "item dropped". The categories you listed for certain actions the AI should take are "keep moving", "get item", "avoid explosions", "kill player", and "destroying blocks". However, I'm sure that there are more, but that is irrelevant.
For each game action there should have a list of the actions the AI should take. For example the number one response the AI should have to a bomb being layed would be for the AI to avoid an explosion. The AI's second response might be to keep moving (after the AI's action of avoiding explosions should come this). The AI's third response might be to try to kill the player (after the AI has avoided all of the explosions and went is on the 'move'). For each game action you should list the all of the possible reactions the AI should take.
You'll notice that I added in after a certain AI reaction has been performed. The AI should not only be able to react to the human, yet, act on it's own. What exactly do I mean by this? If you will have your list of (re)actions the AI should take to a game action. While the AI has to be able to react to ingame situations, it needs to be able to create it's own actions for the player to have to react to. Rather than the player constantly acting upon a reaction of the AI, the player will have to ract upon the reaction and action of the AI.
By using the method I mentioned I believe you will be able to achieve a fairly potent AI. If you are still unclear you can look at this pseudo example I'm going to give you below.
Code:
if(bomb laid)
{
detect bomb();
if(area == not safe)
{
find safe area to move to();
if(player == near && player area === safe)
{
kill_player();
}
}
if(area == safe && other area == safe)
{
find the safe area to move to();
if(player == near && player area === safe)
{
kill_player();
}
}
if(area == safe && other area == not safe)
{
wait();
while( wait() )
{
optimize wait(); //e.g. health, items, collect, etc...
}
}
}
It seems to me that an algorithm would work efficiently, but I may be wrong. Remember that I have only done tic-tac-toe AI, so I could very well be wrong in thinking that an algorithm of that sort will work. However, I think it will work and quite well too.