Search in sources :

Example 76 with Domain

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

the class SpellSupportFacadeImpl method getClassInfo.

/**
	 * @see pcgen.core.facade.SpellSupportFacade#getClassInfo(pcgen.core.facade.ClassFacade)
	 */
@Override
public String getClassInfo(ClassFacade spellcaster) {
    if (!(spellcaster instanceof PCClass)) {
        return "";
    }
    PCClass aClass = (PCClass) spellcaster;
    SpellSupportForPCClass spellSupport = pc.getSpellSupport(aClass);
    int highestSpellLevel = spellSupport.getHighestLevelSpell(pc);
    final HtmlInfoBuilder b = new HtmlInfoBuilder();
    //$NON-NLS-1$
    b.append("<table border=1><tr><td><font size=-2><b>");
    //$NON-NLS-1$
    b.append(OutputNameFormatting.piString(aClass, false)).append(" [");
    b.append(String.valueOf(charDisplay.getLevel(aClass) + //$NON-NLS-1$
    (int) pc.getTotalBonusTo("PCLEVEL", aClass.getKeyName())));
    //$NON-NLS-1$
    b.append("]</b></font></td>");
    for (int i = 0; i <= highestSpellLevel; ++i) {
        //$NON-NLS-1$
        b.append("<td><font size=-2><b><center>&nbsp;");
        b.append(String.valueOf(i));
        //$NON-NLS-1$
        b.append("&nbsp;</b></center></font></td>");
    }
    //$NON-NLS-1$
    b.append("</tr>");
    //$NON-NLS-1$
    b.append("<tr><td><font size=-1><b>Cast</b></font></td>");
    for (int i = 0; i <= highestSpellLevel; ++i) {
        //$NON-NLS-1$
        b.append("<td><font size=-1><center>");
        b.append(getNumCast(aClass, i, pc));
        //$NON-NLS-1$
        b.append("</center></font></td>");
    }
    //$NON-NLS-1$
    b.append("</tr>");
    // Making sure KnownList can be handled safely and produces the correct behaviour
    if (spellSupport.hasKnownList() || spellSupport.hasKnownSpells(pc)) {
        //$NON-NLS-1$
        b.append("<tr><td><font size=-1><b>Known</b></font></td>");
        for (int i = 0; i <= highestSpellLevel; ++i) {
            final int a = spellSupport.getKnownForLevel(i, pc);
            final int bonus = spellSupport.getSpecialtyKnownForLevel(i, pc);
            //$NON-NLS-1$
            b.append("<td><font size=-1><center>");
            b.append(String.valueOf(a));
            if (bonus > 0) {
                b.append('+').append(Integer.toString(bonus));
            }
            //$NON-NLS-1$
            b.append("</center></font></td>");
        }
        //$NON-NLS-1$
        b.append("</tr>");
    }
    //$NON-NLS-1$
    b.append("<tr><td><font size=-1><b>DC</b></font></td>");
    for (int i = 0; i <= highestSpellLevel; ++i) {
        //$NON-NLS-1$
        b.append("<td><font size=-1><center>");
        b.append(String.valueOf(getDC(aClass, i, pc)));
        //$NON-NLS-1$
        b.append("</center></font></td>");
    }
    //$NON-NLS-1$
    b.append("</tr></table>");
    //$NON-NLS-1$
    b.appendI18nElement("InfoSpells.caster.type", aClass.getSpellType());
    b.appendLineBreak();
    //$NON-NLS-1$ 
    b.appendI18nElement("InfoSpells.stat.bonus", aClass.getSpellBaseStat());
    if (pc.hasAssocs(aClass, AssociationKey.SPECIALTY) || charDisplay.hasDomains()) {
        boolean needComma = false;
        StringBuilder schoolInfo = new StringBuilder();
        String spec = pc.getAssoc(aClass, AssociationKey.SPECIALTY);
        if (spec != null) {
            schoolInfo.append(spec);
            needComma = true;
        }
        for (Domain d : charDisplay.getSortedDomainSet()) {
            if (needComma) {
                schoolInfo.append(',');
            }
            needComma = true;
            schoolInfo.append(d.getKeyName());
        }
        b.appendLineBreak();
        //$NON-NLS-1$ 
        b.appendI18nElement("InfoSpells.school", schoolInfo.toString());
    }
    Set<String> set = new TreeSet<>();
    for (SpellProhibitor sp : aClass.getSafeListFor(ListKey.PROHIBITED_SPELLS)) {
        set.addAll(sp.getValueList());
    }
    Collection<? extends SpellProhibitor> prohibList = charDisplay.getProhibitedSchools(aClass);
    if (prohibList != null) {
        for (SpellProhibitor sp : prohibList) {
            set.addAll(sp.getValueList());
        }
    }
    if (!set.isEmpty()) {
        b.appendLineBreak();
        //$NON-NLS-1$ 
        b.appendI18nElement(//$NON-NLS-1$ 
        "InfoSpells.prohibited.school", //$NON-NLS-1$ 
        StringUtil.join(set, ","));
    }
    String bString = SourceFormat.getFormattedString(aClass, Globals.getSourceDisplay(), true);
    if (bString.length() > 0) {
        b.appendLineBreak();
        //$NON-NLS-1$ 
        b.appendI18nElement("in_source", bString);
    }
    return b.toString();
}
Also used : TreeSet(java.util.TreeSet) HtmlInfoBuilder(pcgen.gui2.util.HtmlInfoBuilder) PCClass(pcgen.core.PCClass) SpellSupportForPCClass(pcgen.core.SpellSupportForPCClass) Domain(pcgen.core.Domain) SpellSupportForPCClass(pcgen.core.SpellSupportForPCClass) SpellProhibitor(pcgen.core.SpellProhibitor)

Example 77 with Domain

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

the class CcskillToken method applyChoice.

@Override
public void applyChoice(ChooseDriver obj, Skill skill, PlayerCharacter pc) {
    PCClass pcc = pc.getDomainSource((Domain) obj).getPcclass();
    pc.addLocalCost(pcc, skill, SkillCost.CROSS_CLASS, obj);
}
Also used : PCClass(pcgen.core.PCClass) Domain(pcgen.core.Domain)

Example 78 with Domain

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

the class CskillToken method applyChoice.

@Override
public void applyChoice(ChooseDriver obj, Skill skill, PlayerCharacter pc) {
    PCClass pcc = pc.getDomainSource((Domain) obj).getPcclass();
    pc.addLocalCost(pcc, skill, SkillCost.CLASS, obj);
}
Also used : PCClass(pcgen.core.PCClass) Domain(pcgen.core.Domain)

Example 79 with Domain

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

the class PreSpellTester method passes.

/**
	 * @see pcgen.core.prereq.PrerequisiteTest#passes(pcgen.core.PlayerCharacter)
	 */
@Override
public int passes(final Prerequisite prereq, final PlayerCharacter character, CDOMObject source) {
    CharacterDisplay display = character.getDisplay();
    int requiredNumber = 0;
    try {
        requiredNumber = Integer.parseInt(prereq.getOperand());
    } catch (NumberFormatException e) {
        Logging.errorPrint(LanguageBundle.getString("PreSpell.error.badly_formed_attribute") + //$NON-NLS-1$
        prereq.toString());
    }
    // Build a list of all possible spells
    final List<Spell> aArrayList = //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    character.aggregateSpellList("", "", "", 0, 20);
    //Needs to add domain spells as well
    for (Domain d : display.getDomainSet()) {
        aArrayList.addAll(character.getAllSpellsInLists(Collections.singletonList(d.get(ObjectKey.DOMAIN_SPELLLIST))));
    }
    //Are there Innate Spell-like abilities?
    if (character.getAutoSpells()) {
        Collection<CDOMReference<Spell>> mods = display.getRace().getListMods(Spell.SPELLS);
        if (mods != null) {
            for (CDOMReference<Spell> ref : mods) {
                aArrayList.addAll(ref.getContainedObjects());
            }
        }
    }
    final String spellName = prereq.getKey();
    int runningTotal = 0;
    for (Spell aSpell : aArrayList) {
        if (aSpell != null && aSpell.getKeyName() != null && aSpell.getKeyName().equalsIgnoreCase(spellName)) {
            runningTotal++;
        }
    }
    runningTotal = prereq.getOperator().compare(runningTotal, requiredNumber);
    return countedTotal(prereq, runningTotal);
}
Also used : CharacterDisplay(pcgen.core.display.CharacterDisplay) Domain(pcgen.core.Domain) Spell(pcgen.core.spell.Spell) CDOMReference(pcgen.cdom.base.CDOMReference)

Aggregations

Domain (pcgen.core.Domain)79 PCClass (pcgen.core.PCClass)31 Test (org.junit.Test)19 ClassSource (pcgen.cdom.helper.ClassSource)18 ArrayList (java.util.ArrayList)11 CDOMSingleRef (pcgen.cdom.reference.CDOMSingleRef)10 Prerequisite (pcgen.core.prereq.Prerequisite)10 AssociatedPrereqObject (pcgen.cdom.base.AssociatedPrereqObject)8 CDOMReference (pcgen.cdom.base.CDOMReference)8 Deity (pcgen.core.Deity)7 Spell (pcgen.core.spell.Spell)7 AbstractTokenModelTest (tokenmodel.testsupport.AbstractTokenModelTest)7 StringTokenizer (java.util.StringTokenizer)6 Ability (pcgen.core.Ability)6 QualifiedObject (pcgen.core.QualifiedObject)6 ParseResult (pcgen.rules.persistence.token.ParseResult)6 TreeSet (java.util.TreeSet)5 PlayerCharacter (pcgen.core.PlayerCharacter)5 PCClassLevel (pcgen.cdom.inst.PCClassLevel)4 ClassSpellList (pcgen.cdom.list.ClassSpellList)4