private List<PCClass> getCharactersSpellcastingClasses() { List<PCClass> castingClasses = new ArrayList<>(); Collection<PCClass> classes = charDisplay.getClassSet(); for (PCClass pcClass : classes) { if (pcClass.get(FactKey.valueOf("SpellType")) != null) { SpellSupportForPCClass spellSupport = pc.getSpellSupport(pcClass); if (spellSupport.canCastSpells(pc) || spellSupport.hasKnownList()) { castingClasses.add(pcClass); } } } return castingClasses; }
/* * CONSIDER Why does this not inherit classSkillChoices? */ public void inheritAttributesFrom(final PCClass otherClass) { Boolean hbss = otherClass.get(ObjectKey.HAS_BONUS_SPELL_STAT); if (hbss != null) { put(ObjectKey.HAS_BONUS_SPELL_STAT, hbss); CDOMSingleRef<PCStat> bss = otherClass.get(ObjectKey.BONUS_SPELL_STAT); if (bss != null) { put(ObjectKey.BONUS_SPELL_STAT, bss); } } Boolean usbs = otherClass.get(ObjectKey.USE_SPELL_SPELL_STAT); if (usbs != null) { put(ObjectKey.USE_SPELL_SPELL_STAT, usbs); } Boolean cwss = otherClass.get(ObjectKey.CASTER_WITHOUT_SPELL_STAT); if (cwss != null) { put(ObjectKey.CASTER_WITHOUT_SPELL_STAT, cwss); } CDOMSingleRef<PCStat> ss = otherClass.get(ObjectKey.SPELL_STAT); if (ss != null) { put(ObjectKey.SPELL_STAT, ss); } TransitionChoice<CDOMListObject<Spell>> slc = otherClass.get(ObjectKey.SPELLLIST_CHOICE); if (slc != null) { put(ObjectKey.SPELLLIST_CHOICE, slc); } List<QualifiedObject<CDOMReference<Equipment>>> e = otherClass.getListFor(ListKey.EQUIPMENT); if (e != null) { addAllToListFor(ListKey.EQUIPMENT, e); } List<WeaponProfProvider> wp = otherClass.getListFor(ListKey.WEAPONPROF); if (wp != null) { addAllToListFor(ListKey.WEAPONPROF, wp); } QualifiedObject<Boolean> otherWP = otherClass.get(ObjectKey.HAS_DEITY_WEAPONPROF); if (otherWP != null) { put(ObjectKey.HAS_DEITY_WEAPONPROF, otherWP); } List<ArmorProfProvider> ap = otherClass.getListFor(ListKey.AUTO_ARMORPROF); if (ap != null) { addAllToListFor(ListKey.AUTO_ARMORPROF, ap); } List<ShieldProfProvider> sp = otherClass.getListFor(ListKey.AUTO_SHIELDPROF); if (sp != null) { addAllToListFor(ListKey.AUTO_SHIELDPROF, sp); } List<BonusObj> bonusList = otherClass.getListFor(ListKey.BONUS); if (bonusList != null) { addAllToListFor(ListKey.BONUS, bonusList); } try { ownBonuses(this); } catch (CloneNotSupportedException ce) { // TODO Auto-generated catch block ce.printStackTrace(); } for (VariableKey vk : otherClass.getVariableKeys()) { put(vk, otherClass.get(vk)); } if (otherClass.containsListFor(ListKey.CSKILL)) { removeListFor(ListKey.CSKILL); addAllToListFor(ListKey.CSKILL, otherClass.getListFor(ListKey.CSKILL)); } if (otherClass.containsListFor(ListKey.LOCALCCSKILL)) { removeListFor(ListKey.LOCALCCSKILL); addAllToListFor(ListKey.LOCALCCSKILL, otherClass.getListFor(ListKey.LOCALCCSKILL)); } removeListFor(ListKey.KIT_CHOICE); addAllToListFor(ListKey.KIT_CHOICE, otherClass.getSafeListFor(ListKey.KIT_CHOICE)); remove(ObjectKey.REGION_CHOICE); if (otherClass.containsKey(ObjectKey.REGION_CHOICE)) { put(ObjectKey.REGION_CHOICE, otherClass.get(ObjectKey.REGION_CHOICE)); } removeListFor(ListKey.SAB); addAllToListFor(ListKey.SAB, otherClass.getSafeListFor(ListKey.SAB)); /* * TODO Does this need to have things from the Class Level objects? * I don't think so based on deferred processing of levels... */ addAllToListFor(ListKey.DAMAGE_REDUCTION, otherClass.getListFor(ListKey.DAMAGE_REDUCTION)); for (CDOMReference<Vision> ref : otherClass.getSafeListMods(Vision.VISIONLIST)) { for (AssociatedPrereqObject apo : otherClass.getListAssociations(Vision.VISIONLIST, ref)) { putToList(Vision.VISIONLIST, ref, apo); } } /* * TODO This is a clone problem, but works for now - thpr 10/3/08 */ if (otherClass instanceof SubClass) { levelMap.clear(); copyLevelsFrom(otherClass); } addAllToListFor(ListKey.NATURAL_WEAPON, otherClass.getListFor(ListKey.NATURAL_WEAPON)); put(ObjectKey.LEVEL_HITDIE, otherClass.get(ObjectKey.LEVEL_HITDIE)); }
private boolean isSpellCaster(PCClass pcc) { return pcc.getSafe(ObjectKey.USE_SPELL_SPELL_STAT) || pcc.getSafe(ObjectKey.CASTER_WITHOUT_SPELL_STAT) || (pcc.get(ObjectKey.SPELL_STAT) != null); }