export default function DhDamageEnricher(match, _options) {
const parts = match[1].split('|').map(x => x.trim());
let value = null,
type = null;
parts.forEach(part => {
const split = part.split(':').map(x => x.toLowerCase().trim());
if (split.length === 2) {
switch (split[0]) {
case 'value':
value = split[1];
break;
case 'type':
type = split[1];
break;
}
}
});
if (!value || !value) return match[0];
return getDamageMessage(value, type, match[0]);
}
function getDamageMessage(damage, type, defaultElement) {
const typeIcons = type
.replace('[', '')
.replace(']', '')
.split(',')
.map(x => x.trim())
.map(x => {
return CONFIG.DH.GENERAL.damageTypes[x]?.icon ?? null;
})
.filter(x => x);
if (!typeIcons.length) return defaultElement;
const iconNodes = typeIcons.map(x => ``).join('');
const dualityElement = document.createElement('span');
dualityElement.innerHTML = `
`;
return dualityElement;
}
export const renderDamageButton = async event => {
const button = event.currentTarget,
value = button.dataset.value,
type = button.dataset.type
.replace('[', '')
.replace(']', '')
.split(',')
.map(x => x.trim());
const config = {
event: event,
title: game.i18n.localize('Damage Roll'),
data: { bonuses: [] },
source: {},
roll: [
{
formula: value,
applyTo: CONFIG.DH.GENERAL.healingTypes.hitPoints.id,
type: type
}
]
};
CONFIG.Dice.daggerheart.DamageRoll.build(config);
};