New source found from dndbeyond.com
This commit is contained in:
@@ -540,3 +540,6 @@ export function getSpellListIds(charClass) {
|
||||
export function getOptionalClassFeatures(charClass) {
|
||||
return charClass.optionalClassFeatures;
|
||||
}
|
||||
export function getReplacementWeaponAbilityStats(charClass) {
|
||||
return charClass.replacementWeaponAbilityStats;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { ClassFeatureAccessors, ClassFeatureUtils, ClassFeatureValidators } from
|
||||
import { DB_STRING_BOOK_OF_ANCIENT_SECRETS, DB_STRING_INFUSE_ITEM, FeatureTypeEnum, } from '../Core';
|
||||
import { DataOriginGenerators } from '../DataOrigin';
|
||||
import { HelperUtils } from '../Helper';
|
||||
import { ModifierValidators } from '../Modifier';
|
||||
import { ModifierAccessors, ModifierValidators } from '../Modifier';
|
||||
import { OptionalClassFeatureAccessors } from '../OptionalClassFeature';
|
||||
import { DefaultSpellCastingLearningStyle, SpellDerivers } from '../Spell';
|
||||
import { getActiveId, getDefinitionClassFeatures, getDefinitionSpellcastingStatId, getId, getLevel, getMappingId, getSubclass, getClassFeatures, getDefinitionSpellCastingLearningStyle, } from './accessors';
|
||||
@@ -166,6 +166,18 @@ export function deriveOrderedClassFeatures(classFeatures) {
|
||||
(classFeature) => ClassFeatureAccessors.getName(classFeature),
|
||||
]);
|
||||
}
|
||||
export function deriveReplacementWeaponAbilityStats(classModifiers) {
|
||||
const replacementWeaponAbilityStats = [];
|
||||
classModifiers.forEach((modifier) => {
|
||||
if (ModifierValidators.isEnablesAbilityStatModifier(modifier)) {
|
||||
const statId = ModifierAccessors.getEntityId(modifier) || 0;
|
||||
if (statId && !replacementWeaponAbilityStats.includes(statId)) {
|
||||
replacementWeaponAbilityStats.push(statId);
|
||||
}
|
||||
}
|
||||
});
|
||||
return replacementWeaponAbilityStats;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classFeatures
|
||||
|
||||
@@ -8,8 +8,8 @@ import { FormatUtils } from '../Format';
|
||||
import { ModifierDerivers, ModifierValidators } from '../Modifier';
|
||||
import { OptionAccessors } from '../Option';
|
||||
import { SpellAccessors, SpellDerivers, SpellGenerators, } from '../Spell';
|
||||
import { getActiveId, getBaseClassSpells, getClassFeatures, getDefinitionClassFeatures, getEnablesDedicatedWeapon, getEnablesHexWeapon, getEnablesPactWeapon, getId, getLevel, getMappingId, getName, getSlug, getSpellPrepareType, getSpellRules, getSpells, getSubclass, isPactMagicActive, isSpellcastingActive, isStartingClass, } from './accessors';
|
||||
import { deriveActiveId, deriveClassFeatureGroups, deriveConsolidatedClassFeatures, deriveDedicatedHexAndPactWeaponEnabled, deriveIsPactMagicActive, deriveIsSpellcastingActive, deriveSpellCastingLearningStyle, deriveSpellListIds, deriveSpellRules, deriveSpells, deriveUniqueKey, } from './derivers';
|
||||
import { getActiveId, getBaseClassSpells, getClassFeatures, getDefinitionClassFeatures, getEnablesDedicatedWeapon, getEnablesHexWeapon, getEnablesPactWeapon, getId, getLevel, getMappingId, getName, getReplacementWeaponAbilityStats, getSlug, getSpellPrepareType, getSpellRules, getSpells, getSubclass, isPactMagicActive, isSpellcastingActive, isStartingClass, } from './accessors';
|
||||
import { deriveActiveId, deriveClassFeatureGroups, deriveConsolidatedClassFeatures, deriveDedicatedHexAndPactWeaponEnabled, deriveIsPactMagicActive, deriveIsSpellcastingActive, deriveReplacementWeaponAbilityStats, deriveSpellCastingLearningStyle, deriveSpellListIds, deriveSpellRules, deriveSpells, deriveUniqueKey, } from './derivers';
|
||||
export function generateBaseCharClasses(charClasses, optionalClassFeatures, allClassSpells, allClassAlwaysPreparedSpells, allClassAlwaysKnownSpells, appContext, ruleData, classesLookupData, definitionPool, characterPreferences, characterId, choiceComponents, baseFeats) {
|
||||
const orderedClasses = orderBy(charClasses, [(charClass) => isStartingClass(charClass), (charClass) => getName(charClass)], ['desc', 'asc']);
|
||||
const hack__baseCharClasses = orderedClasses.map((charClass) => hack__generateHackBaseCharClass(charClass, optionalClassFeatures, ruleData, classesLookupData, characterPreferences.enableOptionalClassFeatures));
|
||||
@@ -70,7 +70,7 @@ export function generateBaseCharClass(charClass, optionalClassFeatures, allClass
|
||||
actions,
|
||||
enablesDedicatedWeapon,
|
||||
enablesHexWeapon,
|
||||
enablesPactWeapon, slug: FormatUtils.cobaltSlugify(getName(charClass)), spellListIds: deriveSpellListIds(updatedFeatures, getLevel(charClass)), spellCastingLearningStyle: deriveSpellCastingLearningStyle(charClass) });
|
||||
enablesPactWeapon, slug: FormatUtils.cobaltSlugify(getName(charClass)), spellListIds: deriveSpellListIds(updatedFeatures, getLevel(charClass)), spellCastingLearningStyle: deriveSpellCastingLearningStyle(charClass), replacementWeaponAbilityStats: deriveReplacementWeaponAbilityStats(classModifiers) });
|
||||
}
|
||||
export function generateClassFeatureLookup(baseCharClasses) {
|
||||
const lookup = {};
|
||||
@@ -209,6 +209,14 @@ export function generatePactWeaponEnabled(classes) {
|
||||
});
|
||||
return pactWeaponEnabled;
|
||||
}
|
||||
export function generateReplacementWeaponAbilityStats(classes) {
|
||||
const replacementWeaponStats = [];
|
||||
classes.forEach((charClass) => {
|
||||
const classReplacementWeaponStats = getReplacementWeaponAbilityStats(charClass);
|
||||
replacementWeaponStats.push(...classReplacementWeaponStats);
|
||||
});
|
||||
return replacementWeaponStats;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classes
|
||||
|
||||
Reference in New Issue
Block a user