public MapObject findNextTargetObject() {
    for (Robot robot : current_room.getRobots()) {
      if (robot.isVisible() && shouldTargetObject(robot) &&
              (!bound_pyro.isCloaked() || Math.random() < TARGET_ROBOT_WHEN_CLOAKED_PROB)) {
        return robot;
      }
    }
    for (Powerup powerup : current_room.getPowerups()) {
      if (shouldTargetObject(powerup) && shouldCollectPowerup(powerup)) {
        return powerup;
      }
    }
    return null;
  }