Esempio n. 1
0
 /**
  * Adds the SkillCost objects granted by CDOMObjects added to the Player Character to this
  * GlobalSkillCostFacet.
  *
  * <p>Triggered when one of the Facets to which GlobalSkillCostFacet listens fires a
  * DataFacetChangeEvent to indicate a CDOMObject was added to a Player Character.
  *
  * @param dfce The DataFacetChangeEvent containing the information about the change
  * @see
  *     pcgen.cdom.facet.event.DataFacetChangeListener#dataAdded(pcgen.cdom.facet.event.DataFacetChangeEvent)
  */
 @Override
 public void dataAdded(DataFacetChangeEvent<CharID, CDOMObject> dfce) {
   CDOMObject cdo = dfce.getCDOMObject();
   CharID id = dfce.getCharID();
   for (CDOMReference<Skill> ref : cdo.getSafeListFor(ListKey.CSKILL)) {
     for (Skill sk : ref.getContainedObjects()) {
       add(id, SkillCost.CLASS, sk, cdo);
     }
   }
   for (CDOMReference<Skill> ref : cdo.getSafeListFor(ListKey.CCSKILL)) {
     for (Skill sk : ref.getContainedObjects()) {
       add(id, SkillCost.CROSS_CLASS, sk, cdo);
     }
   }
 }
 /**
  * Adds available Languages to this facet when a CDOMObject added to a Player Character makes
  * Languages available to the Player Character.
  *
  * <p>Triggered when one of the Facets to which StartingLanguageFacet listens fires a
  * DataFacetChangeEvent to indicate a CDOMObject was added to a Player Character.
  *
  * @param dfce The DataFacetChangeEvent containing the information about the change
  * @see pcgen.cdom.facet.DataFacetChangeListener#dataAdded(pcgen.cdom.facet.DataFacetChangeEvent)
  */
 @Override
 public void dataAdded(DataFacetChangeEvent<CDOMObject> dfce) {
   CDOMObject cdo = dfce.getCDOMObject();
   Collection<CDOMReference<Language>> list = cdo.getListMods(Language.STARTING_LIST);
   if (list != null) {
     CharID id = dfce.getCharID();
     for (CDOMReference<Language> ref : list) {
       addAll(id, ref.getContainedObjects(), cdo);
     }
   }
 }
Esempio n. 3
0
  /**
   * Sets the locked flag on a PC
   *
   * @param pc
   */
  public static void applyDomain(PlayerCharacter pc, Domain d) {
    ClassSource source = pc.getDomainSource(d);
    PCClass aClass = pc.getClassKeyed(source.getPcclass().getKeyName());
    if (aClass != null) {
      int maxLevel;

      for (maxLevel = 0; maxLevel < 10; maxLevel++) {
        if (pc.getSpellSupport(aClass).getCastForLevel(maxLevel, pc) == 0) {
          break;
        }
      }

      if (maxLevel > 0) {
        addSpellsToClassForLevels(pc, d, aClass, 0, maxLevel - 1);
      }

      if ((maxLevel > 1) && (aClass.getSafe(IntegerKey.KNOWN_SPELLS_FROM_SPECIALTY) == 0)) {
        DomainSpellList domainSpellList = d.get(ObjectKey.DOMAIN_SPELLLIST);
        final List<Spell> aList =
            pc.getAllSpellsInLists(Collections.singletonList(domainSpellList));

        for (Spell gcs : aList) {
          if (SpellLevel.getFirstLvlForKey(gcs, domainSpellList, pc) < maxLevel) {
            pc.setDomainSpellCount(aClass, 1);
            break;
          }
        }
      }
    }

    Collection<CDOMReference<Spell>> mods = d.getSafeListMods(Spell.SPELLS);
    for (CDOMReference<Spell> ref : mods) {
      Collection<Spell> spells = ref.getContainedObjects();
      Collection<AssociatedPrereqObject> assoc = d.getListAssociations(Spell.SPELLS, ref);
      for (AssociatedPrereqObject apo : assoc) {
        if (!PrereqHandler.passesAll(apo.getPrerequisiteList(), pc, d)) {
          continue;
        }
        for (Spell s : spells) {
          String book = apo.getAssociation(AssociationKey.SPELLBOOK);
          List<CharacterSpell> aList = pc.getCharacterSpells(aClass, s, book, -1);

          if (aList.isEmpty()) {
            Formula times = apo.getAssociation(AssociationKey.TIMES_PER_UNIT);
            CharacterSpell cs = new CharacterSpell(d, s);
            int resolvedTimes = times.resolve(pc, d.getQualifiedKey()).intValue();
            cs.addInfo(1, resolvedTimes, book);
            pc.addCharacterSpell(aClass, cs);
          }
        }
      }
    }
  }
Esempio n. 4
0
  private List<Skill> getSkillChoices(PlayerCharacter aPC) {
    final List<Skill> skillsOfType = new ArrayList<Skill>();

    for (CDOMReference<Skill> ref : skillList) {
      skillsOfType.addAll(ref.getContainedObjects());
    }

    if (skillsOfType.size() == 0) {
      return null;
    } else if (skillsOfType.size() == 1) {
      return skillsOfType;
    }

    List<Skill> skillChoices = new ArrayList<Skill>();
    skillChoices =
        Globals.getChoiceFromList("Select skill", skillsOfType, skillChoices, getSafeCount(), aPC);

    return skillChoices;
  }