Well. The thing is that the 'on end' is buried deep down under a bunch of conditions. This 'on end' is a trigger.
That means, when 'it' happens, the normal top-top down execution of the events is halted. The trigger fires and executes its actions. Then we go further with the normal top-top down execution.
Thing is, when you code a trigger as sub under a condition, the trigger first has to look up if it is allowed to run. The else is no sub, so the trigger cant really go up to its real parent condition. (in my eyes it should) Result: the trigger thinks it can execute its actions. I dont know if this is due the 3th party or a general thing.
You should never bury a trigger that deep down. Always gives you problems.
Solution: Bring the trigger up. Combine it with a 'if player.x > ..." You have now of course another thing to consider. The 'on end' picks only that one that just ended. Need to destroy them all, use 'pick all' or use a function (functions pick from scratch). If this does not solve the problem, it means this 3th party trigger does not look up if it is allowed to execute.
Besides that. As far as i can see. The last dot does not move. The other dots are wayyyyyyyy done moving when the player is reaching quepoint. Therefor, there will be NO trigger happening when the player is past that point.
Again. A trigger happens. You can use it only once and only on the moment that it happens. It is not info that is readable/available from the moment that it happend and later on. It happens now, on this moment and only now on this moment. If you missed the moment, it is gone.