no, it's not about "least consequential" but about "most unjustified".
as long as you have even more unjustified measures in place, you will have a hard time fighting the less unjustified
blocks _ _ True = True
blocks Tile{isWater} floats _ = not isWater || floats
blocks Creature{} _ _ = True
blocks Fire{} _ _ = False
blocks Wall{} _ _ = True
it does not get much closer to truth-tables, if you ask me