MentWhile забыли, у вас однократная проверка там.
А настройки квеста q5 правильные? Может, он сам инициирует проигрыш.
Ну и хорошо бы сделать так, чтобы в функции lostDragon выходить из цикла, когда dragon==0, чтобы не было постоянных бессмысленных проверок.
Во истину, теперь когда город ЛЭ захвачен - и кв проваливается и игра проиграна.
Но другую проблему я так и не решил. Задание q5 в редакторе корректное, кайнд_мануал в условиях, не думаю, что корень проблемы там.
А как мне остановить цикл этот?
Так де немного подредактировал эту фунцкию в надежде на исправление, однако провал. На всякий случай скину еще раз, чтобы не искать.
SetRegionBlocked ('CheckAstrid', true)
function lostDragon() ---- Проверка потери дракона
while 1 do
sleep ( 10 );
if GetHeroCreatures("Ohtarig", 83) == 0 and dragon == 1 and
SetRegionBlocked('CheckAstrid', false) then
SetObjectiveState("q5", OBJECTIVE_FAILED, 1);
sleep ( 10 );
Loose();
break
end;
end;
end;
startThread (lostDragon)
И, собственно момент, когда дракон должен пропасть из армии, квест по его сохранению провалится, но игра должна продолжиться.
function PokaAstrida()
SetRegionBlocked ('CheckAstrid', false, 1)
dragon = 0
RemoveHeroCreatures('Ohtarig', 83, 1)
StartDialogScene("/Maps/SingleMissions/ChoiseOTW1/Test/DialogScene.xdb#xpointer(/DialogScene)")
sleep(5)
StartCombat('Ohtarig', nil, 1, 41, 1, nil, nil, nil, nil)
sleep(5)
MessageBox("/Maps/SingleMissions/ChoiseOTW1/MagiPoka.txt");
sleep(5)
SetObjectiveState("q5", OBJECTIVE_FAILED);
Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", nil);
sleep(5)
RemoveObject('lich1')
RemoveObject('lich2')
RemoveObject('lich3')
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER , "Corrupted", 'PokaAstrida');
Здесь всё работает до того момента, когда ты выходишь из боя. Далее, как я полагаю, идёт проверка наличия юнита - его нет - проиграл.