@Override
    public boolean perform(GameEntity performer, GameEntity target) {
        if (target instanceof Actor) {
            Actor actor = (Actor) target;
            if (hardAmount != 0) {
                actor.addHealth(hardAmount);
            } else if (dynamicAmount != null) {
                int maxHealth = actor.getMaxHealth();
                int eighth = maxHealth / 8;

                int health = 0;

                switch (dynamicAmount) {
                case random:
                    // Add between 1/8th and 3/4th of the actor's max health
                    health += new Random().nextInt(eighth * 5) + eighth;
                    actor.addHealth(health);
                    break;
                case eighth:
                    actor.addHealth(eighth);
                    break;
                case quarter:
                    actor.addHealth(eighth * 2);
                    break;
                case half:
                    actor.addHealth(eighth * 4);
                    break;
                case threequarters:
                    actor.addHealth(eighth * 6);
                    break;
                case full:
                    actor.addHealth(maxHealth);
                    break;
                }
            }
        }

        return true;
    }