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