// swim_g_underwate - Go underwater

void fnJump(object oDest)
{
  object oMe=OBJECT_SELF;
  if (GetArea(oDest)!=GetArea(oMe)||GetDistanceBetween(oMe,oDest)>2.0)
  { // jump
    AssignCommand(oMe,ClearAllActions(TRUE));
    AssignCommand(oMe,JumpToObject(oDest));
    DelayCommand(0.5,fnJump(oDest));
  } // jump
} // fnJump()

void main()
{
   object oPC=GetPCSpeaker();
   object oUWDest=GetLocalObject(oPC,"oDest");
   if (oUWDest!=OBJECT_INVALID)
   { // underwater destination exists
     AssignCommand(oPC,fnJump(oUWDest));
   } // underwater destination exists
}