mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
[Feature] Beastform Types (#372)
* Temp * Finished Evolved * Fixed hybrid * Changed generalConfig.tiers to be number based * Weaponhandling while in beastform * Added unarmed strike in sidebar * Added DamageEnricher * Added effect enricher * Corrected downtime buttons and actions * Added BeastformTooltip * Split the BeastformDialog into parts with tabs * Added temp beastform features * rollData change * Improvement * character.getRollData cleanup
This commit is contained in:
parent
867947c2c5
commit
42a705a870
93 changed files with 2795 additions and 538 deletions
|
|
@ -1,80 +1,10 @@
|
|||
import { diceTypes, getDiceSoNicePresets, range } from '../config/generalConfig.mjs';
|
||||
import Tagify from '@yaireo/tagify';
|
||||
|
||||
export const loadCompendiumOptions = async compendiums => {
|
||||
const compendiumValues = [];
|
||||
|
||||
for (var compendium of compendiums) {
|
||||
const values = await getCompendiumOptions(compendium);
|
||||
compendiumValues.push(values);
|
||||
}
|
||||
|
||||
return compendiumValues;
|
||||
};
|
||||
|
||||
const getCompendiumOptions = async compendium => {
|
||||
const compendiumPack = await game.packs.get(compendium);
|
||||
|
||||
const values = [];
|
||||
for (var value of compendiumPack.index) {
|
||||
const document = await compendiumPack.getDocument(value._id);
|
||||
values.push(document);
|
||||
}
|
||||
|
||||
return values;
|
||||
};
|
||||
|
||||
export const getWidthOfText = (txt, fontsize, allCaps, bold) => {
|
||||
const text = allCaps ? txt.toUpperCase() : txt;
|
||||
if (getWidthOfText.c === undefined) {
|
||||
getWidthOfText.c = document.createElement('canvas');
|
||||
getWidthOfText.ctx = getWidthOfText.c.getContext('2d');
|
||||
}
|
||||
var fontspec = `${bold ? 'bold' : ''} ${fontsize}px` + ' ' + 'Signika, sans-serif';
|
||||
if (getWidthOfText.ctx.font !== fontspec) getWidthOfText.ctx.font = fontspec;
|
||||
|
||||
return getWidthOfText.ctx.measureText(text).width;
|
||||
};
|
||||
|
||||
export const padArray = (arr, len, fill) => {
|
||||
return arr.concat(Array(len).fill(fill)).slice(0, len);
|
||||
};
|
||||
|
||||
export const getTier = (level, asNr) => {
|
||||
switch (Math.floor((level + 1) / 3)) {
|
||||
case 1:
|
||||
return asNr ? 1 : 'tier1';
|
||||
case 2:
|
||||
return asNr ? 2 : 'tier2';
|
||||
case 3:
|
||||
return asNr ? 3 : 'tier3';
|
||||
default:
|
||||
return asNr ? 0 : 'tier0';
|
||||
}
|
||||
};
|
||||
|
||||
export const capitalize = string => {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
};
|
||||
|
||||
export const getPathValue = (path, entity, numeric) => {
|
||||
const pathValue = foundry.utils.getProperty(entity, path);
|
||||
if (pathValue) return numeric ? Number.parseInt(pathValue) : pathValue;
|
||||
|
||||
return numeric ? Number.parseInt(path) : path;
|
||||
};
|
||||
|
||||
export const generateId = (title, length) => {
|
||||
const id = title
|
||||
.split(' ')
|
||||
.map((w, i) => {
|
||||
const p = w.slugify({ replacement: '', strict: true });
|
||||
return i ? p.titleCase() : p;
|
||||
})
|
||||
.join('');
|
||||
return Number.isNumeric(length) ? id.slice(0, length).padEnd(length, '0') : id;
|
||||
};
|
||||
|
||||
export function rollCommandToJSON(text) {
|
||||
if (!text) return {};
|
||||
|
||||
|
|
@ -311,7 +241,6 @@ export function getDocFromElement(element) {
|
|||
return foundry.utils.fromUuidSync(target.dataset.itemUuid) ?? null;
|
||||
}
|
||||
|
||||
|
||||
export const itemAbleRollParse = (value, actor, item) => {
|
||||
if (!value) return value;
|
||||
|
||||
|
|
@ -325,13 +254,7 @@ export const itemAbleRollParse = (value, actor, item) => {
|
|||
};
|
||||
|
||||
export const arraysEqual = (a, b) =>
|
||||
a.length === b.length &&
|
||||
[...new Set([...a, ...b])].every(
|
||||
v => a.filter(e => e === v).length === b.filter(e => e === v).length
|
||||
);
|
||||
a.length === b.length &&
|
||||
[...new Set([...a, ...b])].every(v => a.filter(e => e === v).length === b.filter(e => e === v).length);
|
||||
|
||||
export const setsEqual = (a, b) =>
|
||||
a.size === b.size &&
|
||||
[...a].every(
|
||||
value => b.has(value)
|
||||
);
|
||||
export const setsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue