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,132 @@
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getUniqueKey(condition) {
|
||||
return `${getId(condition)}-${getEntityTypeId(condition)}`;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getContractId(condition) {
|
||||
return condition.id;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getContractLevel(condition) {
|
||||
return condition.level;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDescription(condition) {
|
||||
return getDefinitionDescription(condition);
|
||||
}
|
||||
export function getDefinitionDescription(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : null;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getEntityTypeId(condition) {
|
||||
return getDefinitionEntityTypeId(condition);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDefinitionEntityTypeId(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.entityTypeId) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getId(condition) {
|
||||
return getDefinitionId(condition);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDefinitionId(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDefinitionLevels(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.levels) !== null && _b !== void 0 ? _b : [];
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getName(condition) {
|
||||
return getDefinitionName(condition);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDefinitionName(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '';
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getSlug(condition) {
|
||||
return getDefinitionSlug(condition);
|
||||
}
|
||||
export function getDefinitionSlug(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.slug) !== null && _b !== void 0 ? _b : '';
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getType(condition) {
|
||||
return getDefinitionType(condition);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getDefinitionType(condition) {
|
||||
var _a, _b;
|
||||
return (_b = (_a = condition.definition) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : -1;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getLevels(condition) {
|
||||
return condition.levels;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getModifiers(condition) {
|
||||
return condition.modifiers;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getActiveLevel(condition) {
|
||||
return condition.level;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
export var ConditionTypeEnum;
|
||||
(function (ConditionTypeEnum) {
|
||||
ConditionTypeEnum[ConditionTypeEnum["STANDARD"] = 1] = "STANDARD";
|
||||
ConditionTypeEnum[ConditionTypeEnum["SPECIAL"] = 2] = "SPECIAL";
|
||||
})(ConditionTypeEnum || (ConditionTypeEnum = {}));
|
||||
export var ConditionIdEnum;
|
||||
(function (ConditionIdEnum) {
|
||||
ConditionIdEnum[ConditionIdEnum["BLINDED"] = 1] = "BLINDED";
|
||||
ConditionIdEnum[ConditionIdEnum["CHARMED"] = 2] = "CHARMED";
|
||||
ConditionIdEnum[ConditionIdEnum["DEAFENED"] = 3] = "DEAFENED";
|
||||
ConditionIdEnum[ConditionIdEnum["EXHAUSTION"] = 4] = "EXHAUSTION";
|
||||
ConditionIdEnum[ConditionIdEnum["FRIGHTENED"] = 5] = "FRIGHTENED";
|
||||
ConditionIdEnum[ConditionIdEnum["GRAPPLED"] = 6] = "GRAPPLED";
|
||||
ConditionIdEnum[ConditionIdEnum["INCAPACITATED"] = 7] = "INCAPACITATED";
|
||||
ConditionIdEnum[ConditionIdEnum["INVISIBLE"] = 8] = "INVISIBLE";
|
||||
ConditionIdEnum[ConditionIdEnum["PARALYZED"] = 9] = "PARALYZED";
|
||||
ConditionIdEnum[ConditionIdEnum["PETRIFIED"] = 10] = "PETRIFIED";
|
||||
ConditionIdEnum[ConditionIdEnum["POISONED"] = 11] = "POISONED";
|
||||
ConditionIdEnum[ConditionIdEnum["PRONE"] = 12] = "PRONE";
|
||||
ConditionIdEnum[ConditionIdEnum["RESTRAINED"] = 13] = "RESTRAINED";
|
||||
ConditionIdEnum[ConditionIdEnum["STUNNED"] = 14] = "STUNNED";
|
||||
ConditionIdEnum[ConditionIdEnum["UNCONSCIOUS"] = 15] = "UNCONSCIOUS";
|
||||
})(ConditionIdEnum || (ConditionIdEnum = {}));
|
||||
@@ -0,0 +1,74 @@
|
||||
import { TypeScriptUtils } from '../../utils';
|
||||
import { ConditionLevelGenerators } from '../ConditionLevel';
|
||||
import { DataOriginDataInfoKeyEnum, DataOriginTypeEnum } from '../DataOrigin';
|
||||
import { ModifierGenerators } from '../Modifier';
|
||||
import { RuleDataUtils } from '../RuleData';
|
||||
import { getContractId, getContractLevel, getDefinitionLevels, getEntityTypeId, getId, getModifiers, getUniqueKey, } from './accessors';
|
||||
/**
|
||||
*
|
||||
* @param conditions
|
||||
* @param modifierLookup
|
||||
* @param ruleData
|
||||
*/
|
||||
export function generateConditions(conditions, modifierLookup, ruleData) {
|
||||
return conditions
|
||||
.map((characterCondition) => generateCondition(characterCondition, modifierLookup, ruleData))
|
||||
.filter(TypeScriptUtils.isNotNullOrUndefined);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
* @param modifierLookup
|
||||
* @param ruleData
|
||||
*/
|
||||
export function generateCondition(condition, modifierLookup, ruleData) {
|
||||
const baseCondition = RuleDataUtils.getConditionInfo(getContractId(condition), ruleData);
|
||||
if (baseCondition === null) {
|
||||
return null;
|
||||
}
|
||||
const modifiers = ModifierGenerators.generateModifiers(getId(baseCondition), getEntityTypeId(baseCondition), modifierLookup, DataOriginTypeEnum.CONDITION, baseCondition);
|
||||
let allModifiers = [];
|
||||
let levels = [];
|
||||
if (baseCondition.definition) {
|
||||
const levelModifiers = [];
|
||||
const foundLevels = getDefinitionLevels(baseCondition).map((level) => {
|
||||
let conditionLevel = null;
|
||||
if (level) {
|
||||
conditionLevel = ConditionLevelGenerators.generateConditionLevel(level, baseCondition, modifierLookup);
|
||||
levelModifiers.push(...conditionLevel.modifiers);
|
||||
}
|
||||
return conditionLevel;
|
||||
});
|
||||
levels = foundLevels.filter(TypeScriptUtils.isNotNullOrUndefined);
|
||||
allModifiers = [...modifiers, ...levelModifiers];
|
||||
}
|
||||
return Object.assign(Object.assign({}, baseCondition), { level: getContractLevel(condition), modifiers: allModifiers, levels });
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param conditions
|
||||
*/
|
||||
export function generateConditionModifiers(conditions) {
|
||||
const modifiers = [];
|
||||
if (conditions.length === 0) {
|
||||
return modifiers;
|
||||
}
|
||||
conditions.forEach((condition) => {
|
||||
modifiers.push(...getModifiers(condition));
|
||||
});
|
||||
return modifiers;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param conditions
|
||||
*/
|
||||
export function generateRefConditionData(conditions) {
|
||||
let data = {};
|
||||
conditions.forEach((condition) => {
|
||||
data[getUniqueKey(condition)] = {
|
||||
[DataOriginDataInfoKeyEnum.PRIMARY]: condition,
|
||||
[DataOriginDataInfoKeyEnum.PARENT]: null,
|
||||
};
|
||||
});
|
||||
return data;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import * as ConditionAccessors from './accessors';
|
||||
import * as ConditionConstants from './constants';
|
||||
import * as ConditionGenerators from './generators';
|
||||
import * as ConditionTypings from './typings';
|
||||
import * as ConditionUtils from './utils';
|
||||
export * from './typings';
|
||||
export * from './constants';
|
||||
export { ConditionAccessors, ConditionGenerators, ConditionUtils };
|
||||
export default Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ConditionAccessors), ConditionConstants), ConditionGenerators), ConditionTypings), ConditionUtils);
|
||||
@@ -0,0 +1,20 @@
|
||||
import { ConditionLevelAccessors } from '../ConditionLevel';
|
||||
import { getDefinitionLevels } from './accessors';
|
||||
/**
|
||||
*
|
||||
* @param condition
|
||||
*/
|
||||
export function getLevelEffectLookup(condition) {
|
||||
const levels = getDefinitionLevels(condition);
|
||||
if (levels.length === 0) {
|
||||
return null;
|
||||
}
|
||||
return levels.reduce((acc, levelData) => {
|
||||
const level = ConditionLevelAccessors.getLevel(levelData);
|
||||
const effect = ConditionLevelAccessors.getEffect(levelData);
|
||||
if (!acc[level] && effect !== null) {
|
||||
acc[level] = effect;
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
Reference in New Issue
Block a user