Почему такой синтаксис не работает?

while (true) {
    var enemy = hero.findNearestEnemy();
        if (hero.isReady("cleave")) {
            hero.cleave(enemy);
        } else {
            hero.attack(enemy);
        }
}

Тут по логике герой должен давать cleave (независимо ни от чего), а если клив не готов - бить с руки врага. А когда ударит - цикл заново начинается. И по идеи нам не важно, есть ли враг поблизости, т.к. hero.findEnemy его полюбому найдет и запишет в переменную. Потом даст клив (если готов), иначе снова ударит с руки того, кто попал в переменную enemy. Но почему то эта логика не работает.

Нет проверки, найден ли враг. Если врагов нет, то переменная enemy == null.

То есть 1ый if все равно выполнится, а потом уже елсе не запустится?

Выполнится hero.cleave(null);

А null это не тот параметр, который можно передавать в этот метод.

А, спасибо, забыл, что для круговой атаки все равно нужна цель. Так бы можно было как бешеному, воздух атаковать. Жаль:)