@Override
    public void update(int delta) {
        int oX = getOwner().getX();
        int oY = getOwner().getY();
        this.aoe.x = oX - (radius / 2) + (getOwner().getW() / 2);
        this.aoe.y = oY - (radius / 2) + (getOwner().getH() / 2);

        if (target == null) {
            if (waited == 0) {
                waited += delta;
            } else if (waited >= delay) {
                waited = 0;
                pickTarget();
            } else {
                waited += delta;
            }
        } else {


            int tX = target.x;
            int tY = target.y;
            float speed = getOwner().getMoveSpeed();
            float dX = tX - oX;
            float dY = tY - oY;
            float dist = (float) Math.sqrt(dX * dX + dY * dY);
            float sX = speed * dX / dist;
            float sY = speed * dY / dist;

            getOwner().addX((int) (sX + 0.5));
            getOwner().addY((int) (sY + 0.5));
            if (getOwner().getHitBox().intersects(new org.newdawn.slick.geom.Rectangle(target.x - 16, target.y - 16, 32, 32))) {
                target = null;
            }
        }

    }