Search in sources :

Example 91 with Skill

use of pcgen.core.Skill in project pcgen by PCGen.

the class AbstractGlobalTargetedSaveRestoreTest method testGlobalCSkill.

@Test
public void testGlobalCSkill() {
    PCClass monclass = create(PCClass.class, "MonClass");
    new HdToken().parseToken(context, monclass, "8");
    new TypeLst().parseToken(context, monclass, "Monster");
    Skill granted = create(Skill.class, "Granted");
    new ExclusiveToken().parseToken(context, granted, "Yes");
    T target = create(getObjectClass(), "Target");
    Skill skill = create(Skill.class, "MySkill");
    new ExclusiveToken().parseToken(context, skill, "Yes");
    new CskillLst().parseToken(context, target, "Granted");
    Object o = prepare(target);
    finishLoad();
    pc.incrementClassLevel(1, monclass);
    pc.setHP(pc.getActiveClassLevel(monclass, 0), 3);
    assertEquals(SkillCost.EXCLUSIVE, pc.getSkillCostForClass(granted, monclass));
    applyObject(target);
    assertEquals(SkillCost.CLASS, pc.getSkillCostForClass(granted, monclass));
    final Runnable cleanup = getPreEqualityCleanup();
    Runnable fullcleanup = new Runnable() {

        public void run() {
            if (cleanup != null) {
                cleanup.run();
            }
            //TODO need this to create the spell support :/
            PCClass cl = context.getReferenceContext().silentlyGetConstructedCDOMObject(PCClass.class, "MonClass");
            reloadedPC.getSpellSupport(cl);
        }
    };
    runRoundRobin(fullcleanup);
    assertEquals(SkillCost.CLASS, pc.getSkillCostForClass(granted, monclass));
    assertEquals(SkillCost.CLASS, reloadedPC.getSkillCostForClass(granted, monclass));
    remove(o);
    reloadedPC.setDirty(true);
    assertEquals(SkillCost.EXCLUSIVE, reloadedPC.getSkillCostForClass(granted, monclass));
}
Also used : Skill(pcgen.core.Skill) CskillLst(plugin.lsttokens.CskillLst) HdToken(plugin.lsttokens.pcclass.HdToken) CDOMObject(pcgen.cdom.base.CDOMObject) PCClass(pcgen.core.PCClass) TypeLst(plugin.lsttokens.TypeLst) ExclusiveToken(plugin.lsttokens.skill.ExclusiveToken) Test(org.junit.Test)

Example 92 with Skill

use of pcgen.core.Skill in project pcgen by PCGen.

the class MonccskillToken method unparse.

@Override
public String[] unparse(LoadContext context, Race race) {
    CDOMGroupRef<ClassSkillList> monsterList = context.getReferenceContext().getCDOMTypeReference(ClassSkillList.class, "Monster");
    AssociatedChanges<CDOMReference<Skill>> changes = context.getListContext().getChangesInList(getTokenName(), race, monsterList);
    List<String> list = new ArrayList<>();
    Collection<CDOMReference<Skill>> removedItems = changes.getRemoved();
    if (removedItems != null && !removedItems.isEmpty()) {
        if (changes.includesGlobalClear()) {
            context.addWriteMessage("Non-sensical relationship in " + getTokenName() + ": global .CLEAR and local .CLEAR. performed");
            return null;
        }
        list.add(Constants.LST_DOT_CLEAR_DOT + ReferenceUtilities.joinLstFormat(removedItems, "|.CLEAR."));
    }
    if (changes.includesGlobalClear()) {
        list.add(Constants.LST_DOT_CLEAR);
    }
    MapToList<CDOMReference<Skill>, AssociatedPrereqObject> map = changes.getAddedAssociations();
    if (map != null && !map.isEmpty()) {
        Set<CDOMReference<Skill>> added = map.getKeySet();
        for (CDOMReference<Skill> ab : added) {
            for (AssociatedPrereqObject assoc : map.getListFor(ab)) {
                if (!SkillCost.CROSS_CLASS.equals(assoc.getAssociation(AssociationKey.SKILL_COST))) {
                    context.addWriteMessage("Skill Cost must be " + "CROSS_CLASS for Token " + getTokenName());
                    return null;
                }
            }
        }
        list.add(ReferenceUtilities.joinLstFormat(added, Constants.PIPE));
    }
    if (list.isEmpty()) {
        // Zero indicates no add or clear
        return null;
    }
    return list.toArray(new String[list.size()]);
}
Also used : ArrayList(java.util.ArrayList) ClassSkillList(pcgen.cdom.list.ClassSkillList) Skill(pcgen.core.Skill) CDOMReference(pcgen.cdom.base.CDOMReference) AssociatedPrereqObject(pcgen.cdom.base.AssociatedPrereqObject)

Example 93 with Skill

use of pcgen.core.Skill in project pcgen by PCGen.

the class NoRankQualifierTokenTest method initializeObjects.

private void initializeObjects() {
    s1 = new Skill();
    s1.setName("s1");
    primaryContext.getReferenceContext().importObject(s1);
    s2 = new Skill();
    s2.setName("s2");
    primaryContext.getReferenceContext().importObject(s2);
    primaryContext.unconditionallyProcess(s2, "TYPE", "Masterful");
    s3 = new Skill();
    s3.setName("s3");
    primaryContext.getReferenceContext().importObject(s3);
    primaryContext.unconditionallyProcess(s3, "TYPE", "Masterful");
    cl1 = new PCClass();
    cl1.setName("MyClass");
    primaryContext.getReferenceContext().importObject(cl1);
}
Also used : Skill(pcgen.core.Skill) PCClass(pcgen.core.PCClass)

Example 94 with Skill

use of pcgen.core.Skill in project pcgen by PCGen.

the class RanksQualifierTokenTest method initializeObjects.

private void initializeObjects() {
    s1 = new Skill();
    s1.setName("s1");
    primaryContext.getReferenceContext().importObject(s1);
    s2 = new Skill();
    s2.setName("s2");
    primaryContext.getReferenceContext().importObject(s2);
    primaryContext.unconditionallyProcess(s2, "TYPE", "Masterful");
    s3 = new Skill();
    s3.setName("s3");
    primaryContext.getReferenceContext().importObject(s3);
    primaryContext.unconditionallyProcess(s3, "TYPE", "Masterful");
    cl1 = new PCClass();
    cl1.setName("MyClass");
    primaryContext.getReferenceContext().importObject(cl1);
}
Also used : Skill(pcgen.core.Skill) PCClass(pcgen.core.PCClass)

Example 95 with Skill

use of pcgen.core.Skill in project pcgen by PCGen.

the class ExclusiveQualifierTokenTest method initializeObjects.

private void initializeObjects() {
    s1 = new Skill();
    s1.setName("s1");
    primaryContext.getReferenceContext().importObject(s1);
    s2 = new Skill();
    s2.setName("s2");
    primaryContext.getReferenceContext().importObject(s2);
    primaryContext.unconditionallyProcess(s2, "TYPE", "Masterful");
    s3 = new Skill();
    s3.setName("s3");
    primaryContext.getReferenceContext().importObject(s3);
    primaryContext.unconditionallyProcess(s3, "TYPE", "Masterful");
    s4 = new Skill();
    s4.setName("s4");
    s4.put(ObjectKey.EXCLUSIVE, Boolean.TRUE);
    primaryContext.unconditionallyProcess(s4, "TYPE", "Masterful");
    primaryContext.getReferenceContext().importObject(s4);
    s5 = new Skill();
    s5.setName("s5");
    s5.put(ObjectKey.EXCLUSIVE, Boolean.TRUE);
    primaryContext.getReferenceContext().importObject(s5);
    cl1 = new PCClass();
    cl1.setName("MyClass");
    primaryContext.getReferenceContext().importObject(cl1);
}
Also used : Skill(pcgen.core.Skill) PCClass(pcgen.core.PCClass)

Aggregations

Skill (pcgen.core.Skill)165 Test (org.junit.Test)60 PCClass (pcgen.core.PCClass)55 ArrayList (java.util.ArrayList)29 CDOMReference (pcgen.cdom.base.CDOMReference)24 CharID (pcgen.cdom.enumeration.CharID)23 SkillCost (pcgen.cdom.enumeration.SkillCost)16 CDOMObject (pcgen.cdom.base.CDOMObject)15 PlayerCharacter (pcgen.core.PlayerCharacter)14 ChoiceSet (pcgen.cdom.base.ChoiceSet)13 ConcretePersistentTransitionChoice (pcgen.cdom.base.ConcretePersistentTransitionChoice)13 ReferenceChoiceSet (pcgen.cdom.choiceset.ReferenceChoiceSet)13 ClassSkillChoiceActor (pcgen.cdom.helper.ClassSkillChoiceActor)13 StringTokenizer (java.util.StringTokenizer)10 ObjectMatchingReference (pcgen.cdom.reference.ObjectMatchingReference)10 Ability (pcgen.core.Ability)10 LoadContext (pcgen.rules.context.LoadContext)9 ClassSkillList (pcgen.cdom.list.ClassSkillList)8 HashSet (java.util.HashSet)7 CNAbility (pcgen.cdom.content.CNAbility)7