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 } }