Search in sources :

Example 91 with CNAbility

use of pcgen.cdom.content.CNAbility in project pcgen by PCGen.

the class AbilitySelectionApplication method dataRemoved.

@Override
public void dataRemoved(DataFacetChangeEvent<CharID, CNAbilitySelection> dfce) {
    CharID id = dfce.getCharID();
    CNAbilitySelection cnas = dfce.getCDOMObject();
    PlayerCharacter pc = pcFacet.getPC(id);
    CNAbility cna = cnas.getCNAbility();
    Ability ability = cna.getAbility();
    String selection = cnas.getSelection();
    if (selection != null) {
        ChooseInformation<?> chooseInfo = ability.get(ObjectKey.CHOOSE_INFO);
        if (chooseInfo != null) {
            removeSelection(pc, chooseInfo, cna, selection);
        }
    }
}
Also used : CNAbility(pcgen.cdom.content.CNAbility) Ability(pcgen.core.Ability) CNAbility(pcgen.cdom.content.CNAbility) PlayerCharacter(pcgen.core.PlayerCharacter) CNAbilitySelection(pcgen.cdom.helper.CNAbilitySelection) CharID(pcgen.cdom.enumeration.CharID)

Example 92 with CNAbility

use of pcgen.cdom.content.CNAbility in project pcgen by PCGen.

the class AddTargetedAbilityNormalTest method containsExpected.

@Override
protected boolean containsExpected(Ability granted) {
    Collection<CNAbility> abilities = getTargetFacet().getPoolAbilities(id, AbilityCategory.FEAT, Nature.NORMAL);
    for (CNAbility a : abilities) {
        boolean abilityExpected = a.getAbility().equals(context.getReferenceContext().silentlyGetConstructedCDOMObject(Ability.class, AbilityCategory.FEAT, "Granted"));
        if (abilityExpected) {
            if (pc.getDetailedAssociationCount(a) == 1) {
                if (!pc.getAssociationList(a).get(0).equals("English")) {
                    continue;
                }
                Language english = context.getReferenceContext().silentlyGetConstructedCDOMObject(Language.class, "English");
                languageFacet.contains(id, english);
                return true;
            }
        }
    }
    return false;
}
Also used : CNAbility(pcgen.cdom.content.CNAbility) Ability(pcgen.core.Ability) CNAbility(pcgen.cdom.content.CNAbility) Language(pcgen.core.Language)

Example 93 with CNAbility

use of pcgen.cdom.content.CNAbility in project pcgen by PCGen.

the class PlayerCharacter method getAbilityPoolSpent.

private BigDecimal getAbilityPoolSpent(final AbilityCategory aCategory) {
    double spent = 0.0d;
    Collection<CNAbility> abilities = getPoolAbilities(aCategory, Nature.NORMAL);
    if (abilities != null) {
        for (final CNAbility cna : abilities) {
            Ability ability = cna.getAbility();
            final int subfeatCount = getSelectCorrectedAssociationCount(cna);
            double cost = ability.getSafe(ObjectKey.SELECTION_COST).doubleValue();
            if (ChooseActivation.hasNewChooseToken(ability)) {
                spent += Math.ceil(subfeatCount * cost);
            } else {
                int select = ability.getSafe(FormulaKey.SELECT).resolve(this, "").intValue();
                double relativeCost = cost / select;
                if (aCategory.allowFractionalPool()) {
                    spent += relativeCost;
                } else {
                    spent += (int) Math.ceil(relativeCost);
                }
            }
        }
    }
    if (!aCategory.allowFractionalPool()) {
        return BigDecimal.valueOf((int) Math.ceil(spent));
    }
    return BigDecimal.valueOf(spent);
}
Also used : CNAbility(pcgen.cdom.content.CNAbility) CNAbility(pcgen.cdom.content.CNAbility)

Example 94 with CNAbility

use of pcgen.cdom.content.CNAbility in project pcgen by PCGen.

the class PlayerCharacter method getAbilityList.

private Set<Ability> getAbilityList(Category<Ability> cat, Nature nature) {
    Set<Ability> newSet = new HashSet<>();
    Collection<CNAbility> cnas = grantedAbilityFacet.getPoolAbilities(id, cat, nature);
    for (CNAbility cna : cnas) {
        newSet.add(cna.getAbility());
    }
    return newSet;
}
Also used : CNAbility(pcgen.cdom.content.CNAbility) CNAbility(pcgen.cdom.content.CNAbility) HashSet(java.util.HashSet)

Example 95 with CNAbility

use of pcgen.cdom.content.CNAbility in project pcgen by PCGen.

the class PlayerCharacter method getConsolidatedAssociationList.

public List<String> getConsolidatedAssociationList(CDOMObject cdo) {
    if (cdo instanceof Ability) {
        List<String> list = new ArrayList<>();
        List<CNAbility> cnabilities = getMatchingCNAbilities((Ability) cdo);
        for (CNAbility cna : cnabilities) {
            list.addAll(getAssociationList(cna));
        }
        return list;
    } else if (cdo instanceof ChooseDriver) {
        return getAssociationList((ChooseDriver) cdo);
    } else {
        //					+ cdo.getClass() + " but it is not a ChooseDriver");
        return Collections.emptyList();
    }
}
Also used : CNAbility(pcgen.cdom.content.CNAbility) CNAbility(pcgen.cdom.content.CNAbility) ChooseDriver(pcgen.cdom.base.ChooseDriver) ArrayList(java.util.ArrayList)

Aggregations

CNAbility (pcgen.cdom.content.CNAbility)131 Ability (pcgen.core.Ability)77 ArrayList (java.util.ArrayList)37 CNAbilitySelection (pcgen.cdom.helper.CNAbilitySelection)28 AbilityCategory (pcgen.core.AbilityCategory)26 Test (org.junit.Test)21 HashMapToList (pcgen.base.util.HashMapToList)16 List (java.util.List)15 PlayerCharacter (pcgen.core.PlayerCharacter)9 Language (pcgen.core.Language)7 HashSet (java.util.HashSet)5 Nature (pcgen.cdom.enumeration.Nature)5 SpecialAbility (pcgen.core.SpecialAbility)5 BonusObj (pcgen.core.bonus.BonusObj)5 BigDecimal (java.math.BigDecimal)4 CDOMObject (pcgen.cdom.base.CDOMObject)4 LoadContext (pcgen.rules.context.LoadContext)4 StringTokenizer (java.util.StringTokenizer)3 GenericMapToList (pcgen.base.util.GenericMapToList)3 PCClass (pcgen.core.PCClass)3