First of all, the original code isn't terrible IMO. It's pretty understandable and there's nothing inherently bad in it.

Then if you dislike it, building up on @Ewan's idea to use a list but removing his somewhat unnatural `foreach break` pattern:

    while not conditions.head.check() {
      conditions.next()
    }
    conditions.head.alert()

Now adapt this in your language of choice, make each element of the list an object, a tuple, whatever, and you're good.

EDIT: looks like it isn't as clear I thought, so let me explain further. `conditions` is an ordered list of some sort; `head` is the current element being investigated - at the beginning it is the first element of the list, and each time `next()` is called it becomes the following one; `check()` and `alert()` are the `checkConditionX()` and `addAlert(X)` from the OP.