Well, I still don't understand how this plays out exactly, but indeed disabling the transparency and lowering the gamespeed shows that the dog was not sent back to x=288.
What appears to be the problem is the statement in room_AfterFadeIn(): cDog.Walk(120, 275, eNoBlock, eAnywhere);
In repexec the dog should be sent back when it's at x=195, but it looks like the instruction to walk to x=120 takes precedence. Is that possible?
It seems to be fixed if I set the statement in afterfadein to cDog.Walk(192, 275, eNoBlock, eAnywhere);
So it looks like my problem is solved, but if anyone understands what was really happening here I'd love to know.
Thanks
What appears to be the problem is the statement in room_AfterFadeIn(): cDog.Walk(120, 275, eNoBlock, eAnywhere);
In repexec the dog should be sent back when it's at x=195, but it looks like the instruction to walk to x=120 takes precedence. Is that possible?
It seems to be fixed if I set the statement in afterfadein to cDog.Walk(192, 275, eNoBlock, eAnywhere);
So it looks like my problem is solved, but if anyone understands what was really happening here I'd love to know.

Thanks