Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
@@ -0,0 +1,429 @@
|
||||
import { ActivationAccessors } from '../Activation';
|
||||
import { FeatureTypeEnum } from '../Core';
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinition(feature) {
|
||||
return feature.definition;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionKey(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.definitionKey) !== null && _b !== void 0 ? _b : '';
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getName(feature) {
|
||||
return getDefinitionName(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionName(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getId(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getEntityTypeId(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.entityTypeId) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getUniqueKey(feature) {
|
||||
return `${getId(feature)}-${getEntityTypeId(feature)}`;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDescription(feature) {
|
||||
return getDefinitionDescription(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionDescription(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSourceId(feature) {
|
||||
return getDefinitionSourceId(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionSourceId(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.sourceId) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSourcePage(feature) {
|
||||
return getDefinitionSourcePage(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionSourcePage(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.sourcePageNumber) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getActivation(feature) {
|
||||
return getDefinitionActivation(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionActivation(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.activation) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getActivationTime(feature) {
|
||||
return ActivationAccessors.getTime(getActivation(feature));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getActivationType(feature) {
|
||||
return ActivationAccessors.getType(getActivation(feature));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionLevelScales(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.levelScales) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getLevelScales(feature) {
|
||||
return getDefinitionLevelScales(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionLimitedUse(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.limitedUse) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getLimitedUse(feature) {
|
||||
return getDefinitionLimitedUse(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getMultiClassDescription(feature) {
|
||||
return getDefinitionMultiClassDescription(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionMultiClassDescription(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.multiClassDescription) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSnippet(feature) {
|
||||
return getDefinitionSnippet(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionSnippet(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.snippet) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDisplayOrder(feature) {
|
||||
return getDefinitionDisplayOrder(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionDisplayOrder(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.displayOrder) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getHideInBuilder(feature) {
|
||||
return getDefinitionHideInBuilder(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionHideInBuilder(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.hideInBuilder) !== null && _b !== void 0 ? _b : false;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getHideInSheet(feature) {
|
||||
return getDefinitionHideInSheet(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionHideInSheet(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.hideInSheet) !== null && _b !== void 0 ? _b : false;
|
||||
}
|
||||
/**
|
||||
* @deprecated see getDefinitionIsSubClassFeature
|
||||
* @param feature
|
||||
*/
|
||||
export function getIsSubClassFeature(feature) {
|
||||
return getDefinitionIsSubClassFeature(feature);
|
||||
}
|
||||
/**
|
||||
* @deprecated we are switching to the property "classId" instead for more useful information
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionIsSubClassFeature(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.isSubClassFeature) !== null && _b !== void 0 ? _b : false;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionClassId(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.classId) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getClassId(feature) {
|
||||
return getDefinitionClassId(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getRequiredLevel(feature) {
|
||||
return getDefinitionRequiredLevel(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionRequiredLevel(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.requiredLevel) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionCreatureRules(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.creatureRules) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getCreatureRules(feature) {
|
||||
return getDefinitionCreatureRules(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionSpellListIds(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.spellListIds) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSpellListIds(feature) {
|
||||
return getDefinitionSpellListIds(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getAffectedFeatureDefinitionKeys(feature) {
|
||||
return getDefinitionAffectedFeatureDefinitionKeys(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionAffectedFeatureDefinitionKeys(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.affectedFeatureDefinitionKeys) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSources(feature) {
|
||||
return getDefinitionSources(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionSources(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.sources) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getFeatureType(feature) {
|
||||
return getDefinitionFeatureType(feature);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getDefinitionFeatureType(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.featureType) !== null && _b !== void 0 ? _b : FeatureTypeEnum.GRANTED;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getLevelScale(feature) {
|
||||
return feature.levelScale;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getOptions(feature) {
|
||||
return feature.options;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getActions(feature) {
|
||||
return feature.actions;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getChoices(feature) {
|
||||
return feature.choices;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getModifiers(feature) {
|
||||
return feature.modifiers;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getSpells(feature) {
|
||||
return feature.spells;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getFeats(feature) {
|
||||
return feature.feats;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getInfusionChoices(feature) {
|
||||
return feature.infusionChoices;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getInfusionRules(feature) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(feature)) === null || _a === void 0 ? void 0 : _a.infusionRules) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param feature
|
||||
*/
|
||||
export function getAccessType(feature) {
|
||||
return feature.accessType;
|
||||
}
|
||||
export function getFeatListContracts(featureContract) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = getDefinition(featureContract)) === null || _a === void 0 ? void 0 : _a.grantedFeats) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
import { ActionGenerators } from '../Action';
|
||||
import { ChoiceGenerators } from '../Choice';
|
||||
import { ClassAccessors } from '../Class';
|
||||
import { CreatureRuleGenerators } from '../CreatureRule';
|
||||
import { DataOriginDataInfoKeyEnum, DataOriginGenerators, DataOriginTypeEnum, } from '../DataOrigin';
|
||||
import { DefinitionPoolUtils } from '../DefinitionPool';
|
||||
import { FeatGenerators } from '../Feat';
|
||||
import { FeatList } from '../FeatList';
|
||||
import { InfusionChoiceGenerators } from '../InfusionChoice';
|
||||
import { ModifierGenerators } from '../Modifier';
|
||||
import { OptionAccessors, OptionGenerators } from '../Option';
|
||||
import { SpellGenerators } from '../Spell';
|
||||
import { getCreatureRules, getDefinitionKey, getEntityTypeId, getFeatListContracts, getId, getInfusionRules, getOptions, getUniqueKey, } from './accessors';
|
||||
export function generateClassFeature(charClass, classFeature, ruleData, classesLookupData, definitionPool, characterId, choiceComponents, baseFeats) {
|
||||
const id = getId(classFeature);
|
||||
const entityTypeId = getEntityTypeId(classFeature);
|
||||
const { actionLookup, choiceLookup, modifierLookup, spellLookup, valueLookup, featLookup, optionLookup, infusionChoiceInfusionLookup, knownInfusionLookupByChoiceKey, spellListDataOriginLookup, } = classesLookupData;
|
||||
const actions = ActionGenerators.generateBaseActions(id, entityTypeId, actionLookup, valueLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass);
|
||||
const choices = ChoiceGenerators.generateBaseChoices(id, entityTypeId, choiceLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass);
|
||||
const modifiers = ModifierGenerators.generateModifiers(id, entityTypeId, modifierLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass);
|
||||
const spells = SpellGenerators.generateBaseSpells(id, entityTypeId, spellLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass, ruleData, spellListDataOriginLookup, valueLookup);
|
||||
const feats = FeatGenerators.generateDataOriginFeats(id, entityTypeId, featLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass);
|
||||
const options = generateClassFeatureOptions(classFeature, charClass, featLookup, actionLookup, spellLookup, optionLookup, modifierLookup, valueLookup, spellListDataOriginLookup, ruleData);
|
||||
const infusionChoices = InfusionChoiceGenerators.generateInfusionChoices(getInfusionRules(classFeature), DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass, infusionChoiceInfusionLookup, knownInfusionLookupByChoiceKey, characterId);
|
||||
const featLists = getFeatListContracts(classFeature).map((contract) => new FeatList(contract, choiceComponents.definitionKeyNameMap, baseFeats));
|
||||
return Object.assign(Object.assign({}, classFeature), { actions,
|
||||
choices,
|
||||
feats,
|
||||
modifiers,
|
||||
spells,
|
||||
options,
|
||||
infusionChoices, accessType: DefinitionPoolUtils.getDefinitionAccessType(getDefinitionKey(classFeature), definitionPool), featLists });
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classFeature
|
||||
* @param charClass
|
||||
* @param featLookup
|
||||
* @param actionLookup
|
||||
* @param spellLookup
|
||||
* @param optionLookup
|
||||
* @param modifierLookup
|
||||
* @param valueLookup
|
||||
* @param spellListDataOriginLookup
|
||||
* @param ruleData
|
||||
*/
|
||||
export function generateClassFeatureOptions(classFeature, charClass, featLookup, actionLookup, spellLookup, optionLookup, modifierLookup, valueLookup, spellListDataOriginLookup, ruleData) {
|
||||
const baseOptions = OptionGenerators.generateDataOriginBaseOptions(getId(classFeature), getEntityTypeId(classFeature), optionLookup, DataOriginTypeEnum.CLASS_FEATURE, classFeature, charClass);
|
||||
return OptionGenerators.generateOptions(baseOptions, DataOriginTypeEnum.CLASS_FEATURE, featLookup, actionLookup, spellLookup, optionLookup, modifierLookup, valueLookup, spellListDataOriginLookup, ruleData, classFeature, charClass);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classes
|
||||
* @param xpInfo
|
||||
* @param ruleData
|
||||
*/
|
||||
export function generateClassCreatureRules(classes, xpInfo, ruleData) {
|
||||
const rules = [];
|
||||
classes.forEach((charClass) => {
|
||||
const features = ClassAccessors.getActiveClassFeatures(charClass);
|
||||
features.forEach((feature) => {
|
||||
const dataOrigin = DataOriginGenerators.generateDataOrigin(DataOriginTypeEnum.CLASS_FEATURE, feature, charClass);
|
||||
const featureRules = getCreatureRules(feature);
|
||||
featureRules.forEach((rule) => {
|
||||
rules.push(CreatureRuleGenerators.generateRule(rule, dataOrigin, xpInfo, ruleData));
|
||||
});
|
||||
const options = getOptions(feature);
|
||||
options.forEach((option) => {
|
||||
const optionRules = OptionAccessors.getCreatureRules(option);
|
||||
optionRules.forEach((rule) => {
|
||||
rules.push(CreatureRuleGenerators.generateRule(rule, dataOrigin, xpInfo, ruleData));
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
return rules;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classes
|
||||
*/
|
||||
export function generateRefClassFeatureData(classes) {
|
||||
let data = {};
|
||||
classes.forEach((charClass) => {
|
||||
ClassAccessors.getClassFeatures(charClass).forEach((classFeature) => {
|
||||
data[getUniqueKey(classFeature)] = {
|
||||
[DataOriginDataInfoKeyEnum.PRIMARY]: classFeature,
|
||||
[DataOriginDataInfoKeyEnum.PARENT]: charClass,
|
||||
};
|
||||
});
|
||||
});
|
||||
return data;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import * as ClassFeatureAccessors from './accessors';
|
||||
import * as ClassFeatureGenerators from './generators';
|
||||
import * as ClassFeatureSimulators from './simulators';
|
||||
import * as ClassFeatureTypings from './typings';
|
||||
import * as ClassFeatureUtils from './utils';
|
||||
import * as ClassFeatureValidators from './validators';
|
||||
export * from './typings';
|
||||
export { ClassFeatureAccessors, ClassFeatureGenerators, ClassFeatureSimulators, ClassFeatureUtils, ClassFeatureValidators, };
|
||||
export default Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ClassFeatureAccessors), ClassFeatureGenerators), ClassFeatureSimulators), ClassFeatureTypings), ClassFeatureUtils), ClassFeatureValidators);
|
||||
@@ -0,0 +1,42 @@
|
||||
import { ClassAccessors } from '../Class';
|
||||
import { DefinitionPoolUtils } from '../DefinitionPool';
|
||||
import { FeatList } from '../FeatList';
|
||||
import { getFeatListContracts } from './accessors';
|
||||
export function simulateClassFeature(definitionKey, definitionPool,
|
||||
// Optional args. Sometimes this method is called just to get an object that kind of looks like
|
||||
// a class feature, but is only used for a few properties.
|
||||
classes, choiceComponents, baseFeats) {
|
||||
var _a;
|
||||
const definition = DefinitionPoolUtils.getClassFeatureDefinition(definitionKey, definitionPool);
|
||||
if (definition === null) {
|
||||
return null;
|
||||
}
|
||||
let levelScale = null;
|
||||
if (definition === null || definition === void 0 ? void 0 : definition.levelScales) {
|
||||
// Find class that correlates to feature
|
||||
const classFeatureClass = classes === null || classes === void 0 ? void 0 : classes.find((classIterator) => ClassAccessors.getId(classIterator) === definition.classId);
|
||||
if (classFeatureClass) {
|
||||
// Find max level scale of appropriate level
|
||||
(_a = definition.levelScales) === null || _a === void 0 ? void 0 : _a.forEach((definitionLevelScale) => {
|
||||
if (definitionLevelScale.level <= classFeatureClass.level) {
|
||||
levelScale = definitionLevelScale;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
const classFeatureMapping = simulateClassFeatureContract({
|
||||
definition,
|
||||
levelScale,
|
||||
});
|
||||
const featLists = choiceComponents && baseFeats
|
||||
? getFeatListContracts(classFeatureMapping).map((contract) => new FeatList(contract, choiceComponents.definitionKeyNameMap, baseFeats))
|
||||
: [];
|
||||
return Object.assign(Object.assign({}, classFeatureMapping), { actions: [], choices: [], feats: [], modifiers: [], options: [], spells: [], infusionChoices: [], accessType: DefinitionPoolUtils.getDefinitionAccessType(definitionKey, definitionPool), featLists });
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param classFeatureProps
|
||||
*/
|
||||
export function simulateClassFeatureContract(classFeatureProps) {
|
||||
return Object.assign({ levelScale: null, definition: null }, classFeatureProps);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { ClassAccessors } from '../Class';
|
||||
import { AppContextTypeEnum, DB_STRING_MARTIAL_ARTS, DB_STRING_PACT_MAGIC, DB_STRING_SPELLCASTING, DB_STRING_DEDICATED_WEAPON, } from '../Core';
|
||||
import { getHideInBuilder, getHideInSheet, getLevelScale, getName } from './accessors';
|
||||
export function doesEnableSpellcasting(feature) {
|
||||
return getName(feature) === DB_STRING_SPELLCASTING;
|
||||
}
|
||||
export function doesEnablePactMagic(feature) {
|
||||
return getName(feature) === DB_STRING_PACT_MAGIC;
|
||||
}
|
||||
export function doesEnableDedicatedWeapon(feature) {
|
||||
return getName(feature) === DB_STRING_DEDICATED_WEAPON;
|
||||
}
|
||||
export function doesEnableMartialArts(feature) {
|
||||
return getName(feature).indexOf(DB_STRING_MARTIAL_ARTS) === 0;
|
||||
}
|
||||
export function getContextData(feature, charClass) {
|
||||
return {
|
||||
levelScale: getLevelScale(feature),
|
||||
classLevel: charClass ? ClassAccessors.getLevel(charClass) : null,
|
||||
};
|
||||
}
|
||||
export function getHideInContext(feature, context) {
|
||||
if (context === AppContextTypeEnum.SHEET) {
|
||||
return getHideInSheet(feature);
|
||||
}
|
||||
return getHideInBuilder(feature);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { ClassValidators } from '../Class';
|
||||
import { getClassId } from './accessors';
|
||||
/**
|
||||
*
|
||||
* @param charClass
|
||||
* @param classFeature
|
||||
*/
|
||||
export function isValidClassClassFeature(charClass, classFeature) {
|
||||
return ClassValidators.isValidClassId(charClass, getClassId(classFeature));
|
||||
}
|
||||
Reference in New Issue
Block a user