``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { getModifierData, getModifierDataType, getModifierGroupId, getType } from './accessors';
|
|
import { InfusionModifierDataTypeEnum, InfusionTypeEnum } from './constants';
|
|
/**
|
|
* TODO this needs to consider item information for knownInfusions to be true.
|
|
* see hack__requiresItemChoice() for more info
|
|
*
|
|
* @param infusion
|
|
*/
|
|
export function deriveRequiresItemChoice(infusion) {
|
|
return getType(infusion) !== InfusionTypeEnum.REPLICATE;
|
|
}
|
|
/**
|
|
*
|
|
* @param infusion
|
|
*/
|
|
export function deriveRequiresModifierDataChoice(infusion) {
|
|
const modifierDataType = getModifierDataType(infusion);
|
|
if (modifierDataType === null || modifierDataType === InfusionModifierDataTypeEnum.GRANTED) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
/**
|
|
*
|
|
* @param infusion
|
|
*/
|
|
export function deriveSelectedModifierData(infusion) {
|
|
const modifierGroupId = getModifierGroupId(infusion);
|
|
const modifierData = getModifierData(infusion);
|
|
const modifierDataType = getModifierDataType(infusion);
|
|
switch (modifierDataType) {
|
|
case InfusionModifierDataTypeEnum.GRANTED:
|
|
return modifierData[0];
|
|
case InfusionModifierDataTypeEnum.CLASS_LEVEL:
|
|
case InfusionModifierDataTypeEnum.DAMAGE_TYPE_CHOICE:
|
|
const foundModifierGroup = modifierData.find((dataItem) => dataItem.id === modifierGroupId);
|
|
return foundModifierGroup ? foundModifierGroup : null;
|
|
default:
|
|
// not implemented
|
|
}
|
|
return null;
|
|
}
|