mirror of
https://github.com/Kornstalx/5etools-mirror-2.github.io.git
synced 2025-10-28 20:45:35 -05:00
2528 lines
43 KiB
JavaScript
2528 lines
43 KiB
JavaScript
"use strict";
|
|
|
|
function getFnListSort (prop) {
|
|
switch (prop) {
|
|
case "spell":
|
|
case "roll20Spell":
|
|
case "foundrySpell":
|
|
case "spellList":
|
|
case "monster":
|
|
case "foundryMonster":
|
|
case "monsterFluff":
|
|
case "monsterTemplate":
|
|
case "makebrewCreatureTrait":
|
|
case "makebrewCreatureAction":
|
|
case "action":
|
|
case "foundryAction":
|
|
case "background":
|
|
case "legendaryGroup":
|
|
case "language":
|
|
case "languageScript":
|
|
case "name":
|
|
case "condition":
|
|
case "disease":
|
|
case "status":
|
|
case "cult":
|
|
case "boon":
|
|
case "feat":
|
|
case "foundryFeat":
|
|
case "vehicle":
|
|
case "vehicleUpgrade":
|
|
case "foundryVehicleUpgrade":
|
|
case "backgroundFluff":
|
|
case "featFluff":
|
|
case "optionalfeatureFluff":
|
|
case "conditionFluff":
|
|
case "spellFluff":
|
|
case "itemFluff":
|
|
case "languageFluff":
|
|
case "vehicleFluff":
|
|
case "objectFluff":
|
|
case "raceFluff":
|
|
case "item":
|
|
case "foundryItem":
|
|
case "baseitem":
|
|
case "magicvariant":
|
|
case "foundryMagicvariant":
|
|
case "itemGroup":
|
|
case "itemMastery":
|
|
case "object":
|
|
case "optionalfeature":
|
|
case "foundryOptionalfeature":
|
|
case "psionic":
|
|
case "reward":
|
|
case "foundryReward":
|
|
case "rewardFluff":
|
|
case "variantrule":
|
|
case "race":
|
|
case "foundryRace":
|
|
case "foundryRaceFeature":
|
|
case "table":
|
|
case "trap":
|
|
case "trapFluff":
|
|
case "hazard":
|
|
case "hazardFluff":
|
|
case "charoption":
|
|
case "charoptionFluff":
|
|
case "recipe":
|
|
case "recipeFluff":
|
|
case "sense":
|
|
case "skill":
|
|
case "deck":
|
|
case "citation":
|
|
case "foundryMap":
|
|
return SortUtil.ascSortGenericEntity.bind(SortUtil);
|
|
case "deity":
|
|
return SortUtil.ascSortDeity.bind(SortUtil);
|
|
case "card":
|
|
return SortUtil.ascSortCard.bind(SortUtil);
|
|
case "class":
|
|
case "classFluff":
|
|
case "foundryClass":
|
|
return (a, b) => SortUtil.ascSortDateString(Parser.sourceJsonToDate(b.source), Parser.sourceJsonToDate(a.source)) || SortUtil.ascSortLower(a.name, b.name) || SortUtil.ascSortLower(a.source, b.source);
|
|
case "subclass":
|
|
case "subclassFluff":
|
|
case "foundrySubclass":
|
|
return (a, b) => SortUtil.ascSortDateString(Parser.sourceJsonToDate(b.source), Parser.sourceJsonToDate(a.source)) || SortUtil.ascSortLower(a.name, b.name);
|
|
case "classFeature":
|
|
case "foundryClassFeature":
|
|
return (a, b) => SortUtil.ascSortLower(a.classSource, b.classSource)
|
|
|| SortUtil.ascSortLower(a.className, b.className)
|
|
|| SortUtil.ascSort(a.level, b.level)
|
|
|| SortUtil.ascSortGenericEntity(a, b);
|
|
case "subclassFeature":
|
|
case "foundrySubclassFeature":
|
|
return (a, b) => SortUtil.ascSortLower(a.classSource, b.classSource)
|
|
|| SortUtil.ascSortLower(a.className, b.className)
|
|
|| SortUtil.ascSortLower(a.subclassSource, b.subclassSource)
|
|
|| SortUtil.ascSortLower(a.subclassShortName, b.subclassShortName)
|
|
|| SortUtil.ascSort(a.level, b.level)
|
|
|| SortUtil.ascSort(a.header || 0, b.header || 0)
|
|
|| SortUtil.ascSortGenericEntity(a, b);
|
|
case "subrace": return (a, b) => SortUtil.ascSortLower(a.raceName, b.raceName)
|
|
|| SortUtil.ascSortLower(a.raceSource, b.raceSource)
|
|
|| SortUtil.ascSortLower(a.name || "", b.name || "")
|
|
|| SortUtil.ascSortLower(a.source, b.source);
|
|
case "backgroundFeature": return (a, b) => SortUtil.ascSortLower(a.backgroundName, b.backgroundName)
|
|
|| SortUtil.ascSortLower(a.backgroundSource, b.backgroundSource)
|
|
|| SortUtil.ascSortGenericEntity(a, b);
|
|
case "encounter":
|
|
return SortUtil.ascSortEncounter.bind(SortUtil);
|
|
case "adventure": return SortUtil.ascSortAdventure.bind(SortUtil);
|
|
case "book": return SortUtil.ascSortBook.bind(SortUtil);
|
|
case "adventureData":
|
|
case "bookData":
|
|
return SortUtil.ascSortBookData.bind(SortUtil);
|
|
case "monsterfeatures":
|
|
return (a, b) => SortUtil.ascSortLower(a.name, b.name);
|
|
default: throw new Error(`Unhandled prop "${prop}"`);
|
|
}
|
|
}
|
|
|
|
class PropOrder {
|
|
static _getKeyProp (keyInfo) {
|
|
return typeof keyInfo === "string" ? keyInfo : keyInfo.key;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* @param obj
|
|
* @param [opts] Options object.
|
|
* @param [opts.fnUnhandledKey] Function to call on each unhandled key.
|
|
* @param [opts.isFoundryPrefixProps] If root keys should be treated as having a "foundry" prefix.
|
|
*/
|
|
static getOrderedRoot (obj, opts) {
|
|
opts ||= {};
|
|
|
|
return this._getOrdered(obj, PropOrder._ROOT, opts, "root");
|
|
}
|
|
|
|
static hasOrderRoot (obj) {
|
|
return PropOrder._ROOT
|
|
.filter(keyInfo => !(keyInfo instanceof PropOrder._IgnoredKey))
|
|
.some(keyInfo => obj[this._getKeyProp(keyInfo)] != null);
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* @param obj
|
|
* @param dataProp
|
|
* @param [opts] Options object.
|
|
* @param [opts.fnUnhandledKey] Function to call on each unhandled key.
|
|
*/
|
|
static getOrdered (obj, dataProp, opts) {
|
|
opts ||= {};
|
|
|
|
const order = PropOrder._PROP_TO_LIST[dataProp];
|
|
if (!order) throw new Error(`Unhandled prop "${dataProp}"`);
|
|
|
|
return this._getOrdered(obj, order, opts, dataProp);
|
|
}
|
|
|
|
static _getModifiedProp ({keyInfo, isFoundryPrefixProps}) {
|
|
const prop = this._getKeyProp(keyInfo);
|
|
|
|
if (!isFoundryPrefixProps || prop.startsWith("_")) return prop;
|
|
|
|
return prop.replace(/^foundry/, "").lowercaseFirst();
|
|
}
|
|
|
|
static _getOrdered (obj, order, opts, logPath) {
|
|
const out = {};
|
|
const keySet = new Set(Object.keys(obj));
|
|
const seenKeys = new Set();
|
|
|
|
order
|
|
.forEach(keyInfo => {
|
|
const prop = this._getKeyProp(keyInfo);
|
|
const propMod = this._getModifiedProp({keyInfo, isFoundryPrefixProps: opts.isFoundryPrefixProps});
|
|
|
|
if (opts.isFoundryPrefixProps && !prop.startsWith("_") && !prop.startsWith("foundry")) return;
|
|
|
|
if (!keySet.has(propMod)) return;
|
|
seenKeys.add(propMod);
|
|
|
|
if (typeof keyInfo === "string") {
|
|
out[propMod] = obj[propMod];
|
|
return;
|
|
}
|
|
|
|
if (!obj[propMod]) return out[propMod] = obj[propMod]; // Handle nulls
|
|
|
|
const optsNxt = {
|
|
...opts,
|
|
// Only used at the root
|
|
isFoundryPrefixProps: false,
|
|
};
|
|
|
|
if (keyInfo instanceof PropOrder._ObjectKey) {
|
|
const logPathNxt = `${logPath}.${prop}${propMod !== prop ? ` (${propMod})` : ""}`;
|
|
if (keyInfo.fnGetOrder) out[propMod] = this._getOrdered(obj[propMod], keyInfo.fnGetOrder(obj[propMod]), optsNxt, logPathNxt);
|
|
else if (keyInfo.order) out[propMod] = this._getOrdered(obj[propMod], keyInfo.order, optsNxt, logPathNxt);
|
|
else out[propMod] = obj[propMod];
|
|
return;
|
|
}
|
|
|
|
if (keyInfo instanceof PropOrder._ArrayKey) {
|
|
const logPathNxt = `${logPath}[n].${prop}${propMod !== prop ? ` (${propMod})` : ""}`;
|
|
if (keyInfo.fnGetOrder) out[propMod] = obj[propMod].map(it => this._getOrdered(it, keyInfo.fnGetOrder(obj[propMod]), optsNxt, logPathNxt));
|
|
else if (keyInfo.order) out[propMod] = obj[propMod].map(it => this._getOrdered(it, keyInfo.order, optsNxt, logPathNxt));
|
|
else out[propMod] = obj[propMod];
|
|
|
|
if (keyInfo.fnSort && out[propMod] instanceof Array) out[propMod].sort(keyInfo.fnSort);
|
|
|
|
return;
|
|
}
|
|
|
|
if (keyInfo instanceof PropOrder._IgnoredKey) {
|
|
out[propMod] = obj[propMod];
|
|
|
|
return;
|
|
}
|
|
|
|
throw new Error(`Unimplemented!`);
|
|
});
|
|
|
|
// ensure any non-orderable keys are maintained
|
|
const otherKeys = CollectionUtil.setDiff(keySet, seenKeys);
|
|
[...otherKeys].forEach(prop => {
|
|
out[prop] = obj[prop];
|
|
if (!opts.fnUnhandledKey) return;
|
|
|
|
const propMod = opts.isFoundryPrefixProps ? `foundry${prop.uppercaseFirst()}` : prop;
|
|
const logPathNxt = `${logPath}.${prop}${propMod !== prop ? ` (${propMod})` : ""}`;
|
|
opts.fnUnhandledKey(logPathNxt);
|
|
});
|
|
|
|
return out;
|
|
}
|
|
|
|
static hasOrder (dataProp) { return !!PropOrder._PROP_TO_LIST[dataProp]; }
|
|
}
|
|
|
|
PropOrder._ObjectKey = class {
|
|
/**
|
|
* @param key
|
|
* @param [opts] Options object.
|
|
* @param [opts.fnGetOrder] Function which gets the ordering to apply to objects with this key.
|
|
* Takes precedence over `.order`.
|
|
* @param [opts.order] Ordering to apply to objects with this key.
|
|
*/
|
|
constructor (key, opts) {
|
|
opts = opts || {};
|
|
|
|
this.key = key;
|
|
this.fnGetOrder = opts.fnGetOrder;
|
|
this.order = opts.order;
|
|
}
|
|
|
|
static getCopyKey ({identKeys = null, fnGetModOrder}) {
|
|
return new this("_copy", {
|
|
order: [
|
|
...(
|
|
identKeys
|
|
|| [
|
|
"name",
|
|
"source",
|
|
]
|
|
),
|
|
"_templates",
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: fnGetModOrder,
|
|
}),
|
|
"_preserve",
|
|
],
|
|
});
|
|
}
|
|
};
|
|
|
|
PropOrder._ArrayKey = class {
|
|
/**
|
|
* @param key
|
|
* @param [opts] Options object.
|
|
* @param [opts.fnGetOrder] Function which gets the ordering to apply to objects with this key.
|
|
* Takes precedence over `.order`.
|
|
* @param [opts.order] Ordering to apply to objects with this key.
|
|
* @param [opts.fnSort] Function to sort arrays with this key.
|
|
*/
|
|
constructor (key, opts) {
|
|
opts = opts || {};
|
|
|
|
this.key = key;
|
|
this.fnGetOrder = opts.fnGetOrder;
|
|
this.order = opts.order;
|
|
this.fnSort = opts.fnSort;
|
|
}
|
|
|
|
static getRootKey (prop) {
|
|
return new this(
|
|
prop,
|
|
{
|
|
fnGetOrder: () => PropOrder._PROP_TO_LIST[prop],
|
|
fnSort: getFnListSort(prop),
|
|
},
|
|
);
|
|
}
|
|
};
|
|
|
|
PropOrder._IgnoredKey = class {
|
|
constructor (key) {
|
|
this.key = key;
|
|
}
|
|
};
|
|
|
|
PropOrder._PROPS_FOUNDRY_DATA = [
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryEffects",
|
|
"foundryImg",
|
|
];
|
|
|
|
PropOrder._META = [
|
|
"sources",
|
|
|
|
"dependencies",
|
|
"includes",
|
|
"internalCopies",
|
|
|
|
"otherSources",
|
|
|
|
"spellSchools",
|
|
"spellDistanceUnits",
|
|
"optionalFeatureTypes",
|
|
"psionicTypes",
|
|
"currencyConversions",
|
|
"fonts",
|
|
|
|
"status",
|
|
"unlisted",
|
|
|
|
"dateAdded",
|
|
"dateLastModified",
|
|
"_dateLastModifiedHash",
|
|
];
|
|
PropOrder._FOUNDRY_GENERIC = [
|
|
"name",
|
|
"source",
|
|
|
|
"type",
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
|
|
new PropOrder._ObjectKey("subEntities", {
|
|
fnGetOrder: () => PropOrder._ROOT,
|
|
}),
|
|
|
|
"_merge",
|
|
];
|
|
PropOrder._FOUNDRY_GENERIC_FEATURE = [
|
|
"name",
|
|
"source",
|
|
|
|
"isIgnored",
|
|
|
|
"type",
|
|
"system",
|
|
"actorDataMod",
|
|
"effects",
|
|
"ignoreSrdEffects",
|
|
"flags",
|
|
"img",
|
|
|
|
"entries",
|
|
|
|
new PropOrder._ObjectKey("entryData", {
|
|
fnGetOrder: () => PropOrder._ENTRY_DATA_OBJECT,
|
|
}),
|
|
|
|
new PropOrder._ObjectKey("subEntities", {
|
|
fnGetOrder: () => PropOrder._ROOT,
|
|
}),
|
|
|
|
"_merge",
|
|
];
|
|
PropOrder._MONSTER = [
|
|
"name",
|
|
"shortName",
|
|
"alias",
|
|
"group",
|
|
|
|
"isNpc",
|
|
"isNamedCreature",
|
|
|
|
"source",
|
|
"sourceSub",
|
|
"page",
|
|
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
"summonedBySpell",
|
|
"summonedBySpellLevel",
|
|
"summonedByClass",
|
|
|
|
"_isCopy",
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._MONSTER__COPY_MOD}),
|
|
|
|
"level",
|
|
"size",
|
|
"sizeNote",
|
|
"type",
|
|
"alignment",
|
|
"alignmentPrefix",
|
|
|
|
"ac",
|
|
"hp",
|
|
"speed",
|
|
|
|
"resource",
|
|
|
|
"str",
|
|
"dex",
|
|
"con",
|
|
"int",
|
|
"wis",
|
|
"cha",
|
|
|
|
"save",
|
|
"skill",
|
|
"senses",
|
|
"passive",
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
"languages",
|
|
"cr",
|
|
"pbNote",
|
|
|
|
new PropOrder._ArrayKey("spellcasting", {
|
|
fnGetOrder: () => [
|
|
"name",
|
|
"type",
|
|
"headerEntries",
|
|
|
|
"constant",
|
|
"will",
|
|
"rest",
|
|
"daily",
|
|
"weekly",
|
|
"monthly",
|
|
"yearly",
|
|
"recharge",
|
|
"charges",
|
|
|
|
"ritual",
|
|
|
|
"spells",
|
|
|
|
"footerEntries",
|
|
|
|
"chargesItem",
|
|
|
|
"ability",
|
|
"displayAs",
|
|
"hidden",
|
|
],
|
|
}),
|
|
"trait",
|
|
"actionNote",
|
|
"actionHeader",
|
|
"action",
|
|
"bonusNote",
|
|
"bonusHeader",
|
|
"bonus",
|
|
"reactionNote",
|
|
"reactionHeader",
|
|
"reaction",
|
|
"legendaryHeader",
|
|
"legendaryActions",
|
|
"legendary",
|
|
"mythicHeader",
|
|
"mythic",
|
|
"legendaryGroup",
|
|
"variant",
|
|
"footer",
|
|
|
|
"environment",
|
|
"familiar",
|
|
"dragonCastingColor",
|
|
"dragonAge",
|
|
|
|
"tokenUrl",
|
|
"token",
|
|
"tokenHref",
|
|
"tokenCredit",
|
|
"soundClip",
|
|
"foundryImg",
|
|
"foundryTokenScale",
|
|
|
|
"altArt",
|
|
|
|
new PropOrder._ArrayKey("attachedItems", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("traitTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("senseTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("actionTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("languageTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("damageTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("damageTagsLegendary", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("damageTagsSpell", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("spellcastingTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("miscTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("conditionInflict", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("conditionInflictLegendary", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("conditionInflictSpell", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("savingThrowForced", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("savingThrowForcedLegendary", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("savingThrowForcedSpell", {fnSort: SortUtil.ascSortLower}),
|
|
|
|
"hasToken",
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
new PropOrder._ArrayKey("_versions", {
|
|
fnGetOrder: () => [
|
|
"name",
|
|
"source",
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: () => PropOrder._MONSTER__COPY_MOD,
|
|
}),
|
|
"_preserve",
|
|
"_abstract",
|
|
"_implementations",
|
|
...PropOrder._MONSTER,
|
|
],
|
|
fnSort: (a, b) => SortUtil.ascSortLower(a.name || "", b.name || "") || SortUtil.ascSortLower(a.source || "", b.source || ""),
|
|
}),
|
|
];
|
|
PropOrder._MONSTER__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._MONSTER
|
|
.map(it => {
|
|
if (typeof it === "string") return it;
|
|
|
|
if (it instanceof PropOrder._ArrayKey) {
|
|
if (it.key === "spellcasting") return it.key;
|
|
return it;
|
|
}
|
|
|
|
return it;
|
|
}),
|
|
];
|
|
PropOrder._MONSTER_TEMPLATE = [
|
|
"name",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"ref",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._MONSTER_TEMPLATE__COPY_MOD}),
|
|
|
|
"crMin",
|
|
"crMax",
|
|
|
|
new PropOrder._ObjectKey("prerequisite", {
|
|
order: PropOrder._MONSTER,
|
|
}),
|
|
new PropOrder._ObjectKey("apply", {
|
|
order: [
|
|
new PropOrder._ObjectKey("_root", {
|
|
order: PropOrder._MONSTER,
|
|
}),
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: () => PropOrder._MONSTER__COPY_MOD,
|
|
}),
|
|
],
|
|
}),
|
|
];
|
|
PropOrder._MAKE_BREW_CREATURE_TRAIT = [
|
|
"name",
|
|
"source",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._MAKE_BREW_CREATURE_ACTION = [
|
|
"name",
|
|
"source",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._MONSTER_TEMPLATE__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._MONSTER_TEMPLATE,
|
|
];
|
|
PropOrder._FOUNDRY_MONSTER = [
|
|
"name",
|
|
"source",
|
|
|
|
"system",
|
|
"prototypeToken",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
];
|
|
PropOrder._GENERIC_FLUFF = [
|
|
"name",
|
|
"source",
|
|
|
|
"_copy",
|
|
|
|
"entries",
|
|
"images",
|
|
];
|
|
PropOrder._SPELL = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._SPELL__COPY_MOD}),
|
|
|
|
"level",
|
|
"school",
|
|
"subschools",
|
|
"groups",
|
|
"time",
|
|
"range",
|
|
"components",
|
|
"duration",
|
|
"meta",
|
|
|
|
"entries",
|
|
"entriesHigherLevel",
|
|
|
|
"scalingLevelDice",
|
|
|
|
new PropOrder._ObjectKey("classes", {
|
|
order: [
|
|
"fromClassList",
|
|
"fromClassListVariant",
|
|
"fromSubclass",
|
|
],
|
|
}),
|
|
"races",
|
|
"backgrounds",
|
|
"optionalfeatures",
|
|
"feats",
|
|
|
|
"damageResist",
|
|
"damageImmune",
|
|
"damageVulnerable",
|
|
"conditionImmune",
|
|
|
|
"damageInflict",
|
|
"conditionInflict",
|
|
|
|
"spellAttack",
|
|
"savingThrow",
|
|
"abilityCheck",
|
|
|
|
"affectsCreatureType",
|
|
|
|
new PropOrder._ArrayKey("miscTags", {fnSort: SortUtil.ascSortLower}),
|
|
new PropOrder._ArrayKey("areaTags", {fnSort: SortUtil.ascSortLower}),
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
|
|
new PropOrder._ObjectKey("roll20Spell", {
|
|
order: PropOrder._ROLL20_SPELL,
|
|
}),
|
|
];
|
|
PropOrder._ROLL20_SPELL = [
|
|
"name",
|
|
"source",
|
|
|
|
new PropOrder._ObjectKey("data", {
|
|
order: [
|
|
"Save",
|
|
"Damage",
|
|
"Damage Type",
|
|
"Damage Progression",
|
|
"Target",
|
|
"Healing",
|
|
"Spell Attack",
|
|
"Save Success",
|
|
"Higher Spell Slot Die",
|
|
"Higher Spell Slot Dice",
|
|
"Add Casting Modifier",
|
|
"Secondary Damage",
|
|
"Secondary Damage Type",
|
|
"Higher Level Healing",
|
|
"Higher Spell Slot Bonus",
|
|
"Secondary Higher Spell Slot Die",
|
|
"Secondary Higher Spell Slot Dice",
|
|
"Secondary Damage Progression",
|
|
"Secondary Add Casting Modifier",
|
|
"data-Cantrip Scaling",
|
|
"Crit",
|
|
"Crit Range",
|
|
],
|
|
}),
|
|
"shapedData",
|
|
];
|
|
PropOrder._SPELL__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._SPELL,
|
|
];
|
|
PropOrder._SPELL_LIST = [
|
|
"name",
|
|
|
|
"source",
|
|
|
|
"spellListType",
|
|
|
|
"className",
|
|
"classSource",
|
|
|
|
"spells",
|
|
];
|
|
PropOrder._ACTION = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"fromVariant",
|
|
|
|
"time",
|
|
|
|
"entries",
|
|
|
|
"seeAlsoAction",
|
|
];
|
|
PropOrder._ADVENTURE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"id",
|
|
"source",
|
|
"parentSource",
|
|
|
|
"group",
|
|
|
|
"cover",
|
|
"coverUrl",
|
|
"published",
|
|
"publishedOrder",
|
|
"author",
|
|
"storyline",
|
|
"level",
|
|
|
|
"alId",
|
|
"alAveragePlayerLevel",
|
|
"alLength",
|
|
|
|
"contents",
|
|
];
|
|
PropOrder._ADVENTURE_DATA = [
|
|
"name",
|
|
|
|
"id",
|
|
"source",
|
|
|
|
"data",
|
|
];
|
|
PropOrder._BOOK = [
|
|
"name",
|
|
"alias",
|
|
|
|
"id",
|
|
"source",
|
|
|
|
"group",
|
|
|
|
"cover",
|
|
"coverUrl",
|
|
"published",
|
|
"author",
|
|
|
|
"contents",
|
|
];
|
|
PropOrder._BOOK_DATA = [
|
|
"name",
|
|
|
|
"id",
|
|
"source",
|
|
|
|
"data",
|
|
];
|
|
PropOrder._BACKGROUND = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._BACKGROUND__COPY_MOD}),
|
|
|
|
"prerequisite",
|
|
"ability",
|
|
|
|
"feats",
|
|
|
|
"skillProficiencies",
|
|
"languageProficiencies",
|
|
"toolProficiencies",
|
|
"weaponProficiencies",
|
|
"armorProficiencies",
|
|
"skillToolLanguageProficiencies",
|
|
"expertise",
|
|
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"startingEquipment",
|
|
|
|
"additionalSpells",
|
|
|
|
"fromFeature",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryEffects",
|
|
"foundryAdvancement",
|
|
"foundryImg",
|
|
];
|
|
PropOrder._BACKGROUND__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._BACKGROUND,
|
|
];
|
|
PropOrder._LEGENDARY_GROUP = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"additionalSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._LEGENDARY_GROUP__COPY_MOD}),
|
|
|
|
"lairActions",
|
|
"regionalEffects",
|
|
"mythicEncounter",
|
|
];
|
|
PropOrder._LEGENDARY_GROUP__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._LEGENDARY_GROUP,
|
|
];
|
|
PropOrder._CLASS = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"isReprinted",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"isSidekick",
|
|
"classGroup",
|
|
|
|
"requirements",
|
|
"hd",
|
|
"proficiency",
|
|
|
|
"spellcastingAbility",
|
|
"casterProgression",
|
|
"preparedSpells",
|
|
"preparedSpellsProgression",
|
|
"cantripProgression",
|
|
"spellsKnownProgression",
|
|
"spellsKnownProgressionFixed",
|
|
"spellsKnownProgressionFixedAllowLowerLevel",
|
|
"spellsKnownProgressionFixedByLevel",
|
|
|
|
"additionalSpells",
|
|
"classSpells",
|
|
|
|
"optionalfeatureProgression",
|
|
|
|
"startingProficiencies",
|
|
"languageProficiencies",
|
|
"startingEquipment",
|
|
|
|
"multiclassing",
|
|
|
|
"classTableGroups",
|
|
|
|
"classFeatures",
|
|
|
|
"subclassTitle",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryAdvancement",
|
|
"foundryImg",
|
|
];
|
|
PropOrder._FOUNDRY_CLASS = [
|
|
"name",
|
|
|
|
"source",
|
|
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
|
|
"advancement",
|
|
"chooseSystem",
|
|
"isChooseSystemRenderEntries",
|
|
"isChooseFlagsRenderEntries",
|
|
"isIgnored",
|
|
"ignoreSrdEffects",
|
|
"actorDataMod",
|
|
"actorTokenMod",
|
|
];
|
|
PropOrder._SUBCLASS = [
|
|
"name",
|
|
"shortName",
|
|
"alias",
|
|
"source",
|
|
"className",
|
|
"classSource",
|
|
|
|
"page",
|
|
"srd",
|
|
"isReprinted",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
new PropOrder._ObjectKey("_copy", {
|
|
order: [
|
|
"name",
|
|
"shortName",
|
|
"source",
|
|
"className",
|
|
"classSource",
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: () => PropOrder._SUBCLASS__COPY_MOD,
|
|
}),
|
|
"_preserve",
|
|
],
|
|
}),
|
|
|
|
"spellcastingAbility",
|
|
"casterProgression",
|
|
"preparedSpells",
|
|
"preparedSpellsProgression",
|
|
"cantripProgression",
|
|
"spellsKnownProgression",
|
|
"spellsKnownProgressionFixed",
|
|
"spellsKnownProgressionFixedAllowLowerLevel",
|
|
"spellsKnownProgressionFixedByLevel",
|
|
|
|
"additionalSpells",
|
|
|
|
"subclassSpells",
|
|
"subSubclassSpells",
|
|
|
|
"optionalfeatureProgression",
|
|
|
|
"subclassTableGroups",
|
|
"subclassFeatures",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryAdvancement",
|
|
"foundryImg",
|
|
];
|
|
PropOrder._SUBCLASS__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._SUBCLASS,
|
|
];
|
|
PropOrder._SUBCLASS_FLUFF = [
|
|
"name",
|
|
"shortName",
|
|
"source",
|
|
"className",
|
|
"classSource",
|
|
|
|
"_copy",
|
|
|
|
"entries",
|
|
"images",
|
|
];
|
|
PropOrder._FOUNDRY_SUBCLASS = [
|
|
"name",
|
|
"source",
|
|
"className",
|
|
"classSource",
|
|
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
|
|
"advancement",
|
|
"chooseSystem",
|
|
"isChooseSystemRenderEntries",
|
|
"isChooseFlagsRenderEntries",
|
|
"isIgnored",
|
|
"ignoreSrdEffects",
|
|
"actorDataMod",
|
|
"actorTokenMod",
|
|
];
|
|
PropOrder._ENTRY_DATA_OBJECT = [
|
|
"languageProficiencies",
|
|
"skillProficiencies",
|
|
"weaponProficiencies",
|
|
"armorProficiencies",
|
|
"toolProficiencies",
|
|
"savingThrowProficiencies",
|
|
|
|
"expertise",
|
|
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"senses",
|
|
|
|
"resources",
|
|
];
|
|
PropOrder._CLASS_FEATURE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"className",
|
|
"classSource",
|
|
"level",
|
|
|
|
"isClassFeatureVariant",
|
|
|
|
...PropOrder._ENTRY_DATA_OBJECT,
|
|
|
|
"header",
|
|
"type",
|
|
|
|
"consumes",
|
|
|
|
"entries",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryImg",
|
|
];
|
|
PropOrder._SUBCLASS_FEATURE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"className",
|
|
"classSource",
|
|
"subclassShortName",
|
|
"subclassSource",
|
|
"level",
|
|
|
|
"isClassFeatureVariant",
|
|
|
|
"isGainAtNextFeatureLevel",
|
|
|
|
...PropOrder._ENTRY_DATA_OBJECT,
|
|
|
|
"header",
|
|
"type",
|
|
|
|
"consumes",
|
|
|
|
"entries",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryImg",
|
|
];
|
|
PropOrder._FOUNDRY_CLASS_FEATURE = [
|
|
"name",
|
|
"source",
|
|
|
|
"className",
|
|
"classSource",
|
|
"level",
|
|
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
|
|
"entries",
|
|
|
|
new PropOrder._ObjectKey("entryData", {
|
|
fnGetOrder: () => PropOrder._ENTRY_DATA_OBJECT,
|
|
}),
|
|
|
|
"chooseSystem",
|
|
"isChooseSystemRenderEntries",
|
|
"isChooseFlagsRenderEntries",
|
|
"isIgnored",
|
|
"ignoreSrdEffects",
|
|
"actorDataMod",
|
|
"actorTokenMod",
|
|
|
|
new PropOrder._ObjectKey("subEntities", {
|
|
fnGetOrder: () => PropOrder._ROOT,
|
|
}),
|
|
];
|
|
PropOrder._FOUNDRY_SUBCLASS_FEATURE = [
|
|
"name",
|
|
"source",
|
|
|
|
"className",
|
|
"classSource",
|
|
"subclassShortName",
|
|
"subclassSource",
|
|
"level",
|
|
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
|
|
"entries",
|
|
|
|
new PropOrder._ObjectKey("entryData", {
|
|
fnGetOrder: () => PropOrder._ENTRY_DATA_OBJECT,
|
|
}),
|
|
|
|
"chooseSystem",
|
|
"isChooseSystemRenderEntries",
|
|
"isChooseFlagsRenderEntries",
|
|
"isIgnored",
|
|
"ignoreSrdEffects",
|
|
"actorDataMod",
|
|
"actorTokenMod",
|
|
|
|
new PropOrder._ObjectKey("subEntities", {
|
|
fnGetOrder: () => PropOrder._ROOT,
|
|
}),
|
|
];
|
|
PropOrder._LANGUAGE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"dialects",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
|
|
"type",
|
|
"typicalSpeakers",
|
|
"script",
|
|
|
|
"fonts",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._LANGUAGE_SCRIPT = [
|
|
"name",
|
|
|
|
"source",
|
|
|
|
"fonts",
|
|
];
|
|
PropOrder._NAME = [
|
|
"name",
|
|
|
|
"source",
|
|
"page",
|
|
"legacy",
|
|
|
|
"tables",
|
|
];
|
|
PropOrder._CONDITION = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"color",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._DISEASE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"color",
|
|
|
|
"fluff",
|
|
|
|
"entries",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
];
|
|
PropOrder._STATUS = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"color",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._CULT = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
"type",
|
|
|
|
"goal",
|
|
"cultists",
|
|
"signaturespells",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._BOON = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
"type",
|
|
|
|
"ability",
|
|
|
|
"goal",
|
|
"cultists",
|
|
"signaturespells",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._DEITY = [
|
|
"name",
|
|
"alias",
|
|
"reprintAlias",
|
|
"altNames",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"additionalSources",
|
|
|
|
new PropOrder._ObjectKey("_copy", {
|
|
order: [
|
|
"name",
|
|
"source",
|
|
"pantheon",
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: () => PropOrder._DEITY__COPY_MOD,
|
|
}),
|
|
"_preserve",
|
|
],
|
|
}),
|
|
|
|
// This is used as part of the ID key
|
|
"pantheon",
|
|
|
|
"customExtensionOf",
|
|
|
|
"alignment",
|
|
"title",
|
|
"category",
|
|
"domains",
|
|
"province",
|
|
"dogma",
|
|
"symbol",
|
|
"symbolImg",
|
|
|
|
"piety",
|
|
|
|
new PropOrder._ObjectKey("customProperties", {
|
|
fnGetOrder: obj => Object.keys(obj).sort(SortUtil.ascSortLower),
|
|
}),
|
|
|
|
"entries",
|
|
|
|
"foundryImg",
|
|
];
|
|
PropOrder._DEITY__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._DEITY,
|
|
];
|
|
PropOrder._FEAT = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"additionalSources",
|
|
"otherSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._FEAT__COPY_MOD}),
|
|
|
|
"category",
|
|
"prerequisite",
|
|
|
|
"repeatable",
|
|
"repeatableNote",
|
|
|
|
"ability",
|
|
|
|
"skillProficiencies",
|
|
"languageProficiencies",
|
|
"toolProficiencies",
|
|
"weaponProficiencies",
|
|
"armorProficiencies",
|
|
"skillToolLanguageProficiencies",
|
|
"savingThrowProficiencies",
|
|
"expertise",
|
|
|
|
"immune",
|
|
"resist",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"additionalSpells",
|
|
|
|
"optionalfeatureProgression",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
];
|
|
PropOrder._FEAT__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._FEAT,
|
|
];
|
|
PropOrder._VEHICLE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"vehicleType",
|
|
|
|
"size",
|
|
"dimensions",
|
|
"weight",
|
|
|
|
"type",
|
|
"terrain",
|
|
|
|
"capCreature",
|
|
"capCrew",
|
|
"capCrewNote",
|
|
"capPassenger",
|
|
"capCargo",
|
|
|
|
"cost",
|
|
|
|
"ac",
|
|
"pace",
|
|
"speed",
|
|
|
|
"str",
|
|
"dex",
|
|
"con",
|
|
"int",
|
|
"wis",
|
|
"cha",
|
|
|
|
"hp",
|
|
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"hull",
|
|
"control",
|
|
"movement",
|
|
"weapon",
|
|
"other",
|
|
|
|
"entries",
|
|
"trait",
|
|
"actionThresholds",
|
|
"action",
|
|
"actionStation",
|
|
"reaction",
|
|
|
|
"tokenUrl",
|
|
"token",
|
|
"tokenHref",
|
|
"tokenCredit",
|
|
|
|
"hasToken",
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundrySystem",
|
|
"foundryFlags",
|
|
"foundryImg",
|
|
"foundryTokenScale",
|
|
];
|
|
PropOrder._VEHICLE_UPGRADE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"upgradeType",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._RACE_FLUFF = [
|
|
"name",
|
|
"source",
|
|
|
|
"uncommon",
|
|
"monstrous",
|
|
|
|
"_copy",
|
|
|
|
"entries",
|
|
"images",
|
|
];
|
|
PropOrder._ITEM = [
|
|
"name",
|
|
"alias",
|
|
"namePrefix",
|
|
"nameSuffix",
|
|
"nameRemove",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._ITEM__COPY_MOD}),
|
|
|
|
"baseItem",
|
|
|
|
"type",
|
|
"typeAlt",
|
|
"scfType",
|
|
|
|
"immune",
|
|
"resist",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"detail1",
|
|
|
|
"tier",
|
|
"rarity",
|
|
"reqAttune",
|
|
"reqAttuneAlt",
|
|
|
|
"reqAttuneTags",
|
|
"reqAttuneAltTags",
|
|
|
|
"wondrous",
|
|
"tattoo",
|
|
"curse",
|
|
"sentient",
|
|
|
|
"weight",
|
|
"weightMult",
|
|
"weightNote",
|
|
"weightExpression",
|
|
"value",
|
|
"valueMult",
|
|
"valueExpression",
|
|
"quantity",
|
|
"currencyConversion",
|
|
|
|
"weaponCategory",
|
|
"age",
|
|
|
|
"property",
|
|
"propertyAdd",
|
|
"propertyRemove",
|
|
"mastery",
|
|
|
|
"range",
|
|
"reload",
|
|
|
|
"dmg1",
|
|
"dmgType",
|
|
"dmg2",
|
|
|
|
"ac",
|
|
"acSpecial",
|
|
"strength",
|
|
"dexterityMax",
|
|
|
|
"crew",
|
|
"crewMin",
|
|
"crewMax",
|
|
"vehAc",
|
|
"vehHp",
|
|
"vehDmgThresh",
|
|
"vehSpeed",
|
|
"capPassenger",
|
|
"capCargo",
|
|
"travelCost",
|
|
"shippingCost",
|
|
|
|
"carryingCapacity",
|
|
"speed",
|
|
|
|
"ability",
|
|
"grantsProficiency",
|
|
"grantsLanguage",
|
|
|
|
"bonusWeapon",
|
|
"bonusWeaponAttack",
|
|
"bonusWeaponDamage",
|
|
"bonusWeaponCritDamage",
|
|
"bonusSpellAttack",
|
|
"bonusSpellDamage",
|
|
"bonusSpellSaveDc",
|
|
"bonusAc",
|
|
"bonusSavingThrow",
|
|
"bonusAbilityCheck",
|
|
"bonusProficiencyBonus",
|
|
"bonusSavingThrowConcentration",
|
|
"modifySpeed",
|
|
"reach",
|
|
"critThreshold",
|
|
|
|
"recharge",
|
|
"rechargeAmount",
|
|
"charges",
|
|
|
|
"armor",
|
|
"arrow",
|
|
"axe",
|
|
"barding",
|
|
"bolt",
|
|
"bow",
|
|
"bulletSling",
|
|
"club",
|
|
"crossbow",
|
|
"dagger",
|
|
"firearm",
|
|
"focus",
|
|
"hammer",
|
|
"mace",
|
|
"needleBlowgun",
|
|
"net",
|
|
"poison",
|
|
"polearm",
|
|
"spear",
|
|
"staff",
|
|
"stealth",
|
|
"sword",
|
|
"weapon",
|
|
|
|
"hasRefs",
|
|
"entries",
|
|
"additionalEntries",
|
|
"items",
|
|
|
|
"ammoType",
|
|
"poisonTypes",
|
|
|
|
"packContents",
|
|
"atomicPackContents",
|
|
"containerCapacity",
|
|
|
|
"optionalfeatures",
|
|
"attachedSpells",
|
|
"spellScrollLevel",
|
|
"lootTables",
|
|
|
|
"seeAlsoDeck",
|
|
"seeAlsoVehicle",
|
|
|
|
new PropOrder._ObjectKey("customProperties", {
|
|
fnGetOrder: obj => Object.keys(obj).sort(SortUtil.ascSortLower),
|
|
}),
|
|
|
|
new PropOrder._ArrayKey("miscTags", {fnSort: SortUtil.ascSortLower}),
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundryType",
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
];
|
|
PropOrder._ITEM__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._ITEM,
|
|
];
|
|
PropOrder._MAGICVARIANT = [
|
|
"name",
|
|
"alias",
|
|
"source",
|
|
|
|
"type",
|
|
|
|
"requires",
|
|
"excludes",
|
|
|
|
"rarity",
|
|
|
|
"ammo",
|
|
|
|
"entries",
|
|
|
|
new PropOrder._ObjectKey("inherits", {
|
|
order: PropOrder._ITEM,
|
|
}),
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._ITEM_MASTERY = [
|
|
"name",
|
|
"source",
|
|
|
|
"prerequisite",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._OBJECT = [
|
|
"name",
|
|
"alias",
|
|
|
|
"isNpc",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"size",
|
|
"objectType",
|
|
"creatureType",
|
|
|
|
"ac",
|
|
"hp",
|
|
"speed",
|
|
|
|
"str",
|
|
"dex",
|
|
"con",
|
|
"int",
|
|
"wis",
|
|
"cha",
|
|
|
|
"senses",
|
|
|
|
"immune",
|
|
"resist",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"entries",
|
|
"actionEntries",
|
|
|
|
"tokenUrl",
|
|
"token",
|
|
"tokenHref",
|
|
"tokenCredit",
|
|
"hasToken",
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
"foundryTokenScale",
|
|
];
|
|
PropOrder._OPTIONALFEATURE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._OPTIONALFEATURE__COPY_MOD}),
|
|
|
|
"isClassFeatureVariant",
|
|
"previousVersion",
|
|
|
|
"featureType",
|
|
|
|
"prerequisite",
|
|
|
|
"skillProficiencies",
|
|
"languageProficiencies",
|
|
"toolProficiencies",
|
|
"weaponProficiencies",
|
|
"armorProficiencies",
|
|
"skillToolLanguageProficiencies",
|
|
"expertise",
|
|
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"senses",
|
|
|
|
"additionalSpells",
|
|
|
|
"optionalfeatureProgression",
|
|
|
|
"consumes",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
];
|
|
PropOrder._OPTIONALFEATURE__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._OPTIONALFEATURE,
|
|
];
|
|
PropOrder._PSIONIC = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"type",
|
|
"order",
|
|
|
|
"entries",
|
|
|
|
"focus",
|
|
"modes",
|
|
];
|
|
PropOrder._REWARD = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"type",
|
|
|
|
"rarity",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
];
|
|
PropOrder._VARIANTRULE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
|
|
"ruleType",
|
|
|
|
"type",
|
|
"entries",
|
|
];
|
|
PropOrder._RACE_SUBRACE = [
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._RACE__COPY_MOD}),
|
|
|
|
"lineage",
|
|
"creatureTypes",
|
|
"creatureTypeTags",
|
|
|
|
new PropOrder._ArrayKey("size", {fnSort: SortUtil.ascSortSize}),
|
|
"speed",
|
|
"ability",
|
|
|
|
"heightAndWeight",
|
|
"age",
|
|
|
|
"darkvision",
|
|
"blindsight",
|
|
"feats",
|
|
|
|
new PropOrder._ArrayKey("traitTags", {fnSort: SortUtil.ascSortLower}),
|
|
"skillProficiencies",
|
|
"languageProficiencies",
|
|
"toolProficiencies",
|
|
"weaponProficiencies",
|
|
"armorProficiencies",
|
|
"skillToolLanguageProficiencies",
|
|
"expertise",
|
|
|
|
"resist",
|
|
"immune",
|
|
"vulnerable",
|
|
"conditionImmune",
|
|
|
|
"soundClip",
|
|
|
|
"additionalSpells",
|
|
|
|
"entries",
|
|
|
|
"overwrite",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
|
|
...PropOrder._PROPS_FOUNDRY_DATA,
|
|
|
|
new PropOrder._ArrayKey("_versions", {
|
|
fnGetOrder: () => [
|
|
"name",
|
|
"source",
|
|
new PropOrder._ObjectKey("_mod", {
|
|
fnGetOrder: () => PropOrder._RACE__COPY_MOD,
|
|
}),
|
|
"_preserve",
|
|
"_abstract",
|
|
"_implementations",
|
|
...PropOrder._RACE,
|
|
],
|
|
fnSort: (a, b) => SortUtil.ascSortLower(a.name || "", b.name || "") || SortUtil.ascSortLower(a.source || "", b.source || ""),
|
|
}),
|
|
];
|
|
PropOrder._RACE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
|
|
...PropOrder._RACE_SUBRACE,
|
|
];
|
|
PropOrder._RACE__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._RACE,
|
|
];
|
|
PropOrder._SUBRACE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
|
|
"raceName",
|
|
"raceSource",
|
|
|
|
...PropOrder._RACE_SUBRACE,
|
|
];
|
|
PropOrder._FOUNDRY_RACE_FEATURE = [
|
|
"name",
|
|
|
|
"source",
|
|
|
|
"raceName",
|
|
"raceSource",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({
|
|
identKeys: [
|
|
"name",
|
|
"source",
|
|
"raceName",
|
|
"raceSource",
|
|
],
|
|
fnGetModOrder: () => PropOrder._FOUNDRY_RACE_FEATURE__COPY_MOD,
|
|
}),
|
|
|
|
"system",
|
|
"effects",
|
|
"flags",
|
|
"img",
|
|
];
|
|
PropOrder._FOUNDRY_RACE_FEATURE__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._FOUNDRY_RACE_FEATURE,
|
|
];
|
|
PropOrder._TABLE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"type",
|
|
|
|
"chapter",
|
|
|
|
"caption",
|
|
|
|
"colLabels",
|
|
"colLabelGroups",
|
|
"colStyles",
|
|
|
|
"intro",
|
|
"rows",
|
|
new PropOrder._ArrayKey("tables", {
|
|
fnGetOrder: () => PropOrder._TABLE,
|
|
}),
|
|
"outro",
|
|
"footnotes",
|
|
|
|
"isNameGenerator",
|
|
"isStriped",
|
|
];
|
|
PropOrder._TRAP = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"trapHazType",
|
|
|
|
"tier",
|
|
"level",
|
|
"threat",
|
|
"effect",
|
|
|
|
"trigger",
|
|
|
|
"initiative",
|
|
"initiativeNote",
|
|
|
|
"eActive",
|
|
"eDynamic",
|
|
"eConstant",
|
|
|
|
"countermeasures",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._HAZARD = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"additionalSources",
|
|
"otherSources",
|
|
"reprintedAs",
|
|
|
|
"trapHazType",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._RECIPE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"otherSources",
|
|
|
|
"type",
|
|
"dishTypes",
|
|
|
|
"diet",
|
|
"allergenGroups",
|
|
|
|
"time",
|
|
"makes",
|
|
"serves",
|
|
"ingredients",
|
|
"equipment",
|
|
"instructions",
|
|
"noteCook",
|
|
|
|
new PropOrder._ArrayKey("miscTags", {fnSort: SortUtil.ascSortLower}),
|
|
|
|
"fluff",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._CHAROPTION = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"otherSources",
|
|
|
|
"prerequisite",
|
|
|
|
"optionType",
|
|
|
|
"entries",
|
|
|
|
"hasFluff",
|
|
"hasFluffImages",
|
|
|
|
"fluff",
|
|
];
|
|
PropOrder._SKILL = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._SENSE = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
|
|
"entries",
|
|
];
|
|
PropOrder._DECK = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
PropOrder._ObjectKey.getCopyKey({fnGetModOrder: () => PropOrder._DECK__COPY_MOD}),
|
|
|
|
"cards",
|
|
"back",
|
|
|
|
"entries",
|
|
|
|
"hasCardArt",
|
|
];
|
|
|
|
PropOrder._DECK__COPY_MOD = [
|
|
"*",
|
|
"_",
|
|
...PropOrder._DECK,
|
|
];
|
|
PropOrder._CARD = [
|
|
"name",
|
|
"alias",
|
|
|
|
"source",
|
|
"set",
|
|
"page",
|
|
"srd",
|
|
"basicRules",
|
|
"otherSources",
|
|
|
|
"suit",
|
|
"value",
|
|
"valueName",
|
|
|
|
"face",
|
|
"back",
|
|
|
|
"entries",
|
|
];
|
|
|
|
PropOrder._ENCOUNTER = [
|
|
"name",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
new PropOrder._ArrayKey("tables", {
|
|
order: [
|
|
"caption",
|
|
"minlvl",
|
|
"maxlvl",
|
|
|
|
"diceExpression",
|
|
"rollAttitude",
|
|
"table",
|
|
|
|
"footnotes",
|
|
],
|
|
fnSort: SortUtil.ascSortEncounter,
|
|
}),
|
|
];
|
|
|
|
PropOrder._CITATION = [
|
|
"name",
|
|
|
|
"source",
|
|
"page",
|
|
|
|
"entries",
|
|
];
|
|
|
|
PropOrder._FOUNDRY_MAP = [
|
|
"name",
|
|
|
|
"source",
|
|
|
|
"lights",
|
|
"walls",
|
|
];
|
|
|
|
PropOrder._PROP_TO_LIST = {
|
|
"_meta": PropOrder._META,
|
|
"monster": PropOrder._MONSTER,
|
|
"foundryMonster": PropOrder._FOUNDRY_MONSTER,
|
|
"monsterFluff": PropOrder._GENERIC_FLUFF,
|
|
"monsterTemplate": PropOrder._MONSTER_TEMPLATE,
|
|
"makebrewCreatureTrait": PropOrder._MAKE_BREW_CREATURE_TRAIT,
|
|
"makebrewCreatureAction": PropOrder._MAKE_BREW_CREATURE_ACTION,
|
|
"backgroundFluff": PropOrder._GENERIC_FLUFF,
|
|
"featFluff": PropOrder._GENERIC_FLUFF,
|
|
"optionalfeatureFluff": PropOrder._GENERIC_FLUFF,
|
|
"conditionFluff": PropOrder._GENERIC_FLUFF,
|
|
"itemFluff": PropOrder._GENERIC_FLUFF,
|
|
"languageFluff": PropOrder._GENERIC_FLUFF,
|
|
"vehicleFluff": PropOrder._GENERIC_FLUFF,
|
|
"objectFluff": PropOrder._GENERIC_FLUFF,
|
|
"raceFluff": PropOrder._RACE_FLUFF,
|
|
"rewardFluff": PropOrder._GENERIC_FLUFF,
|
|
"trapFluff": PropOrder._GENERIC_FLUFF,
|
|
"hazardFluff": PropOrder._GENERIC_FLUFF,
|
|
"spell": PropOrder._SPELL,
|
|
"roll20Spell": PropOrder._ROLL20_SPELL,
|
|
"foundrySpell": PropOrder._FOUNDRY_GENERIC,
|
|
"spellList": PropOrder._SPELL_LIST,
|
|
"action": PropOrder._ACTION,
|
|
"foundryAction": PropOrder._FOUNDRY_GENERIC,
|
|
"adventure": PropOrder._ADVENTURE,
|
|
"adventureData": PropOrder._ADVENTURE_DATA,
|
|
"book": PropOrder._BOOK,
|
|
"bookData": PropOrder._BOOK_DATA,
|
|
"background": PropOrder._BACKGROUND,
|
|
"legendaryGroup": PropOrder._LEGENDARY_GROUP,
|
|
"class": PropOrder._CLASS,
|
|
"classFluff": PropOrder._GENERIC_FLUFF,
|
|
"foundryClass": PropOrder._FOUNDRY_CLASS,
|
|
"subclass": PropOrder._SUBCLASS,
|
|
"subclassFluff": PropOrder._SUBCLASS_FLUFF,
|
|
"foundrySubclass": PropOrder._FOUNDRY_SUBCLASS,
|
|
"classFeature": PropOrder._CLASS_FEATURE,
|
|
"subclassFeature": PropOrder._SUBCLASS_FEATURE,
|
|
"foundryClassFeature": PropOrder._FOUNDRY_CLASS_FEATURE,
|
|
"foundrySubclassFeature": PropOrder._FOUNDRY_SUBCLASS_FEATURE,
|
|
"language": PropOrder._LANGUAGE,
|
|
"languageScript": PropOrder._LANGUAGE_SCRIPT,
|
|
"name": PropOrder._NAME,
|
|
"condition": PropOrder._CONDITION,
|
|
"disease": PropOrder._DISEASE,
|
|
"status": PropOrder._STATUS,
|
|
"cult": PropOrder._CULT,
|
|
"boon": PropOrder._BOON,
|
|
"deity": PropOrder._DEITY,
|
|
"feat": PropOrder._FEAT,
|
|
"foundryFeat": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"vehicle": PropOrder._VEHICLE,
|
|
"vehicleUpgrade": PropOrder._VEHICLE_UPGRADE,
|
|
"foundryVehicleUpgrade": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"item": PropOrder._ITEM,
|
|
"foundryItem": PropOrder._FOUNDRY_GENERIC,
|
|
"baseitem": PropOrder._ITEM,
|
|
"magicvariant": PropOrder._MAGICVARIANT,
|
|
"foundryMagicvariant": PropOrder._FOUNDRY_GENERIC,
|
|
"itemGroup": PropOrder._ITEM,
|
|
"itemMastery": PropOrder._ITEM_MASTERY,
|
|
"object": PropOrder._OBJECT,
|
|
"optionalfeature": PropOrder._OPTIONALFEATURE,
|
|
"foundryOptionalfeature": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"psionic": PropOrder._PSIONIC,
|
|
"foundryPsionic": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"reward": PropOrder._REWARD,
|
|
"foundryReward": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"variantrule": PropOrder._VARIANTRULE,
|
|
"spellFluff": PropOrder._GENERIC_FLUFF,
|
|
"race": PropOrder._RACE,
|
|
"foundryRace": PropOrder._FOUNDRY_GENERIC_FEATURE,
|
|
"subrace": PropOrder._SUBRACE,
|
|
"foundryRaceFeature": PropOrder._FOUNDRY_RACE_FEATURE,
|
|
"table": PropOrder._TABLE,
|
|
"trap": PropOrder._TRAP,
|
|
"hazard": PropOrder._HAZARD,
|
|
"recipe": PropOrder._RECIPE,
|
|
"recipeFluff": PropOrder._GENERIC_FLUFF,
|
|
"charoption": PropOrder._CHAROPTION,
|
|
"charoptionFluff": PropOrder._GENERIC_FLUFF,
|
|
"skill": PropOrder._SKILL,
|
|
"sense": PropOrder._SENSE,
|
|
"deck": PropOrder._DECK,
|
|
"card": PropOrder._CARD,
|
|
"encounter": PropOrder._ENCOUNTER,
|
|
"citation": PropOrder._CITATION,
|
|
"foundryMap": PropOrder._FOUNDRY_MAP,
|
|
};
|
|
|
|
PropOrder._ROOT = [
|
|
"$schema",
|
|
|
|
new PropOrder._ObjectKey("_meta", {
|
|
fnGetOrder: () => PropOrder._META,
|
|
}),
|
|
|
|
// region Player options
|
|
PropOrder._ArrayKey.getRootKey("class"),
|
|
PropOrder._ArrayKey.getRootKey("foundryClass"),
|
|
PropOrder._ArrayKey.getRootKey("classFluff"),
|
|
PropOrder._ArrayKey.getRootKey("subclass"),
|
|
PropOrder._ArrayKey.getRootKey("foundrySubclass"),
|
|
PropOrder._ArrayKey.getRootKey("subclassFluff"),
|
|
PropOrder._ArrayKey.getRootKey("classFeature"),
|
|
PropOrder._ArrayKey.getRootKey("foundryClassFeature"),
|
|
PropOrder._ArrayKey.getRootKey("subclassFeature"),
|
|
PropOrder._ArrayKey.getRootKey("foundrySubclassFeature"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("optionalfeature"),
|
|
PropOrder._ArrayKey.getRootKey("optionalfeatureFluff"),
|
|
PropOrder._ArrayKey.getRootKey("foundryOptionalfeature"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("background"),
|
|
PropOrder._ArrayKey.getRootKey("backgroundFeature"),
|
|
PropOrder._ArrayKey.getRootKey("backgroundFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("race"),
|
|
PropOrder._ArrayKey.getRootKey("subrace"),
|
|
PropOrder._ArrayKey.getRootKey("foundryRace"),
|
|
PropOrder._ArrayKey.getRootKey("foundryRaceFeature"),
|
|
PropOrder._ArrayKey.getRootKey("raceFluff"),
|
|
new PropOrder._IgnoredKey("raceFluffMeta"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("feat"),
|
|
PropOrder._ArrayKey.getRootKey("foundryFeat"),
|
|
PropOrder._ArrayKey.getRootKey("featFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("reward"),
|
|
PropOrder._ArrayKey.getRootKey("foundryReward"),
|
|
PropOrder._ArrayKey.getRootKey("rewardFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("charoption"),
|
|
PropOrder._ArrayKey.getRootKey("charoptionFluff"),
|
|
// endregion
|
|
|
|
// region General entities
|
|
PropOrder._ArrayKey.getRootKey("spell"),
|
|
PropOrder._ArrayKey.getRootKey("spellFluff"),
|
|
PropOrder._ArrayKey.getRootKey("foundrySpell"),
|
|
PropOrder._ArrayKey.getRootKey("spellList"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("baseitem"),
|
|
PropOrder._ArrayKey.getRootKey("item"),
|
|
PropOrder._ArrayKey.getRootKey("itemGroup"),
|
|
PropOrder._ArrayKey.getRootKey("magicvariant"),
|
|
PropOrder._ArrayKey.getRootKey("itemFluff"),
|
|
PropOrder._ArrayKey.getRootKey("foundryItem"),
|
|
PropOrder._ArrayKey.getRootKey("foundryMagicvariant"),
|
|
|
|
new PropOrder._IgnoredKey("itemProperty"),
|
|
new PropOrder._IgnoredKey("reducedItemProperty"),
|
|
new PropOrder._IgnoredKey("itemType"),
|
|
new PropOrder._IgnoredKey("itemTypeAdditionalEntries"),
|
|
new PropOrder._IgnoredKey("reducedItemType"),
|
|
new PropOrder._IgnoredKey("itemEntry"),
|
|
PropOrder._ArrayKey.getRootKey("itemMastery"),
|
|
new PropOrder._IgnoredKey("linkedLootTables"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("deck"),
|
|
PropOrder._ArrayKey.getRootKey("card"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("deity"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("language"),
|
|
PropOrder._ArrayKey.getRootKey("languageScript"),
|
|
PropOrder._ArrayKey.getRootKey("languageFluff"),
|
|
// endregion
|
|
|
|
// region GM-specific
|
|
PropOrder._ArrayKey.getRootKey("monster"),
|
|
PropOrder._ArrayKey.getRootKey("monsterFluff"),
|
|
PropOrder._ArrayKey.getRootKey("foundryMonster"),
|
|
PropOrder._ArrayKey.getRootKey("legendaryGroup"),
|
|
PropOrder._ArrayKey.getRootKey("monsterTemplate"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("object"),
|
|
PropOrder._ArrayKey.getRootKey("objectFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("vehicle"),
|
|
PropOrder._ArrayKey.getRootKey("vehicleUpgrade"),
|
|
PropOrder._ArrayKey.getRootKey("foundryVehicleUpgrade"),
|
|
PropOrder._ArrayKey.getRootKey("vehicleFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("cult"),
|
|
PropOrder._ArrayKey.getRootKey("boon"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("trap"),
|
|
PropOrder._ArrayKey.getRootKey("trapFluff"),
|
|
PropOrder._ArrayKey.getRootKey("hazard"),
|
|
PropOrder._ArrayKey.getRootKey("hazardFluff"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("encounter"),
|
|
PropOrder._ArrayKey.getRootKey("name"),
|
|
// endregion
|
|
|
|
// region Rules
|
|
PropOrder._ArrayKey.getRootKey("variantrule"),
|
|
PropOrder._ArrayKey.getRootKey("table"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("condition"),
|
|
PropOrder._ArrayKey.getRootKey("conditionFluff"),
|
|
PropOrder._ArrayKey.getRootKey("disease"),
|
|
PropOrder._ArrayKey.getRootKey("status"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("action"),
|
|
PropOrder._ArrayKey.getRootKey("foundryAction"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("skill"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("sense"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("citation"),
|
|
|
|
PropOrder._ArrayKey.getRootKey("adventure"),
|
|
PropOrder._ArrayKey.getRootKey("adventureData"),
|
|
PropOrder._ArrayKey.getRootKey("book"),
|
|
PropOrder._ArrayKey.getRootKey("bookData"),
|
|
// endregion
|
|
|
|
// region Other
|
|
PropOrder._ArrayKey.getRootKey("recipe"),
|
|
PropOrder._ArrayKey.getRootKey("recipeFluff"),
|
|
// endregion
|
|
|
|
// region Legacy content
|
|
PropOrder._ArrayKey.getRootKey("psionic"),
|
|
new PropOrder._IgnoredKey("psionicDisciplineFocus"),
|
|
new PropOrder._IgnoredKey("psionicDisciplineActive"),
|
|
// endregion
|
|
|
|
// region Tooling
|
|
PropOrder._ArrayKey.getRootKey("makebrewCreatureTrait"),
|
|
PropOrder._ArrayKey.getRootKey("makebrewCreatureAction"),
|
|
PropOrder._ArrayKey.getRootKey("monsterfeatures"),
|
|
// endregion
|
|
|
|
// region Roll20-specific
|
|
PropOrder._ArrayKey.getRootKey("roll20Spell"),
|
|
// endregion
|
|
|
|
// region Non-brew data
|
|
new PropOrder._IgnoredKey("blocklist"),
|
|
// endregion
|
|
|
|
// region Misc ignored keys
|
|
new PropOrder._IgnoredKey("data"),
|
|
// endregion
|
|
];
|
|
|
|
globalThis.PropOrder = PropOrder;
|