Search in sources :

Example 56 with PCStat

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

the class StatIntegrationTest method setUp.

@Override
public void setUp() throws PersistenceLayerException, URISyntaxException {
    super.setUp();
    PCStat ps = BuildUtilities.createStat("Strength", "STR");
    primaryContext.getReferenceContext().importObject(ps);
    PCStat pi = BuildUtilities.createStat("Intelligence", "INT");
    primaryContext.getReferenceContext().importObject(pi);
    PCStat ss = BuildUtilities.createStat("Strength", "STR");
    secondaryContext.getReferenceContext().importObject(ss);
    PCStat si = BuildUtilities.createStat("Intelligence", "INT");
    secondaryContext.getReferenceContext().importObject(si);
}
Also used : PCStat(pcgen.core.PCStat)

Example 57 with PCStat

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

the class AbstractContentTokenTest method testFromStat.

//TODO SizeFacet is not a very good model for doing this by hand :(
//Need to separate the setting of size from the facet that holds it
//Skill not *supposed* to do things like this
@Test
public void testFromStat() throws PersistenceLayerException {
    PCStat source = create(PCStat.class, "Source");
    processToken(source);
    assertTrue(containsExpected());
    assertEquals(baseCount() + 1, targetFacetCount());
    statFacet.remove(id, source);
    assertEquals(baseCount(), targetFacetCount());
}
Also used : PCStat(pcgen.core.PCStat) Test(org.junit.Test) AbstractTokenModelTest(tokenmodel.testsupport.AbstractTokenModelTest)

Example 58 with PCStat

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

the class Initiative method doNonLethal.

/**
	 * <p>Applies non-lethal combatant.  This allows other methods to damage
	 * combatants who are not necessarily selected at the time.</p>
	 *
	 * @param damage
	 *             Points of damage to do.
	 * @param iH
	 *             InitHolder to damage.
	 */
private void doNonLethal(int damage, InitHolder iH) {
    if (iH instanceof Combatant) {
        Combatant cbt = (Combatant) iH;
        boolean isEnough = false;
        if (cbt instanceof XMLCombatant) {
            XMLCombatant xmlcbt = (XMLCombatant) cbt;
            if (damage > xmlcbt.getHP().getAttribute().getValue()) {
                isEnough = true;
            }
        }
        if (cbt instanceof PcgCombatant) {
            PcgCombatant pcgcbt = (PcgCombatant) cbt;
            PlayerCharacter pc = pcgcbt.getPC();
            PCStat stat = Globals.getContext().getReferenceContext().silentlyGetConstructedCDOMObject(PCStat.class, "CON");
            if (damage > pc.getTotalStatFor(stat)) {
                isEnough = true;
            }
        }
        if (isEnough) {
            SavingThrowDialog dialog = new SavingThrowDialog(GMGenSystem.inst, true, cbt, 15, SavingThrowDialog.FORT_SAVE);
            dialog.setVisible(true);
            dialog.dispose();
            //Show the dialog and get it's results
            int returnVal = dialog.getReturnValue();
            int roll = dialog.getRoll();
            int total = dialog.getTotal();
            int dc = dialog.getDC();
            //Create a message out with the results
            StringBuilder sb = new StringBuilder();
            sb.append(dialog.getSaveAbbrev(dialog.getSaveType()));
            sb.append(" save DC " + dc);
            if (roll > 0) {
                sb.append(" with a roll of " + (roll + total));
                sb.append(" (" + total + " + Roll: " + roll + ')');
            }
            if (returnVal == SavingThrowDialog.PASS_OPTION) {
                writeToCombatTabWithRound(cbt.getName() + " (" + cbt.getPlayer() + ") Passed a " + sb + " to avoid unconsiousness");
                cbt.nonLethalDamage(false);
            } else if (returnVal == SavingThrowDialog.FAIL_OPTION) {
                writeToCombatTabWithRound(cbt.getName() + " (" + cbt.getPlayer() + ") Failed a " + sb + " to avoid unconsiousness");
                cbt.nonLethalDamage(true);
            }
        }
        combatantUpdated(cbt);
    }
}
Also used : PcgCombatant(gmgen.plugin.PcgCombatant) PlayerCharacter(pcgen.core.PlayerCharacter) Combatant(gmgen.plugin.Combatant) PcgCombatant(gmgen.plugin.PcgCombatant) XMLCombatant(plugin.initiative.XMLCombatant) PCStat(pcgen.core.PCStat) XMLCombatant(plugin.initiative.XMLCombatant)

Example 59 with PCStat

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

the class CharacterFacadeImpl method getUsedStatPool.

/**
	 * This method gets the number of stat points used in the pool
	 * @param pc The PlayerCharacter to get used stat pool for
	 * @return used stat pool
	 */
private int getUsedStatPool() {
    int i = 0;
    for (PCStat aStat : charDisplay.getStatSet()) {
        if (!aStat.getSafe(ObjectKey.ROLLED)) {
            continue;
        }
        final int statValue = theCharacter.getBaseStatFor(aStat);
        i += getPurchaseCostForStat(theCharacter, statValue);
    }
    //$NON-NLS-1$ //$NON-NLS-2$
    i += (int) theCharacter.getTotalBonusTo("POINTBUY", "SPENT");
    return i;
}
Also used : PCStat(pcgen.core.PCStat)

Example 60 with PCStat

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

the class CharacterFacadeImpl method initForCharacter.

/**
	 * 
	 */
private void initForCharacter() {
    // Calculate any active bonuses
    theCharacter.preparePCForOutput();
    todoManager = new TodoManager();
    infoFactory = new Gui2InfoFactory(theCharacter);
    characterAbilities = new CharacterAbilities(theCharacter, delegate, dataSet, todoManager);
    descriptionFacade = new DescriptionFacadeImpl(theCharacter);
    spellSupportFacade = new SpellSupportFacadeImpl(theCharacter, delegate, dataSet, todoManager, this);
    name = new DefaultReferenceFacade<>(charDisplay.getName());
    file = new DefaultReferenceFacade<>(new File(charDisplay.getFileName()));
    companionSupportFacade = new CompanionSupportFacadeImpl(theCharacter, todoManager, name, file, this);
    availTempBonuses = new DefaultListFacade<>();
    refreshAvailableTempBonuses();
    appliedTempBonuses = new DefaultListFacade<>();
    buildAppliedTempBonusList();
    kitList = new DefaultListFacade<>();
    refreshKitList();
    statScoreMap = new HashMap<>();
    for (StatFacade stat : dataSet.getStats()) {
        if (stat instanceof PCStat) {
            statScoreMap.put(stat, ChannelCompatibility.getStatScore(theCharacter.getCharID(), (PCStat) stat));
        } else {
            statScoreMap.put(stat, new DefaultReferenceFacade<>());
        }
    }
    File portraitFile = null;
    if (!StringUtils.isEmpty(charDisplay.getPortraitPath())) {
        portraitFile = new File(charDisplay.getPortraitPath());
    }
    portrait = new DefaultReferenceFacade<>(portraitFile);
    cropRect = new RectangleReference(charDisplay.getPortraitThumbnailRect());
    characterType = new DefaultReferenceFacade<>(charDisplay.getCharacterType());
    previewSheet = new DefaultReferenceFacade<>(charDisplay.getPreviewSheet());
    skillFilter = new DefaultReferenceFacade<>(charDisplay.getSkillFilter());
    tabName = new DefaultReferenceFacade<>(charDisplay.getTabName());
    playersName = new DefaultReferenceFacade<>(charDisplay.getPlayersName());
    race = new DefaultReferenceFacade<>(charDisplay.getRace());
    raceList = new DefaultListFacade<>();
    if (charDisplay.getRace() != null && charDisplay.getRace() != Globals.s_EMPTYRACE) {
        raceList.addElement(charDisplay.getRace());
    }
    handedness = new DefaultReferenceFacade<>();
    gender = new DefaultReferenceFacade<>();
    availHands = new DefaultListFacade<>();
    availGenders = new DefaultListFacade<>();
    for (Handed handed : Handed.values()) {
        availHands.addElement(handed);
    }
    for (Gender gender : Gender.values()) {
        availGenders.addElement(gender);
    }
    if (charDisplay.getRace() != null) {
        for (HandedFacade handsFacade : availHands) {
            if (handsFacade.equals(charDisplay.getHandedObject())) {
                handedness.set(handsFacade);
                break;
            }
        }
        for (GenderFacade pcGender : availGenders) {
            if (pcGender.equals(charDisplay.getGenderObject())) {
                gender.set(pcGender);
                break;
            }
        }
    }
    alignment = new DefaultReferenceFacade<>(charDisplay.getPCAlignment());
    age = new DefaultReferenceFacade<>(charDisplay.getAge());
    ageCategory = new DefaultReferenceFacade<>();
    updateAgeCategoryForAge();
    currentXP = new DefaultReferenceFacade<>(charDisplay.getXP());
    xpListener = new XPListener();
    FacetLibrary.getFacet(XPFacet.class).addDataFacetChangeListener(xpListener);
    xpForNextlevel = new DefaultReferenceFacade<>(charDisplay.minXPForNextECL());
    xpTableName = new DefaultReferenceFacade<>(charDisplay.getXPTableName());
    hpRef = new DefaultReferenceFacade<>(theCharacter.hitPoints());
    skinColor = new DefaultReferenceFacade<>(charDisplay.getSafeStringFor(PCStringKey.SKINCOLOR));
    hairColor = new DefaultReferenceFacade<>(charDisplay.getSafeStringFor(PCStringKey.HAIRCOLOR));
    eyeColor = new DefaultReferenceFacade<>(charDisplay.getSafeStringFor(PCStringKey.EYECOLOR));
    weightRef = new DefaultReferenceFacade<>();
    heightRef = new DefaultReferenceFacade<>();
    refreshHeightWeight();
    purchasedEquip = new EquipmentListFacadeImpl(theCharacter.getEquipmentMasterList());
    autoEquipListener = new AutoEquipListener();
    FacetLibrary.getFacet(AutoEquipmentFacet.class).addDataFacetChangeListener(autoEquipListener);
    carriedWeightRef = new DefaultReferenceFacade<>();
    loadRef = new DefaultReferenceFacade<>();
    weightLimitRef = new DefaultReferenceFacade<>();
    equipSet = new DefaultReferenceFacade<>();
    equipmentSets = new DefaultListFacade<>();
    initEquipSet();
    GameMode game = (GameMode) dataSet.getGameMode();
    rollMethodRef = new DefaultReferenceFacade<>(game.getRollMethod());
    charLevelsFacade = new CharacterLevelsFacadeImpl(theCharacter, delegate, todoManager, dataSet, this);
    pcClasses = new ArrayList<>();
    pcClassLevels = new DefaultListFacade<>();
    refreshClassLevelModel();
    charLevelsFacade.addHitPointListener(this);
    deity = new DefaultReferenceFacade<>(charDisplay.getDeity());
    domains = new DefaultListFacade<>();
    maxDomains = new DefaultReferenceFacade<>(theCharacter.getMaxCharacterDomains());
    remainingDomains = new DefaultReferenceFacade<>(theCharacter.getMaxCharacterDomains() - domains.getSize());
    availDomains = new DefaultListFacade<>();
    buildAvailableDomainsList();
    templates = new DefaultListFacade<>(charDisplay.getDisplayVisibleTemplateList());
    templateListener = new TemplateListener();
    FacetLibrary.getFacet(TemplateFacet.class).addDataFacetChangeListener(templateListener);
    initTodoList();
    statTotalLabelText = new DefaultReferenceFacade<>();
    statTotalText = new DefaultReferenceFacade<>();
    modTotalLabelText = new DefaultReferenceFacade<>();
    modTotalText = new DefaultReferenceFacade<>();
    updateScorePurchasePool(false);
    languages = new DefaultListFacade<>();
    numBonusLang = new DefaultReferenceFacade<>(0);
    numSkillLang = new DefaultReferenceFacade<>(0);
    refreshLanguageList();
    langListener = new LanguageListener();
    FacetLibrary.getFacet(LanguageFacet.class).addDataFacetChangeListener(langListener);
    purchasedEquip.addListListener(spellSupportFacade);
    purchasedEquip.addEquipmentListListener(spellSupportFacade);
    fundsRef = new DefaultReferenceFacade<>(theCharacter.getGold());
    wealthRef = new DefaultReferenceFacade<>(theCharacter.totalValue());
    gearBuySellSchemeRef = new DefaultReferenceFacade<>(findGearBuySellRate());
    allowDebt = false;
}
Also used : StatFacade(pcgen.facade.core.StatFacade) GenderFacade(pcgen.facade.core.GenderFacade) TemplateFacet(pcgen.cdom.facet.model.TemplateFacet) Handed(pcgen.cdom.enumeration.Handed) Gender(pcgen.cdom.enumeration.Gender) HandedFacade(pcgen.facade.core.HandedFacade) XPFacet(pcgen.cdom.facet.fact.XPFacet) GameMode(pcgen.core.GameMode) PCStat(pcgen.core.PCStat) File(java.io.File) LanguageFacet(pcgen.cdom.facet.model.LanguageFacet) AutoEquipmentFacet(pcgen.cdom.facet.AutoEquipmentFacet)

Aggregations

PCStat (pcgen.core.PCStat)78 CDOMObject (pcgen.cdom.base.CDOMObject)10 GameMode (pcgen.core.GameMode)10 Before (org.junit.Before)9 Race (pcgen.core.Race)9 PCClass (pcgen.core.PCClass)7 PlayerCharacter (pcgen.core.PlayerCharacter)7 AbstractReferenceContext (pcgen.rules.context.AbstractReferenceContext)7 CDOMSingleRef (pcgen.cdom.reference.CDOMSingleRef)6 PCTemplate (pcgen.core.PCTemplate)6 Skill (pcgen.core.Skill)6 ArrayList (java.util.ArrayList)5 StatLock (pcgen.cdom.helper.StatLock)5 BonusObj (pcgen.core.bonus.BonusObj)5 Test (org.junit.Test)4 Formula (pcgen.base.formula.Formula)4 CharID (pcgen.cdom.enumeration.CharID)4 LoadContext (pcgen.rules.context.LoadContext)4 StringTokenizer (java.util.StringTokenizer)3 Type (pcgen.cdom.enumeration.Type)3