Первое: если город эльфов захватил игрок 2, то ты должен проиграть, но игра продолжается.
Не продолжается - проигрываешь
Ну и хорошо бы сделать так, чтобы в функции lostDragon выходить из цикла, когда dragon==0, чтобы не было постоянных бессмысленных проверок.