Hey Kyatric/all,
Just a heads up, WP 0 needs to have its id variable changed from 6 to 0 in order to follow the steps properly.
I remember having a similar issue a few years ago trying to comprehend why my logic was failing without a 'for each' when it seemed to be working previously.
I think a clearer example of what you are talking about is when you change the condition to : NPC.Target = Waypoint.ID
(This way when it hasn't picked properly it is more obvious because the NPC's simply wont move).
The answer I got from ramones back in 2013 was :
"I think it's working as intended. I'll try to explain. When you have "Sprite2.number = Sprite.number" it loops through each Sprite2 and each Sprite and compares them.
In your first example it's comparing them like this:
Compare Sprite2(number 3) to Sprite(number 1)
Compare Sprite2(number 2) to Sprite(number 2)
Compare Sprite2(number 1) to Sprite(number 3)
You see it's looping through them both in different orders so only Sprite number 2 matches and it's the only one that moves. If you swap the numbers 1 and 3 on Sprite2 then they will all move."
So it seems it makes one pass without the 'for each'. If they are lucky enough to match up it works but it wont check against each object - just one of them.