The ship won't show up right away, for example; Butcher, Oot, Freeport, have invisible 'watchers', that wait for PC activity in any one of these zones, and determine where the ship might be, then move it along tell it gets to where you are.
Lets say you're in butcher, waiting for the boat to FP (oot), no one else is in the other two zones. Although the zones are static, the Perl scripts still will not work if there are no Pc's (players) in the zone.
So we have to work with the zone you are in; the 'watcher' in butcher will look for grid movement in each of the other zones via the global variable changes(everytime the boat moves from one wp to another, the global variable changes) , no movement in Oot, then check FP; no movement in Fp, then we can start it up in Butcher. It's sort of a
hopefully fool proof system, where the boat will always be only in one spot at any given time. if there are PC's in the other zones, then the wait will probably be longer, as the ship will have to run all the waypoints in the zone.
So far, it has worked for me, and no one else has said anything , so I belive it's working

.
try waiting some at the pier for the boat to show up.