The following is an untested template for what you wanted. Again, there are places that are abbreviated where I used method calls to simplify the code into a summary format.
// instance fields
private Actor pursued;
private int obstacleTimer;
// in act or a method it calls
if (persued == null)
{
if (getObjectsInRange(800, Gun_Test1.class).isEmpty())
{
randomMovement(); // replace with appropriate code or method call
return;
}
else
{
persued = (Actor)getObjectsInRange(800, Gun_Test1.class).get(0);
}
}
if (persued != null)
{
if (obstacleTimer == 0)
{
if (obstructedView(this, persued))
{
obstacleTimer = 100;
}
else
{
persue(); // replace with appropriate code or method call
return;
}
}
if (obstacleTimer > 0)
{
if (--obstacleTimer == 0)
{
if (obstructedView(this, persued))
{
persued = null;
}
}
else
{
if (obstructedView(this, persued))
{
obstructedMovement(); // replace with appropriate code or method call
return;
}
else
{
obstacleTimer= 0;
persue(); // replace with appropriate code or method call
return;
}
}
}
else
{
persue(); // replace with appropriate code or method call
}
}

