Setting a Waypoint is as easy as saying "wp" or "set waypoint" to your dog. A Waypoint will then appear under the dog where it is standing. It will automatically be named in numerical order.
Once all Waypoints are created, simply say "guard" to your dog and he will start following the Waypoints.
Other features include the ability to set the speed that the dog moves (in m/s). Simply say "speed 5" and the dog will travel at 5m/s between Waypoints. You can also define a length of time in seconds you want your dog to stay at each Waypoint. So if you want your dog to pause for 5 seconds at each Waypoint, just say "delay 5".
Waypoints are flat 1-prim objects with an animated paw pointing in the direction the dog will face when approaching that Waypoint. This allows you to rotate each Waypoint manually to ensure proper dog rotation as it moves between Waypoints.
Once all Waypoints are set and rotated properly, you can tell your dog "hide wp" to make the Waypoints invisible. If you need to move any of them, say "show wp" to show them again.
If you no longer want your dog to guard, say "come" and he will go back to normal behavior. If you want to remove all Waypoints, say "clear wp" and your dog will remove all Waypoints.
An addition to this trick has been to add a random "bark" every so often while guarding.
Still left to do:
- Make Waypoints specific to each dog so you can have multiple dogs following different sets of Waypoints all on the same property
- Add "phantom" option. This protects dogs from being used as target practice by people with guns while the dog owner is away.
- Possibly integrate "attack" if possible. Not sure about this one.
- Possibly add an avatar sensor that collects names of nearby avs and IMs to owner. Again, not sure about this one.
The reason I'm not sure about a couple of these is because it would require a new sensor, which would potentially override the existing Waypoint sensor. I may be able to combine those into one and perform different actions depending on what was sensed. But no promises.

Any other suggestions? Does this seem like a reasonable and usable trick?