mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-17 15:39:02 +01:00
Added effect enricher
This commit is contained in:
parent
6772a8fbd8
commit
d3836fbeeb
8 changed files with 77 additions and 44 deletions
|
|
@ -3,7 +3,7 @@ import * as applications from './module/applications/_module.mjs';
|
||||||
import * as models from './module/data/_module.mjs';
|
import * as models from './module/data/_module.mjs';
|
||||||
import * as documents from './module/documents/_module.mjs';
|
import * as documents from './module/documents/_module.mjs';
|
||||||
import RegisterHandlebarsHelpers from './module/helpers/handlebarsHelper.mjs';
|
import RegisterHandlebarsHelpers from './module/helpers/handlebarsHelper.mjs';
|
||||||
import { enricherConfig } from './module/enrichers/_module.mjs';
|
import { enricherConfig, enricherRenderSetup } from './module/enrichers/_module.mjs';
|
||||||
import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs';
|
import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs';
|
||||||
import { NarrativeCountdowns } from './module/applications/ui/countdowns.mjs';
|
import { NarrativeCountdowns } from './module/applications/ui/countdowns.mjs';
|
||||||
import { DualityRollColor } from './module/data/settings/Appearance.mjs';
|
import { DualityRollColor } from './module/data/settings/Appearance.mjs';
|
||||||
|
|
@ -168,45 +168,15 @@ Hooks.on('ready', () => {
|
||||||
Hooks.once('dicesoniceready', () => {});
|
Hooks.once('dicesoniceready', () => {});
|
||||||
|
|
||||||
Hooks.on('renderChatMessageHTML', (_, element) => {
|
Hooks.on('renderChatMessageHTML', (_, element) => {
|
||||||
element
|
enricherRenderSetup(element);
|
||||||
.querySelectorAll('.enriched-damage-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDamageButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.duality-roll-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDualityButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.measured-template-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderMeasuredTemplate));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on('renderJournalEntryPageProseMirrorSheet', (_, element) => {
|
Hooks.on('renderJournalEntryPageProseMirrorSheet', (_, element) => {
|
||||||
element
|
enricherRenderSetup(element);
|
||||||
.querySelectorAll('.enriched-damage-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDamageButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.duality-roll-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDualityButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.measured-template-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderMeasuredTemplate));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on('renderHandlebarsApplication', (_, element) => {
|
Hooks.on('renderHandlebarsApplication', (_, element) => {
|
||||||
element
|
enricherRenderSetup(element);
|
||||||
.querySelectorAll('.enriched-damage-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDamageButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.duality-roll-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderDualityButton));
|
|
||||||
|
|
||||||
element
|
|
||||||
.querySelectorAll('.measured-template-button')
|
|
||||||
.forEach(element => element.addEventListener('click', renderMeasuredTemplate));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on('chatMessage', (_, message) => {
|
Hooks.on('chatMessage', (_, message) => {
|
||||||
|
|
|
||||||
|
|
@ -1590,7 +1590,8 @@
|
||||||
"sendToVault": "Send to Vault",
|
"sendToVault": "Send to Vault",
|
||||||
"sendToLoadout": "Send to Loadout",
|
"sendToLoadout": "Send to Loadout",
|
||||||
"makeDeathMove": "Make a Death Move",
|
"makeDeathMove": "Make a Death Move",
|
||||||
"rangeAndTarget": "Range & Target"
|
"rangeAndTarget": "Range & Target",
|
||||||
|
"dragApplyEffect": "Drag effect to apply it to an actor"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
import { rollCommandToJSON } from '../helpers/utils.mjs';
|
|
||||||
|
|
||||||
export default function DhDamageEnricher(match, _options) {
|
export default function DhDamageEnricher(match, _options) {
|
||||||
const parts = match[1].split('|').map(x => x.trim());
|
const parts = match[1].split('|').map(x => x.trim());
|
||||||
|
|
||||||
|
|
@ -25,8 +23,7 @@ export default function DhDamageEnricher(match, _options) {
|
||||||
return getDamageMessage(value, type, match[0]);
|
return getDamageMessage(value, type, match[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDamageMessage(damage, type, defaultElement) {
|
function getDamageMessage(damage, type, defaultElement) {
|
||||||
const dualityElement = document.createElement('span');
|
|
||||||
const typeIcons = type
|
const typeIcons = type
|
||||||
.replace('[', '')
|
.replace('[', '')
|
||||||
.replace(']', '')
|
.replace(']', '')
|
||||||
|
|
@ -41,6 +38,7 @@ export function getDamageMessage(damage, type, defaultElement) {
|
||||||
|
|
||||||
const iconNodes = typeIcons.map(x => `<i class="fa-solid ${x}"></i>`).join('');
|
const iconNodes = typeIcons.map(x => `<i class="fa-solid ${x}"></i>`).join('');
|
||||||
|
|
||||||
|
const dualityElement = document.createElement('span');
|
||||||
dualityElement.innerHTML = `
|
dualityElement.innerHTML = `
|
||||||
<button class="enriched-damage-button"
|
<button class="enriched-damage-button"
|
||||||
data-value="${damage}"
|
data-value="${damage}"
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ export default function DhDualityRollEnricher(match, _options) {
|
||||||
return getDualityMessage(roll);
|
return getDualityMessage(roll);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDualityMessage(roll) {
|
function getDualityMessage(roll) {
|
||||||
const traitLabel =
|
const traitLabel =
|
||||||
roll.trait && abilities[roll.trait]
|
roll.trait && abilities[roll.trait]
|
||||||
? game.i18n.format('DAGGERHEART.GENERAL.check', {
|
? game.i18n.format('DAGGERHEART.GENERAL.check', {
|
||||||
|
|
|
||||||
19
module/enrichers/EffectEnricher.mjs
Normal file
19
module/enrichers/EffectEnricher.mjs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
export default async function DhEffectEnricher(match, _options) {
|
||||||
|
const effect = await foundry.utils.fromUuid(match[1]);
|
||||||
|
if (!effect) return match[0];
|
||||||
|
|
||||||
|
const dualityElement = document.createElement('span');
|
||||||
|
dualityElement.innerHTML = `
|
||||||
|
<a class="flexrow enriched-effect"
|
||||||
|
data-link
|
||||||
|
draggable="true"
|
||||||
|
data-uuid="${match[1]}"
|
||||||
|
data-tooltip="${game.i18n.localize('DAGGERHEART.UI.Tooltip.dragApplyEffect')}"
|
||||||
|
>
|
||||||
|
<img src="icons/svg/aura.svg" style="width: 24px;" />
|
||||||
|
<span>${effect.name}</span>
|
||||||
|
</a>
|
||||||
|
`;
|
||||||
|
|
||||||
|
return dualityElement;
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
import { default as DhDamageEnricher } from './DamageEnricher.mjs';
|
import { default as DhDamageEnricher, renderDamageButton } from './DamageEnricher.mjs';
|
||||||
import { default as DhDualityRollEnricher } from './DualityRollEnricher.mjs';
|
import { default as DhDualityRollEnricher, renderDualityButton } from './DualityRollEnricher.mjs';
|
||||||
import { default as DhTemplateEnricher } from './TemplateEnricher.mjs';
|
import { default as DhEffectEnricher } from './EffectEnricher.mjs';
|
||||||
|
import { default as DhTemplateEnricher, renderMeasuredTemplate } from './TemplateEnricher.mjs';
|
||||||
|
|
||||||
export { DhDamageEnricher, DhDualityRollEnricher, DhTemplateEnricher };
|
export { DhDamageEnricher, DhDualityRollEnricher, DhEffectEnricher, DhTemplateEnricher };
|
||||||
|
|
||||||
export const enricherConfig = [
|
export const enricherConfig = [
|
||||||
{
|
{
|
||||||
|
|
@ -13,8 +14,30 @@ export const enricherConfig = [
|
||||||
pattern: /\[\[\/dr\s?(.*?)\]\]/g,
|
pattern: /\[\[\/dr\s?(.*?)\]\]/g,
|
||||||
enricher: DhDualityRollEnricher
|
enricher: DhDualityRollEnricher
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
pattern: /^@Effect\[(.*)\]$/g,
|
||||||
|
enricher: DhEffectEnricher
|
||||||
|
},
|
||||||
{
|
{
|
||||||
pattern: /^@Template\[(.*)\]$/g,
|
pattern: /^@Template\[(.*)\]$/g,
|
||||||
enricher: DhTemplateEnricher
|
enricher: DhTemplateEnricher
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const enricherRenderSetup = element => {
|
||||||
|
element
|
||||||
|
.querySelectorAll('.enriched-damage-button')
|
||||||
|
.forEach(element => element.addEventListener('click', renderDamageButton));
|
||||||
|
|
||||||
|
element
|
||||||
|
.querySelectorAll('.duality-roll-button')
|
||||||
|
.forEach(element => element.addEventListener('click', renderDualityButton));
|
||||||
|
|
||||||
|
element
|
||||||
|
.querySelectorAll('.measured-template-button')
|
||||||
|
.forEach(element => element.addEventListener('click', renderMeasuredTemplate));
|
||||||
|
|
||||||
|
// element
|
||||||
|
// .querySelectorAll('.enriched-effect')
|
||||||
|
// .forEach(element => element.addEventListener('dragstart', dragEnrichedEffect));
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -365,6 +365,7 @@
|
||||||
width: 80px;
|
width: 80px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
&.inner-button {
|
&.inner-button {
|
||||||
--button-size: 1.25rem;
|
--button-size: 1.25rem;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,27 @@
|
||||||
.dice-title {
|
.dice-title {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.message-content {
|
||||||
|
.enriched-effect {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid black;
|
||||||
|
width: fit-content;
|
||||||
|
padding: 0 2px 0 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
color: @dark;
|
||||||
|
background-image: url(../assets/parchments/dh-parchment-light.png);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.daggerheart.chat {
|
fieldset.daggerheart.chat {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue