private boolean actAttack(HeroAction.Attack action) { enemy = action.target; if (Level.adjacent(pos, enemy.pos) && enemy.isAlive() && !isCharmedBy(enemy)) { spend(attackDelay()); sprite.attack(enemy.pos); return false; } else { if (Level.fieldOfView[enemy.pos] && getCloser(enemy.pos)) { return true; } else { ready(); return false; } } }