use of pcgen.core.SpellProhibitor in project pcgen by PCGen.
the class ProhibitspellToken method parseTokenWithSeparator.
@Override
protected ParseResult parseTokenWithSeparator(LoadContext context, PCClass pcc, String value) {
SpellProhibitor sp = subParse(value);
if (sp == null) {
return ParseResult.INTERNAL_ERROR;
}
context.getObjectContext().addToList(pcc, ListKey.SPELL_PROHIBITOR, sp);
return ParseResult.SUCCESS;
}
use of pcgen.core.SpellProhibitor in project pcgen by PCGen.
the class ProhibitspellTokenTest method getConstant.
private static SpellProhibitor getConstant(ProhibitedSpellType type, String args) {
SpellProhibitor spellProb = new SpellProhibitor();
spellProb.setType(type);
spellProb.addValue(args);
return spellProb;
}
use of pcgen.core.SpellProhibitor in project pcgen by PCGen.
the class ProhibitspellTokenTest method testUnparseLegalDescriptor.
@Test
public void testUnparseLegalDescriptor() throws PersistenceLayerException {
SpellProhibitor o = getConstant(ProhibitedSpellType.DESCRIPTOR, "Fire");
primaryProf.addToListFor(getListKey(), o);
expectSingle(getToken().unparse(primaryContext, primaryProf), "DESCRIPTOR.Fire");
}
use of pcgen.core.SpellProhibitor in project pcgen by PCGen.
the class ProhibitspellTokenTest method testUnparseLegalSchool.
@Test
public void testUnparseLegalSchool() throws PersistenceLayerException {
SpellProhibitor o = getConstant(ProhibitedSpellType.SCHOOL, "Public");
primaryProf.addToListFor(getListKey(), o);
expectSingle(getToken().unparse(primaryContext, primaryProf), "SCHOOL.Public");
}
use of pcgen.core.SpellProhibitor 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> ");
b.append(String.valueOf(i));
//$NON-NLS-1$
b.append(" </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();
}
Aggregations