I think this is what you want:
Code:
LEVEL_VERSION(1)
IF(PLAYER1,DUNGEON_DESTROYED == 1)
IF(PLAYER2,DUNGEON_DESTROYED == 1)
IF(PLAYER3,DUNGEON_DESTROYED == 1)
QUICK_OBJECTIVE(1,"Destroy the heroes would you.",PLAYER_GOOD)
MAGIC_AVAILABLE(PLAYER0,POWER_DESTROY_WALLS,1,1)
ENDIF
ENDIF
ENDIF
IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES <= 0)
QUICK_OBJECTIVE(2,"You rock!",ALL_PLAYERS)
WIN_GAME
ENDIF
ENDIF
You can't say 'IF(ALL_PLAYERS,DUNGEON_DESTROYED == 3)'. It is a boolean value, so either 0 or 1 is allowed. So 'ALL_PLAYERS,DUNGEON_DESTROYED == 0' means there is at least one player (player good for example that is not destroyed), and 'ALL_PLAYERS,DUNGEON_DESTROYED == 1' means 'All players are destroyed'.
I haven't tested it, by my guess is it is impossible to ally to the heroes. Worth trying though!
Code:
ALLY_PLAYERS(PLAYER_GOOD,PLAYER0,1)