The problem with doWatch is that the command is satisfied as long as the target object is within the field of view of the loon who is watching. Since a loon's field of view is quite wide, this means that he can apppear to be looking in an entirely different direction and still obey the command.
The solution - although you can't let the player see this happening - is to use a setDir command.
In general lines of code work equally well in scripts, triggers, waypoints and init fields. (There are rare exeptions for init fields.) Usually when a line of code "doesn't work" the problem is one of syntax. Always check it with the command reference.