public virtual  void onTargetExitLOS(AIPlayer obj){}
public virtual  void onReachDestination(AIPlayer obj){}
public virtual  void onTargetEnterLOS(AIPlayer obj){}
public virtual  void onMoveStuck(AIPlayer obj){}
 public override void onTargetExitLOS(AIPlayer obj)
 {
     setImageTrigger(0, false);
 }
 public override void onTargetEnterLOS(AIPlayer obj)
 {
     setImageTrigger(0, true);
 }
 public override void onReachDestination(AIPlayer obj)
 {
     if (this["HoldAndFire"].AsBool())
         return;
     if (this["path"] == "")
         return;
     MoveToNextNode();
 }
 public override void onMoveStuck(AIPlayer obj)
 {
     SimSet path = this["path"];
     uint targetnode = this["targetNode"].AsUint();
     Marker node = path.getObject(targetnode);
     TransformF t = node.getTransform();
     t.mPositionZ += r.Next(10, 100);
     t.mPositionX += r.Next(10, 30);
     t.mPositionY += r.Next(10, 30);
     this.setTransform(t);
 }