All Downloads are FREE. Search and download functionalities are using the official Maven repository.

simple.server.extension.d20.check.AbstractCheck Maven / Gradle / Ivy

The newest version!
package simple.server.extension.d20.check;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import marauroa.common.game.Attributes;
import simple.server.extension.d20.ability.D20Ability;
import simple.server.extension.d20.dice.DieRoll;
import simple.server.extension.d20.dice.RollResult;
import simple.server.extension.d20.rpclass.AbstractClass;
import simple.server.extension.d20.rpclass.D20Class;

public abstract class AbstractCheck implements D20Check {

    protected List> abilities = new ArrayList<>();
    private final static Logger LOG
            = Logger.getLogger(AbstractCheck.class.getSimpleName());

    @Override
    public final List> getAbilities() {
        return abilities;
    }

    @Override
    public RollResult getCheckRoll(D20Class clazz) {
        //By default just rool a d20 and add the abilities modifiers.
        int mod = 0;
        for (Class a : abilities) {
            try {
                D20Ability ability = a.newInstance();
                if (((Attributes) clazz).has(ability.getCharacteristicName())) {
                    int temp = ((AbstractClass) clazz).getAbilityModifier(a);
                    LOG.log(Level.INFO, "Adding modifier from: {0} = {1}",
                            new Object[]{ability.getCharacteristicName(), temp});
                    mod += temp;
                }
            } catch (InstantiationException | IllegalAccessException ex) {
                LOG.log(Level.SEVERE, null, ex);
            }
        }
        return new DieRoll(1, dieType(), mod).makeRoll();
    }

    @Override
    public int dieType() {
        return 20;
    }

    @Override
    public String getCharacteristicName() {
        return getClass().getSimpleName().replaceAll("_", " ");
    }

    @Override
    public String getShortName() {
        return getClass().getSimpleName().substring(0, 3).toUpperCase()
                + "Check";
    }

    @Override
    public String getDescription() {
        return getClass().getSimpleName().replaceAll("_", " ");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy