diff --git a/client/CPlayerInterface.cpp b/client/CPlayerInterface.cpp index 657120fd1..d1627c14f 100644 --- a/client/CPlayerInterface.cpp +++ b/client/CPlayerInterface.cpp @@ -2428,11 +2428,18 @@ void CPlayerInterface::artifactDisassembled(const ArtifactLocation &al) void CPlayerInterface::playerStartsTurn(ui8 player) { EVENT_HANDLER_CALLED_BY_CLIENT; - if (GH.listInt.empty() || GH.listInt.front() != adventureInt) + + if (!vstd::contains (GH.listInt, adventureInt)) { - GH.popInts(GH.listInt.size()); - GH.pushInt(adventureInt); + GH.popInts (GH.listInt.size()); //after map load - remove everything else + GH.pushInt (adventureInt); } + else + { + while (GH.listInt.front() != adventureInt && !dynamic_cast(GH.listInt.front())) //don't remove dialogs that expect query answer + GH.popInts(1); + } + if(howManyPeople == 1) { GH.curInt = this;