mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-18 07:59:03 +01:00
Merge branch 'main' into 474-sage-cards
This commit is contained in:
commit
1acee0bb4b
95 changed files with 4095 additions and 1144 deletions
BIN
assets/parchments/dh-parchment-critical.png
Normal file
BIN
assets/parchments/dh-parchment-critical.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 MiB |
BIN
assets/parchments/dh-parchment-fear.png
Normal file
BIN
assets/parchments/dh-parchment-fear.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 MiB |
BIN
assets/parchments/dh-parchment-hope.png
Normal file
BIN
assets/parchments/dh-parchment-hope.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 MiB |
|
|
@ -56,6 +56,8 @@ Hooks.once('init', () => {
|
|||
};
|
||||
|
||||
CONFIG.Dice.rolls = [...CONFIG.Dice.rolls, DHRoll, DualityRoll, D20Roll, DamageRoll];
|
||||
Roll.CHAT_TEMPLATE = "systems/daggerheart/templates/ui/chat/foundryRoll.hbs";
|
||||
Roll.TOOLTIP_TEMPLATE = "systems/daggerheart/templates/ui/chat/foundryRollTooltip.hbs";
|
||||
CONFIG.MeasuredTemplate.objectClass = placeables.DhMeasuredTemplate;
|
||||
|
||||
const { DocumentSheetConfig } = foundry.applications.apps;
|
||||
|
|
@ -129,6 +131,7 @@ Hooks.once('init', () => {
|
|||
|
||||
CONFIG.ChatMessage.dataModels = models.chatMessages.config;
|
||||
CONFIG.ChatMessage.documentClass = documents.DhChatMessage;
|
||||
CONFIG.ChatMessage.template = 'systems/daggerheart/templates/ui/chat/chat-message.hbs';
|
||||
|
||||
CONFIG.Canvas.rulerClass = placeables.DhRuler;
|
||||
CONFIG.Canvas.layers.templates.layerClass = placeables.DhTemplateLayer;
|
||||
|
|
@ -173,8 +176,10 @@ Hooks.on('ready', () => {
|
|||
|
||||
Hooks.once('dicesoniceready', () => {});
|
||||
|
||||
Hooks.on('renderChatMessageHTML', (_, element) => {
|
||||
Hooks.on('renderChatMessageHTML', (_, element, message) => {
|
||||
enricherRenderSetup(element);
|
||||
const cssClass = message.message.flags?.daggerheart?.cssClass;
|
||||
if (cssClass) cssClass.split(' ').forEach(cls => element.classList.add(cls));
|
||||
});
|
||||
|
||||
Hooks.on('renderJournalEntryPageProseMirrorSheet', (_, element) => {
|
||||
|
|
|
|||
27
lang/en.json
27
lang/en.json
|
|
@ -1577,6 +1577,7 @@
|
|||
},
|
||||
"Bonuses": {
|
||||
"rest": {
|
||||
"downtimeAction": "Downtime Action",
|
||||
"shortRest": {
|
||||
"shortRestMoves": {
|
||||
"label": "Short Rest: Bonus Short Rest Moves",
|
||||
|
|
@ -1743,6 +1744,7 @@
|
|||
},
|
||||
"Roll": {
|
||||
"attack": "Attack Roll",
|
||||
"basic": "Roll",
|
||||
"difficulty": "Roll (Difficulty {difficulty})",
|
||||
"primaryWeaponAttack": "Primary Weapon Attack Roll",
|
||||
"secondaryWeaponAttack": "Secondary Weapon Attack Roll",
|
||||
|
|
@ -1850,7 +1852,10 @@
|
|||
"burden": "Burden",
|
||||
"continue": "Continue",
|
||||
"criticalSuccess": "Critical Success",
|
||||
"criticalShort": "Critical",
|
||||
"d20Roll": "D20 Roll",
|
||||
"damage": "Damage",
|
||||
"damageRoll": "Damage Roll",
|
||||
"damageType": "Damage Type",
|
||||
"description": "Description",
|
||||
"difficulty": "Difficulty",
|
||||
|
|
@ -1869,6 +1874,11 @@
|
|||
"features": "Features",
|
||||
"formula": "Formula",
|
||||
"healing": "Healing",
|
||||
"healingRoll": "Healing Roll",
|
||||
"hit": {
|
||||
"single": "Hit",
|
||||
"plural": "Hits"
|
||||
},
|
||||
"HitPoints": {
|
||||
"single": "Hit Point",
|
||||
"plural": "Hit Points",
|
||||
|
|
@ -1885,10 +1895,15 @@
|
|||
"levelUp": "Level Up",
|
||||
"loadout": "Loadout",
|
||||
"max": "Max",
|
||||
"miss": {
|
||||
"single": "Miss",
|
||||
"plural": "Miss"
|
||||
},
|
||||
"maxWithThing": "Max {thing}",
|
||||
"multiclass": "Multiclass",
|
||||
"newCategory": "New Category",
|
||||
"none": "None",
|
||||
"noTarget": "No current target",
|
||||
"partner": "Partner",
|
||||
"proficiency": "Proficiency",
|
||||
"quantity": "Quantity",
|
||||
|
|
@ -2158,6 +2173,9 @@
|
|||
},
|
||||
"UI": {
|
||||
"Chat": {
|
||||
"action": {
|
||||
"title": "Action"
|
||||
},
|
||||
"applyEffect": {
|
||||
"title": "Apply Effects - {name}"
|
||||
},
|
||||
|
|
@ -2172,12 +2190,16 @@
|
|||
"dealDamageToTargets": "Damage Hit Targets",
|
||||
"dealDamage": "Deal Damage",
|
||||
"rollDamage": "Roll Damage",
|
||||
"hitTarget": "Hit Targets",
|
||||
"selectedTarget": "Selected"
|
||||
"hitTarget": "Hit",
|
||||
"selectedTarget": "Selected",
|
||||
"currentTarget": "Current"
|
||||
},
|
||||
"deathMove": {
|
||||
"title": "Death Move"
|
||||
},
|
||||
"dicePool": {
|
||||
"title": "Dice Pool"
|
||||
},
|
||||
"domainCard": {
|
||||
"title": "Domain Card"
|
||||
},
|
||||
|
|
@ -2283,6 +2305,7 @@
|
|||
"dragApplyEffect": "Drag effect to apply it to an actor",
|
||||
"appliedEvenIfSuccessful": "Applied even if save succeeded",
|
||||
"diceIsRerolled": "The dice has been rerolled (x{times})",
|
||||
"pendingSaves": "Pending Reaction Rolls",
|
||||
"openSheetSettings": "Open Settings"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,8 +152,8 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
|
|||
this.config.roll.type = this.reactionOverride
|
||||
? CONFIG.DH.ITEM.actionTypes.reaction.id
|
||||
: this.config.roll.type === CONFIG.DH.ITEM.actionTypes.reaction.id
|
||||
? null
|
||||
: this.config.roll.type;
|
||||
? null
|
||||
: this.config.roll.type;
|
||||
this.render();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,20 +47,31 @@ export default class DhpDeathMove extends HandlebarsApplicationMixin(Application
|
|||
|
||||
static async takeMove() {
|
||||
const cls = getDocumentClass('ChatMessage');
|
||||
const msg = new cls({
|
||||
const msg = {
|
||||
user: game.user.id,
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/deathMove.hbs',
|
||||
{
|
||||
player: this.actor.name,
|
||||
actor: { name: this.actor.name, img: this.actor.img },
|
||||
author: game.users.get(game.user.id),
|
||||
title: game.i18n.localize(this.selectedMove.name),
|
||||
img: this.selectedMove.img,
|
||||
description: game.i18n.localize(this.selectedMove.description)
|
||||
}
|
||||
)
|
||||
});
|
||||
),
|
||||
title: game.i18n.localize(
|
||||
'DAGGERHEART.UI.Chat.deathMove.title'
|
||||
),
|
||||
speaker: cls.getSpeaker(),
|
||||
flags: {
|
||||
daggerheart: {
|
||||
cssClass: 'dh-chat-message dh-style'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cls.create(msg.toObject());
|
||||
cls.create(msg);
|
||||
|
||||
this.close();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,22 +133,34 @@ export default class DhpDowntime extends HandlebarsApplicationMixin(ApplicationV
|
|||
});
|
||||
|
||||
const cls = getDocumentClass('ChatMessage');
|
||||
const msg = new cls({
|
||||
const msg = {
|
||||
user: game.user.id,
|
||||
system: {
|
||||
moves: moves,
|
||||
actor: this.actor.uuid
|
||||
},
|
||||
speaker: cls.getSpeaker(),
|
||||
title: game.i18n.localize(
|
||||
`DAGGERHEART.APPLICATIONS.Downtime.${this.shortrest ? 'shortRest' : 'longRest'}.title`
|
||||
),
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/downtime.hbs',
|
||||
{
|
||||
title: `${this.actor.name} - ${game.i18n.localize(`DAGGERHEART.APPLICATIONS.Downtime.${this.shortrest ? 'shortRest' : 'longRest'}.title`)}`,
|
||||
title: game.i18n.localize(
|
||||
`DAGGERHEART.APPLICATIONS.Downtime.${this.shortrest ? 'shortRest' : 'longRest'}.title`
|
||||
),
|
||||
actor: { name: this.actor.name, img: this.actor.img },
|
||||
moves: moves
|
||||
}
|
||||
)
|
||||
});
|
||||
),
|
||||
flags: {
|
||||
daggerheart: {
|
||||
cssClass: 'dh-chat-message dh-style'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cls.create(msg.toObject());
|
||||
cls.create(msg);
|
||||
|
||||
// Reset selection and update number of taken moves
|
||||
for (const [catName, category] of Object.entries(this.moveData)) {
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ export default class ResourceDiceDialog extends HandlebarsApplicationMixin(Appli
|
|||
this.resetUsed = true;
|
||||
|
||||
const cls = getDocumentClass('ChatMessage');
|
||||
const msg = new cls({
|
||||
const msg = {
|
||||
user: game.user.id,
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/resource-roll.hbs',
|
||||
|
|
@ -83,9 +83,9 @@ export default class ResourceDiceDialog extends HandlebarsApplicationMixin(Appli
|
|||
name: this.item.name
|
||||
}
|
||||
)
|
||||
});
|
||||
};
|
||||
|
||||
cls.create(msg.toObject());
|
||||
cls.create(msg);
|
||||
this.close();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
|
|||
|
||||
static DEFAULT_OPTIONS = {
|
||||
tag: 'form',
|
||||
classes: ['daggerheart', 'dh-style', 'dialog'],
|
||||
classes: ['daggerheart', 'dh-style', 'dialog', 'max-800'],
|
||||
window: {
|
||||
icon: 'fa-solid fa-wrench',
|
||||
resizable: false
|
||||
|
|
|
|||
|
|
@ -108,17 +108,15 @@ export default class AdversarySheet extends DHBaseActorSheet {
|
|||
*/
|
||||
static #reactionRoll(event) {
|
||||
const config = {
|
||||
event: event,
|
||||
event,
|
||||
title: `Reaction Roll: ${this.actor.name}`,
|
||||
headerTitle: 'Adversary Reaction Roll',
|
||||
roll: {
|
||||
type: 'reaction'
|
||||
},
|
||||
chatMessage: {
|
||||
type: 'adversaryRoll',
|
||||
template: 'systems/daggerheart/templates/ui/chat/adversary-roll.hbs',
|
||||
mute: true
|
||||
}
|
||||
type: 'trait',
|
||||
hasRoll: true,
|
||||
data: this.actor.getRollData()
|
||||
};
|
||||
|
||||
this.actor.diceRoll(config);
|
||||
|
|
|
|||
|
|
@ -611,9 +611,16 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
|||
}),
|
||||
roll: {
|
||||
trait: button.dataset.attribute
|
||||
}
|
||||
},
|
||||
hasRoll: true
|
||||
};
|
||||
this.document.diceRoll(config);
|
||||
this.document.diceRoll({
|
||||
...config,
|
||||
headerTitle: `${game.i18n.localize('DAGGERHEART.GENERAL.dualityRoll')}: ${this.actor.name}`,
|
||||
title: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', {
|
||||
ability: abilityLabel
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
//TODO: redo toggleEquipItem method
|
||||
|
|
|
|||
|
|
@ -121,21 +121,37 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
|
|||
*/
|
||||
static async #sendExpToChat(_, button) {
|
||||
const experience = this.document.system.experiences[button.dataset.id];
|
||||
const cls = getDocumentClass('ChatMessage');
|
||||
|
||||
const systemData = {
|
||||
name: game.i18n.localize('DAGGERHEART.GENERAL.Experience.single'),
|
||||
description: `${experience.name} ${experience.value.signedString()}`
|
||||
actor: { name: this.actor.name, img: this.actor.img },
|
||||
author: game.users.get(game.user.id),
|
||||
action: {
|
||||
name: `${experience.name} ${experience.value.signedString()}`,
|
||||
img: '/icons/sundries/misc/admission-ticket-blue.webp'
|
||||
},
|
||||
itemOrigin: {
|
||||
name: game.i18n.localize('DAGGERHEART.GENERAL.Experience.single')
|
||||
},
|
||||
description: experience.description
|
||||
};
|
||||
|
||||
foundry.documents.ChatMessage.implementation.create({
|
||||
type: 'abilityUse',
|
||||
const msg = {
|
||||
user: game.user.id,
|
||||
system: systemData,
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/ability-use.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/action.hbs',
|
||||
systemData
|
||||
)
|
||||
});
|
||||
),
|
||||
title: game.i18n.localize('DAGGERHEART.ACTIONS.Config.displayInChat'),
|
||||
speaker: cls.getSpeaker(),
|
||||
flags: {
|
||||
daggerheart: {
|
||||
cssClass: 'dh-chat-message dh-style'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cls.create(msg);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -15,11 +15,16 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
this.setupHooks();
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ['daggerheart']
|
||||
};
|
||||
|
||||
addChatListeners = async (app, html, data) => {
|
||||
html.querySelectorAll('.duality-action-damage').forEach(element =>
|
||||
element.addEventListener('click', event => this.onRollDamage(event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.target-save-container').forEach(element =>
|
||||
html.querySelectorAll('.target-save').forEach(element =>
|
||||
element.addEventListener('click', event => this.onRollSave(event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.roll-all-save-button').forEach(element =>
|
||||
|
|
@ -28,6 +33,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
html.querySelectorAll('.duality-action-effect').forEach(element =>
|
||||
element.addEventListener('click', event => this.onApplyEffect(event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.simple-roll-button').forEach(element =>
|
||||
element.addEventListener('click', event => this.onRollSimple(event, data.message))
|
||||
);
|
||||
html.querySelectorAll('.target-container').forEach(element => {
|
||||
element.addEventListener('mouseenter', this.hoverTarget);
|
||||
element.addEventListener('mouseleave', this.unhoverTarget);
|
||||
|
|
@ -119,7 +127,7 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
event.stopPropagation();
|
||||
if (!game.user.isGM) return;
|
||||
const targets = event.target.parentElement.querySelectorAll(
|
||||
'.target-section > [data-token] .target-save-container'
|
||||
'[data-token] .target-save'
|
||||
);
|
||||
const actor = await this.getActor(message.system.source.actor),
|
||||
action = this.getAction(actor, message.system.source.item, message.system.source.action);
|
||||
|
|
@ -160,8 +168,8 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
const targetSelection = Boolean(event.target.dataset.targetHit),
|
||||
msg = ui.chat.collection.get(message._id);
|
||||
if (msg.system.targetSelection === targetSelection) return;
|
||||
if (targetSelection !== true && !Array.from(game.user.targets).length)
|
||||
return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected'));
|
||||
// if (targetSelection !== true && !Array.from(game.user.targets).length)
|
||||
// return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected'));
|
||||
msg.system.targetSelection = targetSelection;
|
||||
msg.system.prepareDerivedData();
|
||||
ui.chat.updateMessage(msg);
|
||||
|
|
@ -224,8 +232,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected'));
|
||||
|
||||
for (let target of targets) {
|
||||
let damages = foundry.utils.deepClone(message.system.damage?.roll ?? message.system.roll);
|
||||
let damages = foundry.utils.deepClone(message.system.damage);
|
||||
if (
|
||||
!message.system.hasHealing &&
|
||||
message.system.onSave &&
|
||||
message.system.targets.find(t => t.id === target.id)?.saved?.success === true
|
||||
) {
|
||||
|
|
@ -244,6 +253,33 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
|
|||
}
|
||||
}
|
||||
|
||||
async onRollSimple(event, message) {
|
||||
const buttonType = event.target.dataset.type ?? 'damage',
|
||||
total = message.rolls.reduce((a,c) => a + Roll.fromJSON(c).total, 0),
|
||||
damages = {
|
||||
'hitPoints': {
|
||||
parts: [
|
||||
{
|
||||
applyTo: 'hitPoints',
|
||||
damageTypes: [],
|
||||
total
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
targets = Array.from(game.user.targets);
|
||||
|
||||
if (targets.length === 0)
|
||||
return ui.notifications.info(game.i18n.localize('DAGGERHEART.UI.Notifications.noTargetsSelected'));
|
||||
|
||||
targets.forEach(target => {
|
||||
if(buttonType === 'healing')
|
||||
target.actor.takeHealing(damages);
|
||||
else
|
||||
target.actor.takeDamage(damages);
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle visibility of target containers.
|
||||
* @param {MouseEvent} event
|
||||
|
|
|
|||
|
|
@ -8,10 +8,6 @@ export default class DHAttackAction extends DHDamageAction {
|
|||
return parent.parent.type === 'weapon' ? 'attack' : 'spellcast';
|
||||
}
|
||||
|
||||
get chatTemplate() {
|
||||
return 'systems/daggerheart/templates/ui/chat/duality-roll.hbs';
|
||||
}
|
||||
|
||||
prepareData() {
|
||||
super.prepareData();
|
||||
if (!!this.item?.system?.attack) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import DhpActor from '../../documents/actor.mjs';
|
||||
import D20RollDialog from '../../applications/dialogs/d20RollDialog.mjs';
|
||||
import { ActionMixin } from '../fields/actionField.mjs';
|
||||
import { abilities } from '../../config/actorConfig.mjs';
|
||||
|
||||
const fields = foundry.data.fields;
|
||||
|
||||
|
|
@ -69,10 +70,6 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
|||
: this.item?.actor;
|
||||
}
|
||||
|
||||
get chatTemplate() {
|
||||
return 'systems/daggerheart/templates/ui/chat/duality-roll.hbs';
|
||||
}
|
||||
|
||||
static getRollType(parent) {
|
||||
return 'trait';
|
||||
}
|
||||
|
|
@ -161,21 +158,26 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
|||
prepareConfig(event) {
|
||||
return {
|
||||
event,
|
||||
title: this.item.name,
|
||||
title: `${this.item.name}: ${this.name}`,
|
||||
source: {
|
||||
item: this.item._id,
|
||||
action: this._id,
|
||||
actor: this.actor.uuid
|
||||
},
|
||||
dialog: {},
|
||||
dialog: {
|
||||
configure: this.hasRoll
|
||||
},
|
||||
type: this.type,
|
||||
hasRoll: this.hasRoll,
|
||||
hasDamage: this.damage?.parts?.length && this.type !== 'healing',
|
||||
hasHealing: this.damage?.parts?.length && this.type === 'healing',
|
||||
hasEffect: !!this.effects?.length,
|
||||
hasSave: this.hasSave,
|
||||
hasTarget: true,
|
||||
selectedRollMode: game.settings.get('core', 'rollMode'),
|
||||
isFastForward: event.shiftKey,
|
||||
data: this.getRollData()
|
||||
data: this.getRollData(),
|
||||
evaluate: this.hasRoll
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -192,7 +194,9 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
|||
formula: this.roll.getFormula(),
|
||||
advantage: CONFIG.DH.ACTIONS.advantageState[this.roll.advState].value
|
||||
};
|
||||
if (this.roll?.type === 'diceSet') roll.lite = true;
|
||||
if (this.roll?.type === 'diceSet'
|
||||
|| !this.hasRoll
|
||||
) roll.lite = true;
|
||||
|
||||
return roll;
|
||||
}
|
||||
|
|
@ -296,19 +300,27 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
|||
/* SAVE */
|
||||
async rollSave(actor, event, message) {
|
||||
if (!actor) return;
|
||||
const title = actor.isNPC
|
||||
? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll')
|
||||
: game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', {
|
||||
ability: game.i18n.localize(abilities[this.save.trait]?.label)
|
||||
});
|
||||
return actor.diceRoll({
|
||||
event,
|
||||
title: 'Roll Save',
|
||||
title,
|
||||
roll: {
|
||||
trait: this.save.trait,
|
||||
difficulty: this.save.difficulty ?? this.actor?.baseSaveDifficulty,
|
||||
type: 'reaction'
|
||||
},
|
||||
type: 'trait',
|
||||
hasRoll: true,
|
||||
data: actor.getRollData()
|
||||
});
|
||||
}
|
||||
|
||||
updateSaveMessage(result, message, targetId) {
|
||||
if(!result) return;
|
||||
const updateMsg = this.updateChatMessage.bind(this, message, targetId, {
|
||||
result: result.roll.total,
|
||||
success: result.roll.success
|
||||
|
|
|
|||
|
|
@ -44,19 +44,14 @@ export default class DHDamageAction extends DHBaseAction {
|
|||
|
||||
formulas = this.formatFormulas(formulas, systemData);
|
||||
|
||||
delete systemData.evaluate;
|
||||
systemData.targets.forEach(t => t.hit = true);
|
||||
const config = {
|
||||
title: game.i18n.format(`DAGGERHEART.UI.Chat.${this.type === 'healing' ? 'healing' : 'damage'}Roll.title`, {
|
||||
damage: game.i18n.localize(this.name)
|
||||
}),
|
||||
...systemData,
|
||||
roll: formulas,
|
||||
targets: systemData.targets?.filter(t => t.hit) ?? data.targets,
|
||||
hasSave: this.hasSave,
|
||||
isCritical: systemData.roll?.isCritical ?? false,
|
||||
isHealing: this.type === 'healing',
|
||||
source: systemData.source,
|
||||
data: this.getRollData(),
|
||||
event
|
||||
};
|
||||
dialog: {},
|
||||
data: this.getRollData()
|
||||
}
|
||||
if (this.hasSave) config.onSave = this.save.damageMod;
|
||||
if (data.system) {
|
||||
config.source.message = data._id;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import DHBaseAction from './baseAction.mjs';
|
||||
import DHDamageAction from './damageAction.mjs';
|
||||
|
||||
export default class DHHealingAction extends DHDamageAction {
|
||||
|
|
@ -7,49 +6,4 @@ export default class DHHealingAction extends DHDamageAction {
|
|||
static getRollType(parent) {
|
||||
return 'spellcast';
|
||||
}
|
||||
|
||||
/* static extraSchemas = [...super.extraSchemas, 'target', 'effects', 'healing', 'roll'];
|
||||
|
||||
static getRollType(parent) {
|
||||
return 'spellcast';
|
||||
}
|
||||
|
||||
getFormulaValue(data) {
|
||||
let formulaValue = this.healing.value;
|
||||
if (this.hasRoll && this.healing.resultBased && data.system.roll.result.duality === -1)
|
||||
return this.healing.valueAlt;
|
||||
return formulaValue;
|
||||
}
|
||||
|
||||
async rollHealing(event, data) {
|
||||
const systemData = data.system ?? data;
|
||||
let formulas = [
|
||||
{
|
||||
formula: this.getFormulaValue(data).getFormula(this.actor),
|
||||
applyTo: this.healing.applyTo
|
||||
}
|
||||
];
|
||||
|
||||
const config = {
|
||||
title: game.i18n.format('DAGGERHEART.UI.Chat.healingRoll.title', {
|
||||
healing: game.i18n.localize(CONFIG.DH.GENERAL.healingTypes[this.healing.applyTo].label)
|
||||
}),
|
||||
roll: formulas,
|
||||
targets: systemData.targets?.filter(t => t.hit),
|
||||
messageType: 'healing',
|
||||
source: systemData.source,
|
||||
data: this.getRollData(),
|
||||
event
|
||||
};
|
||||
|
||||
return CONFIG.Dice.daggerheart.DamageRoll.build(config);
|
||||
}
|
||||
|
||||
get chatTemplate() {
|
||||
return 'systems/daggerheart/templates/ui/chat/healing-roll.hbs';
|
||||
}
|
||||
|
||||
get modifiers() {
|
||||
return [];
|
||||
} */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,11 @@
|
|||
import DHAbilityUse from "./abilityUse.mjs";
|
||||
import DHAdversaryRoll from "./adversaryRoll.mjs";
|
||||
import DHDamageRoll from "./damageRoll.mjs";
|
||||
import DHDualityRoll from "./dualityRoll.mjs";
|
||||
import DHActorRoll from "./adversaryRoll.mjs";
|
||||
import DHApplyEffect from './applyEffects.mjs'
|
||||
|
||||
export {
|
||||
DHAbilityUse,
|
||||
DHAdversaryRoll,
|
||||
DHDamageRoll,
|
||||
DHDualityRoll,
|
||||
DHApplyEffect
|
||||
}
|
||||
|
||||
export const config = {
|
||||
abilityUse: DHAbilityUse,
|
||||
adversaryRoll: DHAdversaryRoll,
|
||||
damageRoll: DHDamageRoll,
|
||||
dualityRoll: DHDualityRoll,
|
||||
adversaryRoll: DHActorRoll,
|
||||
damageRoll: DHActorRoll,
|
||||
dualityRoll: DHActorRoll,
|
||||
applyEffect: DHApplyEffect
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
const fields = foundry.data.fields;
|
||||
|
||||
export default class DHAdversaryRoll extends foundry.abstract.TypeDataModel {
|
||||
export default class DHActorRoll extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
return {
|
||||
title: new fields.StringField(),
|
||||
|
|
@ -20,22 +20,29 @@ export default class DHAdversaryRoll extends foundry.abstract.TypeDataModel {
|
|||
})
|
||||
})
|
||||
),
|
||||
targetSelection: new fields.BooleanField({ initial: true }),
|
||||
targetSelection: new fields.BooleanField({ initial: false }),
|
||||
hasRoll: new fields.BooleanField({ initial: false }),
|
||||
hasDamage: new fields.BooleanField({ initial: false }),
|
||||
hasHealing: new fields.BooleanField({ initial: false }),
|
||||
hasEffect: new fields.BooleanField({ initial: false }),
|
||||
hasSave: new fields.BooleanField({ initial: false }),
|
||||
hasTarget: new fields.BooleanField({ initial: false }),
|
||||
isCritical: new fields.BooleanField({ initial: false }),
|
||||
onSave: new fields.StringField(),
|
||||
source: new fields.SchemaField({
|
||||
actor: new fields.StringField(),
|
||||
item: new fields.StringField(),
|
||||
action: new fields.StringField()
|
||||
}),
|
||||
damage: new fields.ObjectField()
|
||||
damage: new fields.ObjectField(),
|
||||
costs: new fields.ArrayField(
|
||||
new fields.ObjectField()
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
get messageTemplate() {
|
||||
return 'systems/daggerheart/templates/ui/chat/adversary-roll.hbs';
|
||||
return 'systems/daggerheart/templates/ui/chat/roll.hbs';
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
|
|
@ -46,5 +53,15 @@ export default class DHAdversaryRoll extends foundry.abstract.TypeDataModel {
|
|||
game.system.api.fields.ActionFields.TargetField.formatTarget(t)
|
||||
)
|
||||
: this.targets;
|
||||
if(this.targetSelection === true) {
|
||||
this.targetShort = this.targets.reduce((a,c) => {
|
||||
if(c.hit) a.hit += 1;
|
||||
else c.miss += 1;
|
||||
return a;
|
||||
}, {hit: 0, miss: 0})
|
||||
}
|
||||
this.pendingSaves = this.targets.filter(
|
||||
target => target.hit && target.saved.success === null
|
||||
).length > 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
export default class DHDamageRoll extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
|
||||
return {
|
||||
messageType: new fields.StringField({ initial: 'damage' }),
|
||||
title: new fields.StringField(),
|
||||
roll: new fields.DataField({}),
|
||||
targets: new fields.ArrayField(
|
||||
new fields.SchemaField({
|
||||
id: new fields.StringField({ required: true }),
|
||||
actorId: new fields.StringField({}),
|
||||
name: new fields.StringField(),
|
||||
img: new fields.StringField(),
|
||||
hit: new fields.BooleanField({ initial: false }),
|
||||
saved: new fields.SchemaField({
|
||||
result: new fields.NumberField(),
|
||||
success: new fields.BooleanField({ nullable: true, initial: null })
|
||||
})
|
||||
})
|
||||
),
|
||||
targetSelection: new fields.BooleanField({ initial: true }),
|
||||
hasSave: new fields.BooleanField({ initial: false }),
|
||||
isHealing: new fields.BooleanField({ initial: false }),
|
||||
onSave: new fields.StringField(),
|
||||
source: new fields.SchemaField({
|
||||
actor: new fields.StringField(),
|
||||
item: new fields.StringField(),
|
||||
action: new fields.StringField(),
|
||||
message: new fields.StringField()
|
||||
}),
|
||||
directDamage: new fields.BooleanField({ initial: true })
|
||||
};
|
||||
}
|
||||
|
||||
get messageTemplate() {
|
||||
return `systems/daggerheart/templates/ui/chat/${this.messageType}-roll.hbs`;
|
||||
}
|
||||
|
||||
prepareDerivedData() {
|
||||
this.hasHitTarget = this.targets.filter(t => t.hit === true).length > 0;
|
||||
this.currentTargets =
|
||||
this.targetSelection !== true
|
||||
? Array.from(game.user.targets).map(t =>
|
||||
game.system.api.fields.ActionFields.TargetField.formatTarget(t)
|
||||
)
|
||||
: this.targets;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
import DHAdversaryRoll from './adversaryRoll.mjs';
|
||||
|
||||
export default class DHDualityRoll extends DHAdversaryRoll {
|
||||
get messageTemplate() {
|
||||
return 'systems/daggerheart/templates/ui/chat/duality-roll.hbs';
|
||||
}
|
||||
}
|
||||
|
|
@ -26,7 +26,7 @@ export default class CostField extends fields.ArrayField {
|
|||
}
|
||||
|
||||
static calcCosts(costs) {
|
||||
console.log(costs, CostField.getResources.call(this, costs));
|
||||
// console.log(costs, CostField.getResources.call(this, costs));
|
||||
const resources = CostField.getResources.call(this, costs);
|
||||
return costs.map(c => {
|
||||
c.scale = c.scale ?? 1;
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ export class DHActionRollData extends foundry.abstract.DataModel {
|
|||
this.diceRolling.multiplier === 'flat'
|
||||
? this.diceRolling.flatMultiplier
|
||||
: `@${this.diceRolling.multiplier}`;
|
||||
if (this.diceRolling.compare && this.diceRolling.threshold) {
|
||||
if (this.diceRolling.compare && this.diceRolling.treshold) {
|
||||
formula = `${multiplier}${this.diceRolling.dice}cs${CONFIG.DH.ACTIONS.diceCompare[this.diceRolling.compare].operator}${this.diceRolling.treshold}`;
|
||||
} else {
|
||||
formula = `${multiplier}${this.diceRolling.dice}`;
|
||||
|
|
|
|||
|
|
@ -252,19 +252,27 @@ export function ActionMixin(Base) {
|
|||
const systemData = {
|
||||
title: game.i18n.localize('DAGGERHEART.CONFIG.ActionType.action'),
|
||||
origin: origin,
|
||||
img: this.img,
|
||||
name: this.name,
|
||||
description: this.description,
|
||||
actions: []
|
||||
action: { name: this.name, img: this.img, tags: this.tags ? this.tags : ['Spell', 'Arcana', 'Lv 10'] },
|
||||
itemOrigin: this.item,
|
||||
description: this.description
|
||||
};
|
||||
const msg = {
|
||||
type: 'abilityUse',
|
||||
user: game.user.id,
|
||||
actor: { name: this.actor.name, img: this.actor.img },
|
||||
author: this.author,
|
||||
speaker: cls.getSpeaker(),
|
||||
title: game.i18n.localize('DAGGERHEART.UI.Chat.action.title'),
|
||||
system: systemData,
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/ability-use.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/action.hbs',
|
||||
systemData
|
||||
)
|
||||
),
|
||||
flags: {
|
||||
daggerheart: {
|
||||
cssClass: 'dh-chat-message dh-style'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cls.create(msg);
|
||||
|
|
|
|||
|
|
@ -13,12 +13,16 @@ export default class D20Roll extends DHRoll {
|
|||
DISADVANTAGE: -1
|
||||
};
|
||||
|
||||
static messageType = 'adversaryRoll';
|
||||
|
||||
static CRITICAL_TRESHOLD = 20;
|
||||
|
||||
static DefaultDialog = D20RollDialog;
|
||||
|
||||
get title() {
|
||||
return game.i18n.localize(
|
||||
"DAGGERHEART.GENERAL.d20Roll"
|
||||
);
|
||||
}
|
||||
|
||||
get d20() {
|
||||
if (!(this.terms[0] instanceof foundry.dice.terms.Die)) this.createBaseDice();
|
||||
return this.terms[0];
|
||||
|
|
@ -136,7 +140,9 @@ export default class D20Roll extends DHRoll {
|
|||
|
||||
static postEvaluate(roll, config = {}) {
|
||||
const data = super.postEvaluate(roll, config);
|
||||
data.type = config.roll?.type;
|
||||
if (config.targets?.length) {
|
||||
config.targetSelection = true;
|
||||
config.targets.forEach(target => {
|
||||
const difficulty = config.roll.difficulty ?? target.difficulty ?? target.evasion;
|
||||
target.hit = this.isCritical || roll.total >= difficulty;
|
||||
|
|
@ -145,7 +151,6 @@ export default class D20Roll extends DHRoll {
|
|||
data.difficulty = config.roll.difficulty;
|
||||
data.success = roll.isCritical || roll.total >= config.roll.difficulty;
|
||||
}
|
||||
data.type = config.roll.type;
|
||||
data.advantage = {
|
||||
type: config.roll.advantage,
|
||||
dice: roll.dAdvantage?.denomination,
|
||||
|
|
@ -159,7 +164,7 @@ export default class D20Roll extends DHRoll {
|
|||
rerolls: dice.results.filter(x => x.rerolled)
|
||||
}
|
||||
}));
|
||||
data.isCritical = roll.isCritical;
|
||||
data.isCritical = config.isCritical = roll.isCritical;
|
||||
data.extra = roll.dice
|
||||
.filter(d => !roll.baseTerms.includes(d))
|
||||
.map(d => {
|
||||
|
|
|
|||
|
|
@ -6,23 +6,17 @@ export default class DamageRoll extends DHRoll {
|
|||
super(formula, data, options);
|
||||
}
|
||||
|
||||
static messageType = 'damageRoll';
|
||||
|
||||
static DefaultDialog = DamageDialog;
|
||||
|
||||
static async buildEvaluate(roll, config = {}, message = {}) {
|
||||
if (config.evaluate !== false) {
|
||||
// if (config.dialog.configure === false) roll.constructFormula(config);
|
||||
if (config.evaluate !== false)
|
||||
for (const roll of config.roll) await roll.roll.evaluate();
|
||||
}
|
||||
roll._evaluated = true;
|
||||
const parts = [];
|
||||
for (let r of config.roll) {
|
||||
const part = this.postEvaluate(r);
|
||||
parts.push(part);
|
||||
}
|
||||
|
||||
config.roll = this.unifyDamageRoll(parts);
|
||||
roll._evaluated = true;
|
||||
const parts = config.roll.map(r => this.postEvaluate(r));
|
||||
|
||||
config.damage = this.unifyDamageRoll(parts);
|
||||
config.targetSelection = config.targets?.length
|
||||
}
|
||||
|
||||
static postEvaluate(roll, config = {}) {
|
||||
|
|
@ -37,10 +31,17 @@ export default class DamageRoll extends DHRoll {
|
|||
}
|
||||
|
||||
static async buildPost(roll, config, message) {
|
||||
if (game.modules.get('dice-so-nice')?.active) {
|
||||
const pool = foundry.dice.terms.PoolTerm.fromRolls(
|
||||
Object.values(config.damage).flatMap(r => r.parts.map(p => p.roll))
|
||||
),
|
||||
diceRoll = Roll.fromTerms([pool]);
|
||||
await game.dice3d.showForRoll(diceRoll, game.user, true);
|
||||
}
|
||||
await super.buildPost(roll, config, message);
|
||||
if (config.source?.message) {
|
||||
const chatMessage = ui.chat.collection.get(config.source.message);
|
||||
chatMessage.update({ 'system.damage': config });
|
||||
chatMessage.update({ 'system.damage': config.damage });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@ export default class DHRoll extends Roll {
|
|||
if (!this.data || !Object.keys(this.data).length) this.data = options.data;
|
||||
}
|
||||
|
||||
get title() {
|
||||
return game.i18n.localize(
|
||||
"DAGGERHEART.GENERAL.Roll.basic"
|
||||
);
|
||||
}
|
||||
|
||||
static messageType = 'adversaryRoll';
|
||||
|
||||
static DefaultDialog = D20RollDialog;
|
||||
|
|
@ -46,8 +52,10 @@ export default class DHRoll extends Roll {
|
|||
}
|
||||
|
||||
static async buildEvaluate(roll, config = {}, message = {}) {
|
||||
if (config.evaluate !== false) await roll.evaluate();
|
||||
config.roll = this.postEvaluate(roll, config);
|
||||
if (config.evaluate !== false) {
|
||||
await roll.evaluate();
|
||||
config.roll = this.postEvaluate(roll, config);
|
||||
}
|
||||
}
|
||||
|
||||
static async buildPost(roll, config, message) {
|
||||
|
|
@ -56,15 +64,8 @@ export default class DHRoll extends Roll {
|
|||
}
|
||||
|
||||
// Create Chat Message
|
||||
if (roll instanceof CONFIG.Dice.daggerheart.DamageRoll && Object.values(config.roll)?.length) {
|
||||
const pool = foundry.dice.terms.PoolTerm.fromRolls(
|
||||
Object.values(config.roll).flatMap(r => r.parts.map(p => p.roll))
|
||||
);
|
||||
roll = Roll.fromTerms([pool]);
|
||||
}
|
||||
if (config.source?.message) {
|
||||
if (game.modules.get('dice-so-nice')?.active) await game.dice3d.showForRoll(roll, game.user, true);
|
||||
} else config.message = await this.toMessage(roll, config);
|
||||
if (!config.source?.message)
|
||||
config.message = await this.toMessage(roll, config);
|
||||
}
|
||||
|
||||
static postEvaluate(roll, config = {}) {
|
||||
|
|
@ -85,11 +86,14 @@ export default class DHRoll extends Roll {
|
|||
msg = {
|
||||
type: this.messageType,
|
||||
user: game.user.id,
|
||||
title: roll.title,
|
||||
speaker: cls.getSpeaker(),
|
||||
sound: config.mute ? null : CONFIG.sounds.dice,
|
||||
system: config,
|
||||
rolls: [roll]
|
||||
};
|
||||
return await cls.create(msg, { rollMode: config.selectedRollMode });
|
||||
if(roll._evaluated) return await cls.create(msg, { rollMode: config.selectedRollMode });
|
||||
return msg;
|
||||
}
|
||||
|
||||
static applyKeybindings(config) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,12 @@ export default class DualityRoll extends D20Roll {
|
|||
|
||||
static DefaultDialog = D20RollDialog;
|
||||
|
||||
get title() {
|
||||
return game.i18n.localize(
|
||||
"DAGGERHEART.GENERAL.dualityRoll"
|
||||
);
|
||||
}
|
||||
|
||||
get dHope() {
|
||||
// if ( !(this.terms[0] instanceof foundry.dice.terms.Die) ) return;
|
||||
if (!(this.dice[0] instanceof CONFIG.Dice.daggerheart.DualityDie)) this.createBaseDice();
|
||||
|
|
|
|||
|
|
@ -115,24 +115,26 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
|
|||
|
||||
async toChat(origin) {
|
||||
const cls = getDocumentClass('ChatMessage');
|
||||
const actor = game.actors.get(cls.getSpeaker().actor);
|
||||
const systemData = {
|
||||
title: game.i18n.localize('DAGGERHEART.CONFIG.ActionType.action'),
|
||||
action: { img: this.img, name: this.name },
|
||||
actor: { name: actor.name, img: actor.img },
|
||||
author: this.author,
|
||||
speaker: cls.getSpeaker(),
|
||||
origin: origin,
|
||||
img: this.img,
|
||||
name: this.name,
|
||||
description: this.description,
|
||||
actions: []
|
||||
};
|
||||
const msg = new cls({
|
||||
type: 'abilityUse',
|
||||
const msg = {
|
||||
title: game.i18n.localize('DAGGERHEART.GENERAL.Effect.single'),
|
||||
user: game.user.id,
|
||||
system: systemData,
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/ability-use.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/action.hbs',
|
||||
systemData
|
||||
)
|
||||
});
|
||||
};
|
||||
|
||||
cls.create(msg.toObject());
|
||||
cls.create(msg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -541,12 +541,12 @@ export default class DhpActor extends Actor {
|
|||
}
|
||||
|
||||
canResist(type, resistance) {
|
||||
if (!type) return 0;
|
||||
if (!type?.length) return false;
|
||||
return type.every(t => this.system.resistance[t]?.[resistance] === true);
|
||||
}
|
||||
|
||||
getDamageTypeReduction(type) {
|
||||
if (!type) return 0;
|
||||
if (!type?.length) return 0;
|
||||
const reduction = Object.entries(this.system.resistance).reduce(
|
||||
(a, [index, value]) => (type.includes(index) ? Math.min(value.reduction, a) : a),
|
||||
Infinity
|
||||
|
|
|
|||
|
|
@ -6,13 +6,18 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage {
|
|||
_source: this.system._source
|
||||
});
|
||||
|
||||
const actor = game.actors.get(this.speaker.actor);
|
||||
const actorData = actor ?? {
|
||||
img: this.author.avatar ? this.author.avatar : 'icons/svg/mystery-man.svg',
|
||||
name: ''
|
||||
};
|
||||
/* We can change to fully implementing the renderHTML function if needed, instead of augmenting it. */
|
||||
const html = await super.renderHTML();
|
||||
const html = await super.renderHTML({ actor: actorData, author: this.author });
|
||||
this.applyPermission(html);
|
||||
|
||||
if (this.type === 'dualityRoll') {
|
||||
html.classList.add('duality');
|
||||
switch (this.system.roll.result.duality) {
|
||||
switch (this.system.roll?.result?.duality) {
|
||||
case 1:
|
||||
html.classList.add('hope');
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -102,9 +102,9 @@ export default class DHItem extends foundry.documents.Item {
|
|||
* Generate an array of localized tag.
|
||||
* @returns {string[]} An array of localized tag strings.
|
||||
*/
|
||||
getTags() {
|
||||
_getTags() {
|
||||
const tags = [];
|
||||
if (this.system.getTags) tags.push(...this.system.getTags());
|
||||
if (this.system._getTags) tags.push(...this.system._getTags());
|
||||
return tags;
|
||||
}
|
||||
|
||||
|
|
@ -143,20 +143,33 @@ export default class DHItem extends foundry.documents.Item {
|
|||
: game.i18n.localize('DAGGERHEART.UI.Chat.foundationCard.subclassFeatureTitle'),
|
||||
origin: origin,
|
||||
img: this.img,
|
||||
name: this.name,
|
||||
item: {
|
||||
name: this.name,
|
||||
img: this.img,
|
||||
tags: this._getTags()
|
||||
},
|
||||
description: this.system.description,
|
||||
actions: []
|
||||
actions: this.system.actions
|
||||
};
|
||||
const msg = new cls({
|
||||
const msg = {
|
||||
type: 'abilityUse',
|
||||
user: game.user.id,
|
||||
actor: game.actors.get(cls.getSpeaker().actor),
|
||||
author: this.author,
|
||||
speaker: cls.getSpeaker(),
|
||||
system: systemData,
|
||||
title: game.i18n.localize('DAGGERHEART.ACTIONS.Config.displayInChat'),
|
||||
content: await foundry.applications.handlebars.renderTemplate(
|
||||
'systems/daggerheart/templates/ui/chat/ability-use.hbs',
|
||||
systemData
|
||||
)
|
||||
});
|
||||
),
|
||||
flags: {
|
||||
daggerheart: {
|
||||
cssClass: 'dh-chat-message dh-style'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
cls.create(msg.toObject());
|
||||
cls.create(msg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,9 +93,8 @@ export const enrichedDualityRoll = async (
|
|||
advantage,
|
||||
type: reaction ? 'reaction' : null
|
||||
},
|
||||
chatMessage: {
|
||||
template: 'systems/daggerheart/templates/ui/chat/duality-roll.hbs'
|
||||
}
|
||||
type: 'trait',
|
||||
hasRoll: true
|
||||
};
|
||||
|
||||
if (target) {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ export default class RegisterHandlebarsHelpers {
|
|||
damageSymbols: this.damageSymbols,
|
||||
rollParsed: this.rollParsed,
|
||||
hasProperty: foundry.utils.hasProperty,
|
||||
setVar: this.setVar
|
||||
setVar: this.setVar,
|
||||
empty: this.empty
|
||||
});
|
||||
}
|
||||
static add(a, b) {
|
||||
|
|
@ -65,4 +66,9 @@ export default class RegisterHandlebarsHelpers {
|
|||
static setVar(name, value, context) {
|
||||
this[name] = value;
|
||||
}
|
||||
|
||||
static empty(object) {
|
||||
if(!(typeof object === 'object')) return true;
|
||||
return Object.keys(object).length === 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,11 +26,15 @@ export const preloadHandlebarsTemplates = async function () {
|
|||
'systems/daggerheart/templates/actionTypes/effect.hbs',
|
||||
'systems/daggerheart/templates/actionTypes/beastform.hbs',
|
||||
'systems/daggerheart/templates/settings/components/settings-item-line.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs',
|
||||
'systems/daggerheart/templates/ui/tooltip/parts/tooltipChips.hbs',
|
||||
'systems/daggerheart/templates/ui/tooltip/parts/tooltipTags.hbs',
|
||||
'systems/daggerheart/templates/dialogs/downtime/activities.hbs',
|
||||
'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs'
|
||||
'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs',
|
||||
|
||||
|
||||
'systems/daggerheart/templates/ui/chat/parts/roll-part.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/parts/damage-part.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/parts/target-part.hbs',
|
||||
'systems/daggerheart/templates/ui/chat/parts/button-part.hbs',
|
||||
]);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Astral Projection",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "7O1tTswJMNdPgLsx",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,57 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 0,
|
||||
"level": 8,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"jhEOXtmSiwm4AX1R": {
|
||||
"type": "effect",
|
||||
"_id": "jhEOXtmSiwm4AX1R",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "1",
|
||||
"recovery": "longRest"
|
||||
},
|
||||
"effects": [],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Project",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784409,
|
||||
"modifiedTime": 1753922784409,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754106928035,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "YNOCNmZ96sCp9NEr",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!YNOCNmZ96sCp9NEr"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Copycat",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "yFcD1LOM3xKbkNYl",
|
||||
"system": {
|
||||
|
|
@ -15,15 +15,18 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784439,
|
||||
"modifiedTime": 1753922784439,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754093678683,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "3A7LZ1xmDEMGa165",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!3A7LZ1xmDEMGa165"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Deft Deceiver",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "nVCKcZkcoEivYJaF",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,114 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 0,
|
||||
"level": 1,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"8upofDpPl8wqSl77": {
|
||||
"type": "effect",
|
||||
"_id": "8upofDpPl8wqSl77",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"keyIsID": false,
|
||||
"key": "hope",
|
||||
"value": 1,
|
||||
"scalable": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "qtHDKXJ1pH8Cu7by",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Gain Advantage",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784445,
|
||||
"modifiedTime": 1753922784445,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754094497453,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "38znCh6kHTkaPwYi",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Deft Deceiver",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.38znCh6kHTkaPwYi",
|
||||
"transfer": false,
|
||||
"_id": "qtHDKXJ1pH8Cu7by",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.advantageSources",
|
||||
"mode": 2,
|
||||
"value": "Deceive or trick someone into believing a lie you told them",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Gain </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">advantage</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\"> on a roll to deceive or trick someone into believing a lie you tell them.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754094114894,
|
||||
"modifiedTime": 1754094189363,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!38znCh6kHTkaPwYi.qtHDKXJ1pH8Cu7by"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!38znCh6kHTkaPwYi"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Encore",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "wdhWWqWlPiBxtsvr",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,73 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 10,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"raz0BnldcCkMrKfn": {
|
||||
"type": "attack",
|
||||
"_id": "raz0BnldcCkMrKfn",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Repeat Attack",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784450,
|
||||
"modifiedTime": 1753922784450,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754107094204,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "klahWDFwihqqEhXP",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!klahWDFwihqqEhXP"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Endless Charisma",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "W81LnTWzwmoaycTl",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,57 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 7,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"EPhd2d8lHEnBd1pO": {
|
||||
"type": "effect",
|
||||
"_id": "EPhd2d8lHEnBd1pO",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"keyIsID": false,
|
||||
"key": "hope",
|
||||
"value": 1,
|
||||
"scalable": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Spend Hope to Reroll",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784450,
|
||||
"modifiedTime": 1753922784450,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754106238885,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "tNzFNlVHghloKsFi",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!tNzFNlVHghloKsFi"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Enrapture",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "nVCKcZkcoEivYJaF",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,178 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 0,
|
||||
"level": 1,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"G6RBFMbCuHlM45t0": {
|
||||
"type": "attack",
|
||||
"_id": "G6RBFMbCuHlM45t0",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Enrapture",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "close"
|
||||
},
|
||||
"oJDiE9egDyfdLbR7": {
|
||||
"type": "damage",
|
||||
"_id": "oJDiE9egDyfdLbR7",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "1",
|
||||
"recovery": "shortRest"
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"name": "Mark Stress",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "close"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784451,
|
||||
"modifiedTime": 1753922784451,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754094799079,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "a8lFiKX1o8T924ze",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Enraptured",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"_id": "FOQ2yqrpl2TPVxvt",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">While </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Enraptured</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice.</span></p>",
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
"transfer": true,
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754106690796,
|
||||
"modifiedTime": 1754106732172,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!a8lFiKX1o8T924ze.FOQ2yqrpl2TPVxvt"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!a8lFiKX1o8T924ze"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Grace-Touched",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "W81LnTWzwmoaycTl",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,109 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 2,
|
||||
"level": 7,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"VkPMSuoowd7hnsR5": {
|
||||
"type": "effect",
|
||||
"_id": "VkPMSuoowd7hnsR5",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "armor",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Mark Armor Slot",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"YzrQmUhNZoDYawo0": {
|
||||
"type": "damage",
|
||||
"_id": "YzrQmUhNZoDYawo0",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"type": [],
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"name": "Mark 1 Stress",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784465,
|
||||
"modifiedTime": 1753922784465,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754106506325,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "KAuNb51AwhD8KEXk",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!KAuNb51AwhD8KEXk"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Hypnotic Shimmer",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "GhLhMfmSgGqS9bwU",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,151 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 3,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"kLMAuyZktmohOSXa": {
|
||||
"type": "attack",
|
||||
"_id": "kLMAuyZktmohOSXa",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "1",
|
||||
"recovery": "shortRest"
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"resultBased": false,
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"type": [],
|
||||
"base": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "xAG75UWUz3aDZH3m",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Cast",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "close"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784471,
|
||||
"modifiedTime": 1753922784471,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754099767972,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "2ZeuCGVatQdPOVC6",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Stunned",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.2ZeuCGVatQdPOVC6",
|
||||
"transfer": false,
|
||||
"_id": "xAG75UWUz3aDZH3m",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">An illusion of flashing colors and lights that temporarily </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Stuns</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\"> targets. While </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Stunned</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">, they can’t use reactions and can’t take any other actions until they clear this </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">condition</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [
|
||||
"stun"
|
||||
],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754099673462,
|
||||
"modifiedTime": 1754102182618,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!2ZeuCGVatQdPOVC6.xAG75UWUz3aDZH3m"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!2ZeuCGVatQdPOVC6"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Inspirational Words",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "nVCKcZkcoEivYJaF",
|
||||
"system": {
|
||||
|
|
@ -9,7 +9,242 @@
|
|||
"recallCost": 1,
|
||||
"level": 1,
|
||||
"type": "ability",
|
||||
"resource": null
|
||||
|
||||
"resource": {
|
||||
"type": "simple",
|
||||
"value": 0,
|
||||
"recovery": "longRest",
|
||||
"max": "",
|
||||
"icon": ""
|
||||
},
|
||||
"actions": {
|
||||
"5sGMd6m6Ltahit4h": {
|
||||
"type": "healing",
|
||||
"_id": "5sGMd6m6Ltahit4h",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "cWu1o82ZF7GvnbXc",
|
||||
"value": 1,
|
||||
"step": null,
|
||||
"keyIsID": true
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": null,
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"name": "Clear Stress",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"QKS3vo3Nf5CK8rkF": {
|
||||
"type": "healing",
|
||||
"_id": "QKS3vo3Nf5CK8rkF",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "cWu1o82ZF7GvnbXc",
|
||||
"value": 1,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "hitPoints",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": null,
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"name": "Clear Hitpoint",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"5xn70wYZW7k9aiVl": {
|
||||
"type": "healing",
|
||||
"_id": "5xn70wYZW7k9aiVl",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "cWu1o82ZF7GvnbXc",
|
||||
"value": 1,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "hope",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": null,
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"name": "Give Hope",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
|
|
@ -20,7 +255,9 @@
|
|||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784473,
|
||||
"modifiedTime": 1754119486195,
|
||||
|
||||
"modifiedTime": 1754101191119,
|
||||
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "cWu1o82ZF7GvnbXc",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Mass Enrapture",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "7O1tTswJMNdPgLsx",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,183 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 3,
|
||||
"level": 8,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"r5eA3tAH7EplOQCP": {
|
||||
"type": "attack",
|
||||
"_id": "r5eA3tAH7EplOQCP",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "QNbnelRylVB0yCm0",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Enrapture",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "far"
|
||||
},
|
||||
"QhBaM0LU9tmSI3IO": {
|
||||
"type": "damage",
|
||||
"_id": "QhBaM0LU9tmSI3IO",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"name": "Mark Stress",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784481,
|
||||
"modifiedTime": 1753922784481,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754106900789,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "ubpixIgZrJXKyM3b",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Enraptured",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.ubpixIgZrJXKyM3b",
|
||||
"transfer": false,
|
||||
"_id": "QNbnelRylVB0yCm0",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">While </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Enraptured</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">, a target’s attention is fixed on you, narrowing their field of view and drowning out any sound but your voice.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754106766101,
|
||||
"modifiedTime": 1754106805564,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!ubpixIgZrJXKyM3b.QNbnelRylVB0yCm0"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!ubpixIgZrJXKyM3b"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Master of the Craft",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "yFcD1LOM3xKbkNYl",
|
||||
"system": {
|
||||
|
|
@ -15,15 +15,18 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784482,
|
||||
"modifiedTime": 1753922784482,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754093680967,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "yAGTwXHUC3qxpTeK",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!yAGTwXHUC3qxpTeK"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Never Upstaged",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "VgADdqYn9nS9G1Us",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,430 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 2,
|
||||
"level": 6,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"resource": {
|
||||
"type": "simple",
|
||||
"value": 0,
|
||||
"max": "4",
|
||||
"icon": ""
|
||||
},
|
||||
"actions": {
|
||||
"R5wGBhMUcnhCsfH2": {
|
||||
"type": "effect",
|
||||
"_id": "R5wGBhMUcnhCsfH2",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "McdncxmO9K1YNP7Y",
|
||||
"value": 1,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "C6e1T2oEx6PFoRUP",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Mark Stress (1 token)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"Mne0mqkibrTGwPYR": {
|
||||
"type": "effect",
|
||||
"_id": "Mne0mqkibrTGwPYR",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "McdncxmO9K1YNP7Y",
|
||||
"value": 2,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "bMMxsBungVYB1rI8",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Mark Stress (2 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"En7AF3g51P9ud9qj": {
|
||||
"type": "effect",
|
||||
"_id": "En7AF3g51P9ud9qj",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "McdncxmO9K1YNP7Y",
|
||||
"value": 3,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "tsQRbrurzi8iqs0o",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Mark Stress (3 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"WuPJlQ0wSRlGGIkh": {
|
||||
"type": "effect",
|
||||
"_id": "WuPJlQ0wSRlGGIkh",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "McdncxmO9K1YNP7Y",
|
||||
"value": 4,
|
||||
"keyIsID": true,
|
||||
"step": null
|
||||
},
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "3eTaSgHlmNDcymnW",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Mark Stress (4 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784486,
|
||||
"modifiedTime": 1753922784486,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754105577038,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "McdncxmO9K1YNP7Y",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Never Upstaged (1 token)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.McdncxmO9K1YNP7Y",
|
||||
"transfer": false,
|
||||
"_id": "C6e1T2oEx6PFoRUP",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.bonuses.damage.physical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+5",
|
||||
"priority": null
|
||||
},
|
||||
{
|
||||
"key": "system.bonuses.damage.magical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+5",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Gain a +5 bonus to your damage roll</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754105163050,
|
||||
"modifiedTime": 1754105263055,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!McdncxmO9K1YNP7Y.C6e1T2oEx6PFoRUP"
|
||||
},
|
||||
{
|
||||
"name": "Never Upstaged (2 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.McdncxmO9K1YNP7Y",
|
||||
"transfer": false,
|
||||
"_id": "bMMxsBungVYB1rI8",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.bonuses.damage.magical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+10",
|
||||
"priority": null
|
||||
},
|
||||
{
|
||||
"key": "system.bonuses.damage.physical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+10",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Gain a +10 bonus to your damage roll</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754105390279,
|
||||
"modifiedTime": 1754105466079,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!McdncxmO9K1YNP7Y.bMMxsBungVYB1rI8"
|
||||
},
|
||||
{
|
||||
"name": "Never Upstaged (3 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.McdncxmO9K1YNP7Y",
|
||||
"transfer": false,
|
||||
"_id": "tsQRbrurzi8iqs0o",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.bonuses.damage.magical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+15",
|
||||
"priority": null
|
||||
},
|
||||
{
|
||||
"key": "system.bonuses.damage.physical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+15",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Gain a +15 bonus to your damage roll</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754105499913,
|
||||
"modifiedTime": 1754105625942,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!McdncxmO9K1YNP7Y.tsQRbrurzi8iqs0o"
|
||||
},
|
||||
{
|
||||
"name": "Never Upstaged (4 tokens)",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.McdncxmO9K1YNP7Y",
|
||||
"transfer": false,
|
||||
"_id": "3eTaSgHlmNDcymnW",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.bonuses.damage.magical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+20",
|
||||
"priority": null
|
||||
},
|
||||
{
|
||||
"key": "system.bonuses.damage.physical.bonus",
|
||||
"mode": 2,
|
||||
"value": "+20",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Gain a +20 bonus to your damage roll</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754105577012,
|
||||
"modifiedTime": 1754105615102,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!McdncxmO9K1YNP7Y.3eTaSgHlmNDcymnW"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!McdncxmO9K1YNP7Y"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Notorious",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "wdhWWqWlPiBxtsvr",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,57 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 0,
|
||||
"level": 10,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"Cb39VXOUPVWl3ea4": {
|
||||
"type": "effect",
|
||||
"_id": "Cb39VXOUPVWl3ea4",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"scalable": false,
|
||||
"key": "stress",
|
||||
"value": 1,
|
||||
"keyIsID": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Gain Bonus",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784489,
|
||||
"modifiedTime": 1753922784489,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754107166411,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "IqxzvvjZiYbgx21A",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!IqxzvvjZiYbgx21A"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Share the Burden",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "VgADdqYn9nS9G1Us",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,26 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 0,
|
||||
"level": 6,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784515,
|
||||
"modifiedTime": 1753922784515,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754106101756,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "8nRle10pw1HO8QVu",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!8nRle10pw1HO8QVu"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Soothing Speech",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "thP6nUk0nkrNcpXY",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,161 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 4,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"r9mQqwdwL6J15IEf": {
|
||||
"type": "healing",
|
||||
"_id": "r9mQqwdwL6J15IEf",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "hitPoints",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": null,
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"name": "Heal Another",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
},
|
||||
"s4KRqnNHNrSsOoNi": {
|
||||
"type": "healing",
|
||||
"_id": "s4KRqnNHNrSsOoNi",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "2"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "hitPoints",
|
||||
"base": false,
|
||||
"resultBased": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": null,
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"name": "Heal Self",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784519,
|
||||
"modifiedTime": 1753922784519,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754103354386,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "QED2PDYePOSTbLtC",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!QED2PDYePOSTbLtC"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Tell No Lies",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "pu3xD4rEkdfdAvGc",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,144 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 2,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"Et9JXoAULa2EAZfa": {
|
||||
"type": "attack",
|
||||
"_id": "Et9JXoAULa2EAZfa",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"resultBased": false,
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"type": [],
|
||||
"base": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Cast",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "close"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784529,
|
||||
"modifiedTime": 1753922784529,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754098485841,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "HTv9QEPS466WsstP",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Can't Lie",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"_id": "5L6fC80VfbPfGmcA",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Can’t lie to you while they remain within </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Close</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\"> range, but they are not compelled to speak. If you ask them a question and they refuse to answer, they must mark a </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Stress</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\"> and the effect ends. The target is typically unaware this spell has been cast on them until it causes them to utter the truth.</span></p>",
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
"transfer": true,
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754098358492,
|
||||
"modifiedTime": 1754098549846,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!HTv9QEPS466WsstP.5L6fC80VfbPfGmcA"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!HTv9QEPS466WsstP"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Thought Delver",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "6gA7SmNIblkMaYgr",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,153 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 2,
|
||||
"level": 5,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"7ilDNYo2nfRZF1cj": {
|
||||
"type": "effect",
|
||||
"_id": "7ilDNYo2nfRZF1cj",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [
|
||||
{
|
||||
"keyIsID": false,
|
||||
"key": "hope",
|
||||
"value": 1,
|
||||
"scalable": false,
|
||||
"step": null
|
||||
}
|
||||
],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "obbNjDhwN60YhH1s",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "Read Surface Thoughts",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "far"
|
||||
},
|
||||
"nuYCkANsYDtZJO6f": {
|
||||
"type": "attack",
|
||||
"_id": "nuYCkANsYDtZJO6f",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Delve Deeper",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "far"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784532,
|
||||
"modifiedTime": 1753922784532,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754104410910,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "B4choj481tqajWb9",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Read thoughts",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.B4choj481tqajWb9",
|
||||
"transfer": false,
|
||||
"_id": "obbNjDhwN60YhH1s",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Read the vague surface thoughts of a target within </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">Far</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\"> range. Make a</span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\"> </span><span class=\"tooltip-convert\" style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\"><strong style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0)\">Spellcast Roll</strong></span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\"> </span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">against the target to delve for deeper, more hidden thoughts.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754104058616,
|
||||
"modifiedTime": 1754104183020,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!B4choj481tqajWb9.obbNjDhwN60YhH1s"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!B4choj481tqajWb9"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Through Your Eyes",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "thP6nUk0nkrNcpXY",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,99 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 4,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"8ACwa5tqAGyNZ0sR": {
|
||||
"type": "effect",
|
||||
"_id": "8ACwa5tqAGyNZ0sR",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "TCOHV7tWpunCZDxn",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"name": "See Through Eyes",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "veryFar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784533,
|
||||
"modifiedTime": 1753922784533,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754103458370,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "7b0mzV5QMPjVPT4o",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Seeing, Hearing",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.7b0mzV5QMPjVPT4o",
|
||||
"transfer": false,
|
||||
"_id": "TCOHV7tWpunCZDxn",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Can see through their eyes and hear through their ears.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754103458332,
|
||||
"modifiedTime": 1754103537159,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!7b0mzV5QMPjVPT4o.TCOHV7tWpunCZDxn"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!7b0mzV5QMPjVPT4o"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Troublemaker",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "pu3xD4rEkdfdAvGc",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,99 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 2,
|
||||
"level": 2,
|
||||
"type": "ability"
|
||||
"type": "ability",
|
||||
"actions": {
|
||||
"8fv9Rk2Nq6kalkEQ": {
|
||||
"type": "attack",
|
||||
"_id": "8fv9Rk2Nq6kalkEQ",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "1",
|
||||
"recovery": "shortRest"
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"resultBased": false,
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "@profd4kh"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"base": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
},
|
||||
"type": []
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [],
|
||||
"roll": {
|
||||
"type": "trait",
|
||||
"trait": "presence",
|
||||
"difficulty": null,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Provoke",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "far"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784535,
|
||||
"modifiedTime": 1753922784535,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754099293023,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "JrdZedm1BFKeV7Yb",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!JrdZedm1BFKeV7Yb"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Words of Discord",
|
||||
"img": "icons/svg/item-bag.svg",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"type": "domainCard",
|
||||
"folder": "6gA7SmNIblkMaYgr",
|
||||
"system": {
|
||||
|
|
@ -8,22 +8,149 @@
|
|||
"domain": "grace",
|
||||
"recallCost": 1,
|
||||
"level": 5,
|
||||
"type": "spell"
|
||||
"type": "spell",
|
||||
"actions": {
|
||||
"8BKvS2s0IPMA8wF9": {
|
||||
"type": "attack",
|
||||
"_id": "8BKvS2s0IPMA8wF9",
|
||||
"systemPath": "actions",
|
||||
"description": "",
|
||||
"chatDisplay": true,
|
||||
"actionType": "action",
|
||||
"cost": [],
|
||||
"uses": {
|
||||
"value": null,
|
||||
"max": "",
|
||||
"recovery": null
|
||||
},
|
||||
"damage": {
|
||||
"parts": [
|
||||
{
|
||||
"resultBased": false,
|
||||
"value": {
|
||||
"custom": {
|
||||
"enabled": true,
|
||||
"formula": "1"
|
||||
},
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null
|
||||
},
|
||||
"applyTo": "stress",
|
||||
"type": [],
|
||||
"base": false,
|
||||
"valueAlt": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"bonus": null,
|
||||
"custom": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"includeBase": false
|
||||
},
|
||||
"target": {
|
||||
"type": "any",
|
||||
"amount": null
|
||||
},
|
||||
"effects": [
|
||||
{
|
||||
"_id": "DGp7TSriFWotAvP6",
|
||||
"onSave": false
|
||||
}
|
||||
],
|
||||
"roll": {
|
||||
"type": "spellcast",
|
||||
"trait": null,
|
||||
"difficulty": 13,
|
||||
"bonus": null,
|
||||
"advState": "neutral",
|
||||
"diceRolling": {
|
||||
"multiplier": "prof",
|
||||
"flatMultiplier": 1,
|
||||
"dice": "d6",
|
||||
"compare": null,
|
||||
"treshold": null
|
||||
},
|
||||
"useDefault": false
|
||||
},
|
||||
"save": {
|
||||
"trait": null,
|
||||
"difficulty": null,
|
||||
"damageMod": "none"
|
||||
},
|
||||
"name": "Whisper Words of Discord",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"range": "melee"
|
||||
}
|
||||
}
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.344",
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753922784548,
|
||||
"modifiedTime": 1753922784548,
|
||||
"lastModifiedBy": "WafZqd6qLGpBRGTt"
|
||||
"modifiedTime": 1754104567918,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_id": "ZjAdi1FSNCDDHI3X",
|
||||
"sort": 3400000,
|
||||
"effects": [],
|
||||
"effects": [
|
||||
{
|
||||
"name": "Words of Discord",
|
||||
"img": "systems/daggerheart/assets/icons/domains/grace.svg",
|
||||
"origin": "Compendium.daggerheart.domains.Item.ZjAdi1FSNCDDHI3X",
|
||||
"transfer": false,
|
||||
"_id": "DGp7TSriFWotAvP6",
|
||||
"type": "base",
|
||||
"system": {
|
||||
"rangeDependence": {
|
||||
"enabled": false,
|
||||
"type": "withinRange",
|
||||
"target": "hostile",
|
||||
"range": "melee"
|
||||
}
|
||||
},
|
||||
"changes": [],
|
||||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"description": "<p><span class=\"Body-Foundation\" style=\"box-sizing:border-box;margin:0px;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif;color:rgb(239, 230, 216);font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">The target must make an attack against another adversary instead of against you or your allies. Once this attack is over, the target realizes what happened. The next time you cast Words of Discord on them, gain a −5 penalty to the Spellcast Roll.</span></p>",
|
||||
"tint": "#ffffff",
|
||||
"statuses": [],
|
||||
"sort": 0,
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754104486214,
|
||||
"modifiedTime": 1754104558692,
|
||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
||||
},
|
||||
"_key": "!items.effects!ZjAdi1FSNCDDHI3X.DGp7TSriFWotAvP6"
|
||||
}
|
||||
],
|
||||
"ownership": {
|
||||
"default": 0
|
||||
},
|
||||
"_key": "!items!ZjAdi1FSNCDDHI3X"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,13 @@
|
|||
@import '../../utils/colors.less';
|
||||
|
||||
.application.daggerheart.dh-style {
|
||||
&.max-800 {
|
||||
max-height: 800px;
|
||||
.tab.active {
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.actions-list,
|
||||
.action-buttons-list {
|
||||
display: flex;
|
||||
|
|
|
|||
79
styles/less/global/chat.less
Normal file
79
styles/less/global/chat.less
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
@import '../utils/colors.less';
|
||||
@import '../utils/fonts.less';
|
||||
@import '../utils/mixin.less';
|
||||
|
||||
.theme-light {
|
||||
.daggerheart.chat-sidebar .chat-log,
|
||||
#chat-notifications .chat-log {
|
||||
.chat-message {
|
||||
background-image: url('../assets/parchments/dh-parchment-light.png');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#chat-message {
|
||||
font-family: @font-body;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.daggerheart.chat-sidebar,
|
||||
#chat-notifications {
|
||||
.chat-log {
|
||||
.chat-message {
|
||||
border: none !important;
|
||||
padding: 0;
|
||||
background-image: url('../assets/parchments/dh-parchment-dark.png');
|
||||
|
||||
.message-header {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
padding: 8px;
|
||||
|
||||
.message-header-metadata {
|
||||
flex: none;
|
||||
display: flex;
|
||||
|
||||
.message-metadata {
|
||||
font-family: @font-body;
|
||||
color: light-dark(@dark, @beige);
|
||||
}
|
||||
}
|
||||
|
||||
.message-header-main {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
|
||||
.actor-img {
|
||||
border-radius: 50%;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.message-sub-header-container {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
color: light-dark(@dark, @beige);
|
||||
|
||||
h4 {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 0;
|
||||
font-family: @font-subtitle;
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.message-content {
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
styles/less/global/dice.less
Normal file
80
styles/less/global/dice.less
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
.dice {
|
||||
position: relative;
|
||||
height: 2rem;
|
||||
aspect-ratio: 1;
|
||||
font-size: 1rem;
|
||||
paint-order: stroke fill;
|
||||
-webkit-text-stroke: 2px black;
|
||||
z-index: 1;
|
||||
|
||||
&.xxs {
|
||||
height: 1rem;
|
||||
font-size: .5rem;
|
||||
-webkit-text-stroke: 1px black;
|
||||
}
|
||||
|
||||
&.xs {
|
||||
height: 1.5rem;
|
||||
font-size: .75rem;
|
||||
}
|
||||
|
||||
&.lg {
|
||||
height: 2.5rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
&.xl {
|
||||
height: 3rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
&.discarded {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
mask: var(--svg-die) no-repeat center;
|
||||
mask-size: contain;
|
||||
background: linear-gradient(139.01deg, #EFE6D8 3.51%, #372E1F 96.49%);
|
||||
}
|
||||
|
||||
&.d4:before {
|
||||
--svg-die: url(../assets/icons/dice/default/d4.svg);
|
||||
}
|
||||
&.d6:before {
|
||||
--svg-die: url(../assets/icons/dice/default/d6.svg);
|
||||
}
|
||||
&.d8:before {
|
||||
--svg-die: url(../assets/icons/dice/default/d8.svg);
|
||||
}
|
||||
&.d10:before {
|
||||
--svg-die: url(../assets/icons/dice/default/d10.svg);
|
||||
}
|
||||
&.d12:before {
|
||||
--svg-die: url('../assets/icons/dice/default/d12.svg');
|
||||
}
|
||||
&.d20:before {
|
||||
--svg-die: url(../assets/icons/dice/default/d20.svg);
|
||||
}
|
||||
|
||||
&.color-hope:before {
|
||||
background: linear-gradient(139.01deg, #F3C267 3.51%, #4C3407 96.49%);
|
||||
}
|
||||
|
||||
&.color-fear:before {
|
||||
background: linear-gradient(151.21deg, #352AB2 7.21%, #18162E 92.79%);
|
||||
}
|
||||
|
||||
&.color-adv:before {
|
||||
background: linear-gradient(139.01deg, #40A640 3.51%, #011B01 96.49%);
|
||||
}
|
||||
|
||||
&.color-dis:before {
|
||||
background: linear-gradient(139.01deg, #E54E4E 3.51%, #3C0000 82.19%);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
@import '../utils/colors.less';
|
||||
@import '../utils/fonts.less';
|
||||
|
||||
.application.dh-style {
|
||||
.dh-style {
|
||||
border: 1px solid light-dark(@dark-blue, @golden);
|
||||
|
||||
input[type='text'],
|
||||
|
|
@ -179,6 +179,40 @@
|
|||
}
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: @font-body;
|
||||
border-radius: 3px;
|
||||
|
||||
thead {
|
||||
background-color: light-dark(@dark-blue, @golden);
|
||||
color: light-dark(@beige, @dark-blue);
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: light-dark(@dark-blue-40, @golden-40);
|
||||
border-color: light-dark(@golden, @dark-blue);
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||
border-color: light-dark(@golden, @dark-blue);
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
code {
|
||||
border-radius: 6px;
|
||||
background-color: @dark;
|
||||
color: @beige;
|
||||
border-color: @dark-blue;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-radius: 3px;
|
||||
border-left: 3px solid light-dark(@dark-blue-40, @golden-40);
|
||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@import './sheet.less';
|
||||
@import './dialog.less';
|
||||
@import './chat.less';
|
||||
@import './elements.less';
|
||||
@import './tab-navigation.less';
|
||||
@import './tab-form-footer.less';
|
||||
|
|
@ -15,3 +16,4 @@
|
|||
@import './prose-mirror.less';
|
||||
@import './filter-menu.less';
|
||||
@import './tab-attachments.less';
|
||||
@import './dice.less';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
@import '../utils/colors.less';
|
||||
@import '../utils/fonts.less';
|
||||
@import '../utils/mixin.less';
|
||||
|
||||
.theme-light .application.daggerheart.dh-style {
|
||||
.inventory-item,
|
||||
|
|
@ -50,6 +51,10 @@
|
|||
.roll-img {
|
||||
position: absolute;
|
||||
transition: opacity 300ms ease-in;
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
object-fit: cover;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.roll-img {
|
||||
|
|
@ -107,7 +112,7 @@
|
|||
gap: 8px;
|
||||
|
||||
.unequipped {
|
||||
opacity: .5;
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -125,6 +130,38 @@
|
|||
}
|
||||
.invetory-description {
|
||||
overflow: hidden;
|
||||
|
||||
h1 {
|
||||
font-size: 32px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 28px;
|
||||
font-weight: 600;
|
||||
}
|
||||
h3 {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
}
|
||||
h4 {
|
||||
font-size: 16px;
|
||||
color: @beige;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin: 1rem 0;
|
||||
padding: 0 0 0 1.25rem;
|
||||
|
||||
li {
|
||||
font-family: @font-body;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-resources {
|
||||
|
|
|
|||
|
|
@ -28,25 +28,6 @@
|
|||
font-weight: 600;
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: @font-body;
|
||||
border-radius: 3px;
|
||||
|
||||
thead {
|
||||
background-color: light-dark(@dark-blue, @golden);
|
||||
color: light-dark(@beige, @dark-blue);
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: light-dark(@dark-blue-40, @golden-40);
|
||||
border-color: light-dark(@golden, @dark-blue);
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||
border-color: light-dark(@golden, @dark-blue);
|
||||
}
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin: 1rem 0;
|
||||
|
|
@ -61,21 +42,6 @@
|
|||
ul {
|
||||
list-style: disc;
|
||||
}
|
||||
|
||||
pre {
|
||||
code {
|
||||
border-radius: 6px;
|
||||
background-color: @dark;
|
||||
color: @beige;
|
||||
border-color: @dark-blue;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-radius: 3px;
|
||||
border-left: 3px solid light-dark(@dark-blue-40, @golden-40);
|
||||
background-color: light-dark(@dark-blue-10, @golden-10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -262,6 +262,7 @@
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.inventory-item {
|
||||
padding: 0 10px;
|
||||
|
|
@ -347,7 +348,10 @@
|
|||
width: 100%;
|
||||
|
||||
button {
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
font-family: @font-body;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
.name-row {
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
align-items: center;
|
||||
align-items: end;
|
||||
justify-content: space-between;
|
||||
padding: 0;
|
||||
padding-top: 5px;
|
||||
|
|
|
|||
|
|
@ -434,6 +434,7 @@
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.inventory-item {
|
||||
padding: 0 10px;
|
||||
|
|
|
|||
118
styles/less/ui/chat/ability-use.less
Normal file
118
styles/less/ui/chat/ability-use.less
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
@import '../../utils/spacing.less';
|
||||
|
||||
.daggerheart.chat {
|
||||
&.domain-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.card-img {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
mask-image: linear-gradient(0deg, transparent 0%, black 10%, black 90%, transparent 100%);
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
details[open] {
|
||||
.fa-chevron-down {
|
||||
transform: rotate(180deg);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
.domain-card-move {
|
||||
width: 100%;
|
||||
|
||||
.fa-chevron-down {
|
||||
transition: all 0.3s ease;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.domain-card-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin: 8px;
|
||||
padding-bottom: 5px;
|
||||
width: -webkit-fill-available;
|
||||
gap: 5px;
|
||||
border-bottom: 1px solid @golden;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(@dark-blue-10, @golden-10);
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.domain-label {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
padding-bottom: 5px;
|
||||
width: -webkit-fill-available;
|
||||
gap: 5px;
|
||||
|
||||
.title {
|
||||
font-size: 20px;
|
||||
color: @golden;
|
||||
font-family: @font-subtitle;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tags {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.tag {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 3px 5px;
|
||||
font-size: 12px;
|
||||
font-family: @font-body;
|
||||
|
||||
background: light-dark(@dark-15, @beige-15);
|
||||
border: 1px solid light-dark(@dark, @beige);
|
||||
color: light-dark(@dark, @beige);
|
||||
border-radius: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
color: @beige;
|
||||
padding: 8px;
|
||||
font-family: @font-body;
|
||||
}
|
||||
|
||||
.ability-card-footer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 5px;
|
||||
width: 100%;
|
||||
padding: 0 8px;
|
||||
|
||||
button {
|
||||
font-family: @font-body;
|
||||
font-weight: 600;
|
||||
height: 40px;
|
||||
flex: 1 1 calc(50% - 5px);
|
||||
|
||||
&:nth-last-child(1):nth-child(odd) {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.ability-card-action-cost {
|
||||
margin: auto;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
101
styles/less/ui/chat/action.less
Normal file
101
styles/less/ui/chat/action.less
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
@import '../../utils/spacing.less';
|
||||
|
||||
.daggerheart.chat {
|
||||
&.action {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
details[open] {
|
||||
.fa-chevron-down {
|
||||
transform: rotate(180deg);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
.action-move {
|
||||
width: 100%;
|
||||
|
||||
.fa-chevron-down {
|
||||
transition: all 0.3s ease;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.action-section {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin: 8px 8px 0;
|
||||
padding-bottom: 5px;
|
||||
width: -webkit-fill-available;
|
||||
gap: 5px;
|
||||
border-bottom: 1px solid @golden;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(@dark-blue-10, @golden-10);
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.action-img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 3px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.action-header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
|
||||
.title {
|
||||
font-size: 20px;
|
||||
color: @golden;
|
||||
font-family: @font-subtitle;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 12px;
|
||||
color: @beige;
|
||||
font-family: @font-body;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
color: @beige;
|
||||
padding: 8px;
|
||||
font-family: @font-body;
|
||||
}
|
||||
|
||||
.ability-card-footer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 5px;
|
||||
width: 100%;
|
||||
padding: 0 8px;
|
||||
|
||||
button {
|
||||
font-family: @font-body;
|
||||
font-weight: 600;
|
||||
height: 40px;
|
||||
flex: 1 1 calc(50% - 5px);
|
||||
|
||||
&:nth-last-child(1):nth-child(odd) {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.ability-card-action-cost {
|
||||
margin: auto;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,31 +1,8 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
@import '../../utils/spacing.less';
|
||||
|
||||
.daggerheart.chat {
|
||||
&.downtime {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.downtime-title-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.downtime-subtitle {
|
||||
font-size: 17px;
|
||||
}
|
||||
}
|
||||
|
||||
.downtime-image {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.action-use-button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&.resource-roll {
|
||||
.reroll-message {
|
||||
text-align: center;
|
||||
|
|
@ -34,7 +11,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
&.roll {
|
||||
/* &.roll {
|
||||
.dice-flavor {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
|
|
@ -342,6 +319,9 @@
|
|||
|
||||
button {
|
||||
flex: 1;
|
||||
height: 40px;
|
||||
font-family: @font-body;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -356,59 +336,7 @@
|
|||
&:not(.expanded) .dice-tooltip {
|
||||
grid-template-rows: 0fr;
|
||||
}
|
||||
}
|
||||
|
||||
&.domain-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.domain-card-title {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
div {
|
||||
font-size: 20px;
|
||||
font-variant: small-caps;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h2 {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.ability-card-footer {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
margin-top: @fullMargin;
|
||||
flex-wrap: wrap;
|
||||
|
||||
button {
|
||||
border-radius: 6px;
|
||||
background: @positive;
|
||||
border-color: black;
|
||||
flex-basis: calc(50% - 2px);
|
||||
|
||||
&:nth-of-type(n + 3) {
|
||||
margin-top: @tinyMargin;
|
||||
}
|
||||
}
|
||||
|
||||
.ability-card-action-cost {
|
||||
margin: auto;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: 80px;
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
button {
|
||||
&.inner-button {
|
||||
|
|
@ -435,3 +363,362 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.daggerheart,
|
||||
#chat-notifications {
|
||||
.chat-message {
|
||||
--text-color: light-dark(@dark-blue, @golden);
|
||||
--bg-color: light-dark(@dark-blue-40, @golden-40);
|
||||
|
||||
&.duality {
|
||||
&.hope {
|
||||
--text-color: @golden;
|
||||
--bg-color: @golden-40;
|
||||
.message-header,
|
||||
.message-content {
|
||||
background-color: @golden-bg;
|
||||
}
|
||||
}
|
||||
|
||||
&.fear {
|
||||
--text-color: @chat-blue;
|
||||
--bg-color: @chat-blue-40;
|
||||
.message-header,
|
||||
.message-content {
|
||||
background-color: @chat-blue-bg;
|
||||
}
|
||||
}
|
||||
|
||||
&.critical {
|
||||
--text-color: @chat-purple;
|
||||
--bg-color: @chat-purple-40;
|
||||
.message-header,
|
||||
.message-content {
|
||||
background-color: @chat-purple-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chat-roll {
|
||||
font-size: var(--font-size-12);
|
||||
padding: 0 20px;
|
||||
|
||||
> .roll-part-header {
|
||||
font-size: var(--font-size-14);
|
||||
}
|
||||
|
||||
.roll-part-header {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto 1fr;
|
||||
align-items: center;
|
||||
color: light-dark(@dark, @beige);
|
||||
margin: 5px 0;
|
||||
|
||||
span {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
text-transform: capitalize;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: ' ';
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
&:before {
|
||||
background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, var(--text-color) 100%);
|
||||
}
|
||||
|
||||
&:after {
|
||||
background: linear-gradient(90deg, var(--text-color) 0%, rgba(0, 0, 0, 0) 100%);
|
||||
}
|
||||
}
|
||||
|
||||
.roll-part-extra {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.roll-part-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
padding: 5px 0;
|
||||
|
||||
.dice-tooltip {
|
||||
width: 100%;
|
||||
|
||||
.wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
|
||||
> :first-child:not(.target-selector) {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
> :last-child {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-result-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
color: var(--text-color);
|
||||
font-weight: 700;
|
||||
font-family: 'Cinzel', sans-serif;
|
||||
|
||||
.roll-result-value {
|
||||
font-size: var(--font-size-24);
|
||||
}
|
||||
|
||||
.roll-result-desc {
|
||||
font-size: var(--font-size-16);
|
||||
margin-top: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.roll-difficulty {
|
||||
margin-top: -5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-dice {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 5px;
|
||||
font-weight: 700;
|
||||
font-family: 'Cinzel', sans-serif;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.roll-die {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 3px;
|
||||
|
||||
label {
|
||||
text-align: center;
|
||||
height: var(--font-size-12);
|
||||
}
|
||||
|
||||
> div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 5px;
|
||||
// font-size: var(--font-size-20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fieldset {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// gap: 10px;
|
||||
border-color: var(--text-color);
|
||||
border-radius: 5px;
|
||||
|
||||
legend {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 0 5px;
|
||||
color: var(--text-color);
|
||||
}
|
||||
}
|
||||
|
||||
.target-selector {
|
||||
+ .roll-part-extra {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.target-choice {
|
||||
display: flex;
|
||||
font-size: var(--font-size-14);
|
||||
color: var(--text-color);
|
||||
padding: 5px 0;
|
||||
|
||||
.button-target-selection {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.button-target-selection:hover,
|
||||
.target-selected {
|
||||
font-weight: bold;
|
||||
text-shadow: 0px 0px 8px var(--text-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.roll-target {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
|
||||
.target-img {
|
||||
border-radius: 50%;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.target-data {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.target-save {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
&:hover > i {
|
||||
scale: 1.2;
|
||||
}
|
||||
|
||||
i {
|
||||
&.fa-check {
|
||||
color: @green;
|
||||
}
|
||||
&.fa-xmark {
|
||||
color: @medium-red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-formula {
|
||||
background-color: var(--bg-color);
|
||||
color: var(--text-color);
|
||||
border-radius: 4px;
|
||||
padding: 3px 5px;
|
||||
width: fit-content;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.roll-difficulty,
|
||||
.target-hit-status {
|
||||
color: @green;
|
||||
background-color: @green-10;
|
||||
border: 1px solid currentColor;
|
||||
border-radius: 4px;
|
||||
padding: 3px 5px;
|
||||
text-transform: uppercase;
|
||||
font-weight: 600;
|
||||
|
||||
&.is-miss {
|
||||
color: @medium-red;
|
||||
background-color: @medium-red-10;
|
||||
}
|
||||
}
|
||||
|
||||
.target-hit-status {
|
||||
width: fit-content;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
div[data-action='expandRoll'] {
|
||||
.roll-part-header > div > span {
|
||||
&:before,
|
||||
&:after {
|
||||
content: '\f078';
|
||||
font-family: var(--font-awesome);
|
||||
color: var(--text-color);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
.on-reduced {
|
||||
display: grid;
|
||||
overflow: hidden;
|
||||
grid-template-rows: 1fr;
|
||||
transition: grid-template-rows 250ms ease;
|
||||
|
||||
.wrapper {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&.expanded {
|
||||
.roll-part-header > div > span {
|
||||
&:before,
|
||||
&:after {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.on-reduced {
|
||||
grid-template-rows: 0fr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-part + .roll-part {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.target-section {
|
||||
.roll-part-content {
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.roll-part-extra {
|
||||
position: relative;
|
||||
|
||||
.target-pending-saves {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 25px;
|
||||
width: 25px;
|
||||
&.is-absolute {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-buttons {
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
margin-top: 8px;
|
||||
button {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.font-20 {
|
||||
font-size: var(--font-size-20);
|
||||
}
|
||||
|
||||
.dice-roll .dice-tooltip fieldset {
|
||||
margin-bottom: 5px;
|
||||
.roll-dice {
|
||||
gap: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
87
styles/less/ui/chat/downtime.less
Normal file
87
styles/less/ui/chat/downtime.less
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
@import '../../utils/spacing.less';
|
||||
|
||||
.daggerheart.chat {
|
||||
&.downtime {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
details[open] {
|
||||
.fa-chevron-down {
|
||||
transform: rotate(180deg);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
.downtime-moves-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
width: 100%;
|
||||
|
||||
.fa-chevron-down {
|
||||
transition: all 0.3s ease;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.downtime-move {
|
||||
width: 100%;
|
||||
|
||||
.downtime-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
border-bottom: 1px solid @golden;
|
||||
margin: 0 8px;
|
||||
padding-bottom: 5px;
|
||||
width: -webkit-fill-available;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(@dark-blue-10, @golden-10);
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.downtime-image {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.header-label {
|
||||
padding: 8px;
|
||||
.title {
|
||||
font-size: 16px;
|
||||
color: @golden;
|
||||
font-family: @font-subtitle;
|
||||
margin: 0;
|
||||
}
|
||||
.label {
|
||||
font-size: 12px;
|
||||
color: @beige;
|
||||
font-family: @font-body;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
padding: 8px;
|
||||
color: beige;
|
||||
font-family: @font-body;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.action-use-button {
|
||||
width: -webkit-fill-available;
|
||||
margin: 0 8px;
|
||||
font-family: @font-body;
|
||||
font-weight: 600;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,12 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/fonts.less';
|
||||
|
||||
.chat-message.dh-chat-message {
|
||||
.message-content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.chat-message {
|
||||
.duality-modifiers,
|
||||
.duality-result,
|
||||
|
|
@ -6,6 +15,66 @@
|
|||
}
|
||||
|
||||
.message-content {
|
||||
padding: 0 8px;
|
||||
font-family: @font-body;
|
||||
color: light-dark(@dark, @beige);
|
||||
|
||||
blockquote {
|
||||
border-left: 5px solid light-dark(@dark-blue-40, @golden-40);
|
||||
}
|
||||
|
||||
a[href] {
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
}
|
||||
|
||||
a[href]:hover,
|
||||
a[href].active {
|
||||
font-weight: bold;
|
||||
text-shadow: 0 0 8px light-dark(@dark-blue, @golden);
|
||||
}
|
||||
|
||||
button {
|
||||
background: light-dark(transparent, @golden);
|
||||
border: 1px solid light-dark(@dark-blue, @dark-blue);
|
||||
color: light-dark(@dark-blue, @dark-blue);
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(@light-black, @dark-blue);
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
}
|
||||
|
||||
&.glow {
|
||||
animation: glow 0.75s infinite alternate;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
background: light-dark(transparent, @golden);
|
||||
color: light-dark(@dark-blue, @dark-blue);
|
||||
opacity: 0.6;
|
||||
cursor: not-allowed;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(transparent, @golden);
|
||||
color: light-dark(@dark-blue, @dark-blue);
|
||||
}
|
||||
}
|
||||
|
||||
&.reverted {
|
||||
background: light-dark(@dark-blue-10, @golden-10);
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
border: 1px solid light-dark(@dark, transparent);
|
||||
&:hover {
|
||||
background: light-dark(transparent, @golden);
|
||||
color: light-dark(@dark-blue, @dark-blue);
|
||||
}
|
||||
img {
|
||||
border-radius: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.enriched-effect {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -24,6 +93,24 @@
|
|||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.dice-roll .dice-formula,
|
||||
.dice-roll .dice-total {
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
background: light-dark(@dark-blue-40, @golden-40);
|
||||
color: light-dark(@dark-blue, @golden);
|
||||
font-weight: 600;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.dice-roll .dice-formula {
|
||||
height: 27px;
|
||||
}
|
||||
|
||||
.dice-roll .dice-total {
|
||||
height: 34px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,195 +0,0 @@
|
|||
@import '../../utils/colors.less';
|
||||
@import '../../utils/spacing.less';
|
||||
|
||||
.theme-colorful {
|
||||
.chat-message.duality {
|
||||
border-color: black;
|
||||
padding: 8px 0 0 0;
|
||||
fieldset.daggerheart.chat {
|
||||
border-top-width: 0;
|
||||
display: contents;
|
||||
legend {
|
||||
&:before,
|
||||
&:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.message-header {
|
||||
color: var(--color-light-3);
|
||||
padding: 0 8px;
|
||||
}
|
||||
&.hope {
|
||||
background: linear-gradient(0, rgba(165, 42, 42, 0.6) 40px, rgba(0, 0, 0, 0.6));
|
||||
}
|
||||
&.fear {
|
||||
background: linear-gradient(0, @fearBackgroundEnd, @fearBackgroundStart);
|
||||
}
|
||||
&.critical {
|
||||
background: linear-gradient(0, @criticalBackgroundEnd, @criticalBackgroundStart);
|
||||
}
|
||||
.chat-message header {
|
||||
color: var(--color-light-3);
|
||||
}
|
||||
> * {
|
||||
padding: 0 8px;
|
||||
}
|
||||
.message-content {
|
||||
.duality-modifiers,
|
||||
.duality-result,
|
||||
.dice-title {
|
||||
display: flex;
|
||||
}
|
||||
.duality-modifiers {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
margin-bottom: 4px;
|
||||
flex-wrap: wrap;
|
||||
.duality-modifier {
|
||||
padding: 2px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid;
|
||||
background: var(--color-dark-6);
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
.dice-flavor {
|
||||
color: var(--color-light-1);
|
||||
text-shadow: 0 0 1px black;
|
||||
border-bottom: 1px solid;
|
||||
display: flex;
|
||||
align-items: end;
|
||||
justify-content: space-between;
|
||||
padding: 0 8px;
|
||||
margin: 0 -8px 2px;
|
||||
font-weight: unset;
|
||||
}
|
||||
.dice-result {
|
||||
.duality-modifiers {
|
||||
display: flex; // Default => display: none;
|
||||
gap: 2px;
|
||||
margin-bottom: 4px;
|
||||
.duality-modifier {
|
||||
padding: 2px;
|
||||
border-radius: 6px;
|
||||
border: 1px solid;
|
||||
background: var(--color-dark-6);
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.dice-formula,
|
||||
> .dice-total,
|
||||
.part-header {
|
||||
display: none;
|
||||
}
|
||||
.dice-tooltip {
|
||||
grid-template-rows: 1fr;
|
||||
.wrapper {
|
||||
.tooltip-part {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
gap: 0.25rem;
|
||||
.dice {
|
||||
.dice-rolls {
|
||||
margin-bottom: 0;
|
||||
&.duality {
|
||||
li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
background: unset;
|
||||
line-height: unset;
|
||||
font-weight: unset;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.duality-modifier {
|
||||
display: flex;
|
||||
margin-bottom: 6px;
|
||||
color: var(--color-light-1);
|
||||
text-shadow: 0 0 1px black;
|
||||
font-size: var(--font-size-16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.target-selection {
|
||||
label {
|
||||
color: var(--color-light-1);
|
||||
}
|
||||
}
|
||||
.target-section {
|
||||
margin: 4px 0;
|
||||
border: 2px solid;
|
||||
margin-top: 5px;
|
||||
.dice-total {
|
||||
box-shadow: unset;
|
||||
border: unset;
|
||||
border-radius: unset;
|
||||
font-size: var(--font-size-18);
|
||||
}
|
||||
}
|
||||
.dice-actions {
|
||||
justify-content: space-between;
|
||||
&.duality-alone {
|
||||
justify-content: end;
|
||||
margin-top: -20px;
|
||||
}
|
||||
> * {
|
||||
display: flex;
|
||||
color: var(--color-light-1);
|
||||
text-shadow: 0 0 1px black;
|
||||
font-weight: bold;
|
||||
background: var(--color-dark-1);
|
||||
padding: 4px;
|
||||
border-color: black;
|
||||
min-height: unset;
|
||||
height: 26px;
|
||||
flex: unset;
|
||||
margin: 0;
|
||||
}
|
||||
.duality-action {
|
||||
border-radius: 0 6px 0 0;
|
||||
margin-left: -8px;
|
||||
&.duality-action-effect {
|
||||
border-top-left-radius: 6px;
|
||||
margin-left: initial;
|
||||
}
|
||||
}
|
||||
.duality-result {
|
||||
border-radius: 6px 0 0 0;
|
||||
margin-right: -8px;
|
||||
}
|
||||
}
|
||||
.duality-result {
|
||||
display: flex;
|
||||
color: var(--color-light-1);
|
||||
text-shadow: 0 0 1px black;
|
||||
font-weight: bold;
|
||||
background: var(--color-dark-1);
|
||||
padding: 4px;
|
||||
border-color: black;
|
||||
min-height: unset;
|
||||
height: 26px;
|
||||
flex: unset;
|
||||
margin: 0;
|
||||
margin-left: auto;
|
||||
align-self: center;
|
||||
border-radius: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
button {
|
||||
&.inner-button {
|
||||
color: var(--color-light-1);
|
||||
text-shadow: 0 0 1px black;
|
||||
font-weight: bold;
|
||||
background: var(--color-dark-1);
|
||||
border-color: black;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
@import './chat/ability-use.less';
|
||||
@import './chat/action.less';
|
||||
@import './chat/chat.less';
|
||||
@import './chat/downtime.less';
|
||||
@import './chat/sheet.less';
|
||||
@import './chat/theme-colorful.less';
|
||||
|
||||
@import './combat-sidebar/combat-sidebar.less';
|
||||
@import './combat-sidebar/combatant-controls.less';
|
||||
|
|
|
|||
|
|
@ -4,6 +4,21 @@
|
|||
@golden: #f3c267;
|
||||
@golden-10: #f3c26710;
|
||||
@golden-40: #f3c26740;
|
||||
@golden-bg: #f3c2671a;
|
||||
|
||||
@chat-blue: #8f87ee;
|
||||
@chat-blue-10: #8f87ee10;
|
||||
@chat-blue-40: #8f87ee40;
|
||||
@chat-blue-bg: #14142599;
|
||||
|
||||
@chat-purple: #a778b1;
|
||||
@chat-purple-10: #a778b110;
|
||||
@chat-purple-40: #a778b140;
|
||||
@chat-purple-bg: #2a152e99;
|
||||
|
||||
@medium-red: #d04747;
|
||||
@medium-red-10: #d0474710;
|
||||
@medium-red-40: #d0474740;
|
||||
|
||||
@dark-golden: #2b1d03;
|
||||
@dark-golden-80: #2b1d0380;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<input name="uses.enabled" type="checkbox"{{#if uses.enabled}} checked{{/if}}>
|
||||
<label for="uses.enabled">Uses</label>
|
||||
</div>
|
||||
</div>{{log @root}}
|
||||
</div>
|
||||
<label class="modifier-label">{{uses.value}}/{{formulaValue uses.max @root.rollConfig.data}}</label>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,19 @@
|
|||
<div class="daggerheart chat domain-card">
|
||||
<div class="domain-card-title">
|
||||
<h2>{{name}}</h2>
|
||||
</div>
|
||||
<img src="{{img}}" />
|
||||
<div>{{{description}}}</div>
|
||||
<img class="card-img" src="{{item.img}}" />
|
||||
<details class="domain-card-move">
|
||||
<summary class="domain-card-header">
|
||||
<div class="domain-label">
|
||||
<h2 class="title">{{item.name}}</h2>
|
||||
<ul class="tags">
|
||||
{{#each item.tags as |tag|}}
|
||||
<li class="tag">{{tag}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-down"></i>
|
||||
</summary>
|
||||
<div class="description">{{{description}}}</div>
|
||||
</details>
|
||||
<footer class="ability-card-footer">
|
||||
{{#each actions as |action index|}}
|
||||
<button class="ability-use-button" data-index="{{index}}">
|
||||
|
|
|
|||
13
templates/ui/chat/action.hbs
Normal file
13
templates/ui/chat/action.hbs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<div class="daggerheart chat action">
|
||||
<details class="action-move">
|
||||
<summary class="action-section">
|
||||
<img class="action-img" src="{{action.img}}" />
|
||||
<div class="action-header">
|
||||
<h2 class="title">{{action.name}}</h2>
|
||||
<span class="label">{{itemOrigin.name}}</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-down"></i>
|
||||
</summary>
|
||||
<div class="description">{{{description}}}</div>
|
||||
</details>
|
||||
</div>
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
||||
<div class="dice-flavor">{{localize "DAGGERHEART.UI.Chat.attackRoll.title" attack=this.title}}</div>
|
||||
<div class="dice-result">
|
||||
<div class="dice-formula">{{roll.formula}}</div>
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<section class="tooltip-part">
|
||||
<div class="dice">
|
||||
{{#each dice}}
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">{{number}}{{denomination}}</span>
|
||||
<span class="part-total">{{total}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls">
|
||||
{{#each results}}
|
||||
<li class="roll die {{../denomination}}{{#if discarded}} discarded{{/if}} min">{{result}}</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
<div class="attack-roll-advantage-container">{{#if ../advantageState}}{{localize "DAGGERHEART.GENERAL.Advantage.full"}}{{/if}}{{#if (eq ../advantageState false)}}{{localize "DAGGERHEART.GENERAL.Disadvantage.full"}}{{/if}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dice-total">
|
||||
<div class="dice-total-value">{{roll.total}}</div>
|
||||
</div>
|
||||
{{#if (gt targets.length 0)}}
|
||||
<div class="target-section">
|
||||
{{#each targets as |target|}}
|
||||
<div class="dice-total target-container {{#if target.hit}}hit{{else}}miss{{/if}}" data-token="{{target.id}}">
|
||||
<img src="{{target.img}}" />
|
||||
<div class="target-inner-container">
|
||||
{{#if target.hit}}{{localize "Hit"}}{{else}}{{localize "Miss"}}{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="flexrow">
|
||||
<button class="duality-action" data-value="{{roll.total}}"><span>{{localize "DAGGERHEART.GENERAL.rollDamage"}}</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
||||
<div class="dice-flavor">{{title}}</div>
|
||||
<div class="dice-result">
|
||||
<div class="dice-formula">{{roll.formula}}</div>
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<section class="tooltip-part">
|
||||
<div class="dice">
|
||||
{{#each roll.dice as | dice index |}}
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">{{formula}}</span>
|
||||
<span class="part-total">{{total}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls rerollable">
|
||||
{{#if dice.rerolled.any}}
|
||||
<i class="fa-solid fa-dice dice-rerolled" title="{{localize "DAGGERHEART.UI.Tooltip.diceIsRerolled" times=dice.rerolled.rerolls.length}}"></i>
|
||||
{{/if}}
|
||||
<button type="checkbox" class="reroll-button" data-die-index="0" data-tooltip="{{localize "DAGGERHEART.GENERAL.reroll"}}">
|
||||
{{#each results as |result index|}}
|
||||
<li class="roll die {{../dice}}{{#if discarded}} discarded{{/if}} min">{{result.result}}</li>
|
||||
{{/each}}
|
||||
</button>
|
||||
</ol>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dice-total">
|
||||
<div class="dice-total-value">{{roll.total}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="dice-roll daggerheart chat roll expanded{{#unless damage.roll}} hidden{{/unless}}" data-action="expandRoll">
|
||||
<legend class="dice-flavor">{{localize "DAGGERHEART.GENERAL.damage"}}</legend>
|
||||
<div class="dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs' damage=damage noTitle=true}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs'}}
|
||||
{{#if hasDamage}}
|
||||
<div class="dice-roll daggerheart chat roll">
|
||||
<div class="dice-result">
|
||||
{{#if damage.roll}}
|
||||
<div class="dice-actions">
|
||||
<button class="damage-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="flexrow">
|
||||
<button class="duality-action duality-action-damage" data-value="{{roll.total}}"><span>{{localize "DAGGERHEART.UI.Chat.damageRoll.rollDamage"}}</span></button>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
45
templates/ui/chat/chat-message.hbs
Normal file
45
templates/ui/chat/chat-message.hbs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<li class="chat-message message flexcol {{cssClass}}" data-message-id="{{message._id}}"
|
||||
{{#if borderColor}}style="border-color:{{borderColor}}"{{/if}}>
|
||||
<header class="message-header flexrow">
|
||||
<div class="message-header-main">
|
||||
<img class="actor-img" src="{{actor.img}}" />
|
||||
{{#if (eq message.type 'base')}}
|
||||
<div class="message-sub-header-container">
|
||||
<h4>{{actor.name}}</h4>
|
||||
<div>{{author.name}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="message-sub-header-container">
|
||||
<h4>{{ifThen message.title message.title alias}}</h4>
|
||||
<div>{{actor.name}} {{#if author.isGM}}(GM){{/if}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="message-header-metadata">
|
||||
<span class="message-metadata">
|
||||
<time class="message-timestamp">{{timeSince message.timestamp}}</time>
|
||||
{{#if canDelete}}
|
||||
<a aria-label="{{localize 'Delete'}}" class="message-delete" data-action="deleteMessage">
|
||||
<i class="fa-solid fa-trash" inert></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if canClose}}
|
||||
<a aria-label="{{ localize "CHAT.Dismiss" }}" class="message-dismiss" data-action="dismissMessage">
|
||||
<i class="fa-solid fa-xmark" inert></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
</span>
|
||||
|
||||
{{#if isWhisper}}
|
||||
<span class="whisper-to">{{localize 'CHAT.To'}}: {{whisperTo}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if message.flavor}}
|
||||
<span class="flavor-text">{{{message.flavor}}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</header>
|
||||
<div class="message-content">
|
||||
{{{message.content}}}
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{{!-- TO DO DELETE ? --}}
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs' damage=this}}
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs'}}
|
||||
<div class="dice-roll daggerheart chat roll">
|
||||
<div class="dice-result">
|
||||
<div class="dice-actions">
|
||||
<button class="damage-button" data-target-hit="true" {{#if (eq targets.length 0)}}disabled{{/if}}>{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamageToTargets"}}</button>
|
||||
<button class="damage-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,8 +1,17 @@
|
|||
<div class="daggerheart chat downtime">
|
||||
<h2 class="downtime-title-container">
|
||||
<div>{{this.player}} {{localize "DAGGERHEART.UI.Chat.deathMove.title"}}</div>
|
||||
<div class="downtime-subtitle">{{this.title}}</div>
|
||||
</h2>
|
||||
<img class="downtime-image" src="{{this.img}}" />
|
||||
<div>{{{this.description}}}</div>
|
||||
<ul class="downtime-moves-list">
|
||||
<details class="downtime-move">
|
||||
<summary class="downtime-label">
|
||||
<img class="downtime-image" src="{{this.img}}" />
|
||||
<div class="header-label">
|
||||
<h2 class="title">{{this.title}}</h2>
|
||||
<span class="label">{{localize 'DAGGERHEART.UI.Chat.deathMove.title'}}</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-down"></i>
|
||||
</summary>
|
||||
<div class="description">
|
||||
{{{this.description}}}
|
||||
</div>
|
||||
</details>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,13 +1,22 @@
|
|||
<div class="daggerheart chat downtime">
|
||||
<h2 class="downtime-title-container">
|
||||
<div>{{title}}</div>
|
||||
</h2>
|
||||
{{#each moves as | move index |}}
|
||||
<strong>{{move.name}}</strong>
|
||||
<img class="downtime-image" src="{{move.img}}" />
|
||||
<div>{{{move.description}}}</div>
|
||||
{{#each move.actions as | action index |}}
|
||||
<button class="action-use-button" data-move-index="{{@../key}}" data-action-index="{{index}}">{{localize action.name}}</button>
|
||||
<ul class="downtime-moves-list">
|
||||
{{#each moves as | move index |}}
|
||||
<details class="downtime-move">
|
||||
<summary class="downtime-label">
|
||||
<img class="downtime-image" src="{{move.img}}" />
|
||||
<div class="header-label">
|
||||
<h2 class="title">{{move.name}}</h2>
|
||||
<span class="label">{{localize 'DAGGERHEART.GENERAL.Bonuses.rest.downtimeAction'}}</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-down"></i>
|
||||
</summary>
|
||||
<div class="description">
|
||||
{{{move.description}}}
|
||||
</div>
|
||||
</details>
|
||||
{{#each move.actions as | action index |}}
|
||||
<button class="action-use-button" data-move-index="{{@../key}}" data-action-index="{{index}}">{{localize action.name}}</button>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -1,227 +0,0 @@
|
|||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
||||
<div class="dice-flavor" data-action="expandRoll">{{title}}</div>
|
||||
<div class="duality-modifiers" data-action="expandRoll">
|
||||
{{#each roll.modifiers}}
|
||||
<div class="duality-modifier">
|
||||
{{localize label}} {{#if (gte value 0)}}+{{/if}}{{value}}
|
||||
</div>
|
||||
{{/each}}
|
||||
{{#if (eq roll.advantage.type 1)}}
|
||||
<div class="duality-modifier">
|
||||
{{localize "DAGGERHEART.GENERAL.Advantage.full"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (eq roll.advantage.type -1)}}
|
||||
<div class="duality-modifier">
|
||||
{{localize "DAGGERHEART.GENERAL.Disadvantage.full"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if roll.rally.dice}}
|
||||
<div class="duality-modifier">
|
||||
{{localize "DAGGERHEART.CLASS.Feature.rallyDice"}} {{roll.rally.dice}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="dice-result">
|
||||
<div class="dice-formula" data-action="expandRoll">{{roll.formula}}</div>
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<section class="tooltip-part">
|
||||
<div class="dice" data-action="expandRoll">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">
|
||||
<span>1{{roll.hope.dice}}</span>
|
||||
|
|
||||
<span>1{{roll.fear.dice}}</span>
|
||||
</span>
|
||||
<span class="part-total">{{roll.result.total}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls duality">
|
||||
<li class="roll die {{roll.hope.dice}}">
|
||||
<div class="dice-container">
|
||||
<div class="dice-title">{{localize "DAGGERHEART.GENERAL.hope"}}</div>
|
||||
{{#if roll.hope.rerolled.any}}<i class="fa-solid fa-dice dice-rerolled" title="{{localize "DAGGERHEART.UI.Tooltip.diceIsRerolled" times=roll.hope.rerolled.rerolls.length}}"></i>{{/if}}
|
||||
<div class="dice-inner-container hope" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerollThing" thing=(localize "DAGGERHEART.GENERAL.hope")}}">
|
||||
<button type="checkbox" class="reroll-button" data-die-index="0" data-type="hope">
|
||||
<div class="dice-wrapper">
|
||||
<img class="dice" src="../icons/svg/{{roll.hope.dice}}-grey.svg"/>
|
||||
</div>
|
||||
<div class="dice-value">{{roll.hope.value}}</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="roll die {{roll.fear.dice}}">
|
||||
<div class="dice-container">
|
||||
<div class="dice-title">{{localize "DAGGERHEART.GENERAL.fear"}}</div>
|
||||
{{#if roll.fear.rerolled.any}}<i class="fa-solid fa-dice dice-rerolled" title="{{localize "DAGGERHEART.UI.Tooltip.diceIsRerolled" times=roll.fear.rerolled.rerolls.length}}"></i>{{/if}}
|
||||
<div class="dice-inner-container fear" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerollThing" thing=(localize "DAGGERHEART.GENERAL.fear")}}">
|
||||
<button type="checkbox" class="reroll-button" data-die-index="2" data-type="fear">
|
||||
<div class="dice-wrapper">
|
||||
<img class="dice" src="../icons/svg/{{roll.fear.dice}}-grey.svg"/>
|
||||
</div>
|
||||
<div class="dice-value">{{roll.fear.value}}</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
{{#if roll.advantage.type}}
|
||||
<div class="dice" data-action="expandRoll">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">
|
||||
<span>1{{roll.advantage.dice}}</span>
|
||||
</span>
|
||||
<span class="part-total">{{roll.advantage.value}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls">
|
||||
<li class="roll die {{roll.advantage.dice}}">
|
||||
<div class="dice-container">
|
||||
<div class="dice-inner-container {{#if (eq roll.advantage.type 1)}}advantage{{else}}disadvantage{{/if}}">
|
||||
<div class="dice-wrapper">
|
||||
<img class="dice" src="../icons/svg/{{roll.advantage.dice}}-grey.svg"/>
|
||||
</div>
|
||||
<div class="dice-value">{{roll.advantage.value}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if roll.rally.dice}}
|
||||
<div class="dice">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">
|
||||
<span>1{{roll.rally.dice}}</span>
|
||||
</span>
|
||||
<span class="part-total">{{roll.rally.value}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls">
|
||||
<li class="roll die {{roll.rally.dice}}">
|
||||
<div class="dice-container">
|
||||
<div class="dice-inner-container">
|
||||
<div class="dice-wrapper">
|
||||
<img class="dice" src="../icons/svg/{{roll.rally.dice}}-grey.svg"/>
|
||||
</div>
|
||||
<div class="dice-value">{{roll.rally.value}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#each roll.extra as | extra | }}
|
||||
<div class="dice" data-action="expandRoll">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">
|
||||
<span>1{{extra.dice}}</span>
|
||||
</span>
|
||||
<span class="part-total">{{extra.value}}</span>
|
||||
</header>
|
||||
<div class="flexrow">
|
||||
<ol class="dice-rolls">
|
||||
<li class="roll die {{extra.dice}}">
|
||||
<div class="dice-container">
|
||||
<div class="dice-inner-container">
|
||||
<div class="dice-wrapper">
|
||||
<img class="dice" src="../icons/svg/{{extra.dice}}-grey.svg"/>
|
||||
</div>
|
||||
<div class="dice-value">{{extra.value}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{#if roll.modifierTotal}}<div class="duality-modifier">{{#if (gt roll.modifierTotal 0)}}+{{/if}}{{roll.modifierTotal}}</div>{{/if}}
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dice-total duality {{#if (eq roll.result.duality 1)}}hope{{else}}{{#if (eq roll.result.duality -1)}}fear{{else}}critical{{/if}}{{/if}}">
|
||||
<div class="dice-total-label">
|
||||
{{#unless (eq _source.roll.success undefined)}}
|
||||
{{#if _source.roll.success}}
|
||||
{{localize "DAGGERHEART.GENERAL.success"}} {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.result.label}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.GENERAL.failure"}} {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.result.label}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{roll.result.label}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
<div class="dice-total-value">
|
||||
{{roll.total}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="dice-roll daggerheart chat roll expanded{{#unless damage.roll}} hidden{{/unless}}" data-action="expandRoll">
|
||||
<legend class="dice-flavor">
|
||||
{{#if hasHealing}}
|
||||
{{localize "DAGGERHEART.GENERAL.healing"}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.GENERAL.damage"}}
|
||||
{{/if}}
|
||||
</legend>
|
||||
<div class="dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/damage-chat.hbs' damage=damage noTitle=true}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/target-chat.hbs'}}
|
||||
<div class="dice-roll daggerheart chat roll">
|
||||
<div class="dice-result">
|
||||
<div class="dice-actions{{#unless (or hasDamage hasHealing)}} duality-alone{{/unless}}">
|
||||
{{#if (or hasDamage hasHealing)}}
|
||||
{{#if damage.roll}}
|
||||
<button class="duality-action damage-button" data-target-hit="true" data-value="{{roll.total}}"><span>
|
||||
{{#if hasHealing}}
|
||||
{{localize "DAGGERHEART.UI.Chat.healingRoll.applyHealing"}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}
|
||||
{{/if}}
|
||||
</span></button>
|
||||
{{else}}
|
||||
<button class="duality-action duality-action-damage" data-value="{{roll.total}}"><span>
|
||||
{{#if hasHealing}}
|
||||
{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.UI.Chat.attackRoll.rollDamage"}}
|
||||
{{/if}}
|
||||
</span></button>
|
||||
{{/if}}
|
||||
{{!-- {{else}}
|
||||
{{#if hasHealing}}
|
||||
<button class="duality-action duality-action-healing" data-value="{{roll.total}}"><span>{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}</span></button>
|
||||
{{/if}} --}}
|
||||
{{/if}}
|
||||
{{#if hasEffect}}
|
||||
<button class="duality-action-effect" data-value="{{roll.total}}"><span>{{localize "DAGGERHEART.UI.Chat.attackRoll.applyEffect"}}</span></button>
|
||||
{{/if}}
|
||||
<div class="duality-result">
|
||||
<div>{{roll.total}}
|
||||
{{#if (eq roll.result.duality 1)}}
|
||||
{{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.hope")}}
|
||||
{{else}}
|
||||
{{#if (eq roll.result.duality -1)}}
|
||||
{{localize "DAGGERHEART.GENERAL.withThing" thing=(localize "DAGGERHEART.GENERAL.fear")}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.GENERAL.criticalSuccess"}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
14
templates/ui/chat/foundryRoll.hbs
Normal file
14
templates/ui/chat/foundryRoll.hbs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<div class="dice-roll" data-action="expandRoll">
|
||||
{{#if flavor}}
|
||||
<div class="dice-flavor">{{flavor}}</div>
|
||||
{{/if}}
|
||||
<div class="dice-result">
|
||||
<div class="dice-formula">{{formula}}</div>
|
||||
{{{tooltip}}}
|
||||
<h4 class="dice-total">{{total}}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="roll-buttons">
|
||||
<button class="simple-roll-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
||||
<button class="simple-roll-button" data-type="healing">{{localize "DAGGERHEART.UI.Chat.healingRoll.applyHealing"}}</button>
|
||||
</div>
|
||||
19
templates/ui/chat/foundryRollTooltip.hbs
Normal file
19
templates/ui/chat/foundryRollTooltip.hbs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{{#if parts.length}}
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<fieldset>
|
||||
<legend>
|
||||
{{localize "DAGGERHEART.UI.Chat.dicePool.title"}}
|
||||
</legend>
|
||||
<div class="roll-dice">
|
||||
{{#each parts}}
|
||||
{{#each rolls}}
|
||||
<div class="roll-die">
|
||||
<div class="dice {{classes}}">{{result}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
||||
<div class="dice-flavor">{{title}}</div>
|
||||
<div class="dice-result">
|
||||
{{#each roll as | resource index | }}
|
||||
<div class="dice-formula">{{resource.formula}}</div>
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{#each resource.parts}}
|
||||
<section class="tooltip-part">
|
||||
<div class="dice">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">{{formula}}</span>
|
||||
<span class="part-total">{{total}}</span>
|
||||
</header>
|
||||
<ol class="dice-rolls">
|
||||
{{#each dice}}
|
||||
{{#each results}}
|
||||
<li class="roll die {{../dice}} min">{{result}}</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="dice-total">{{resource.total}}</div>
|
||||
{{/each}}
|
||||
<div class="flexrow">
|
||||
<button class="healing-button"><span>{{localize "DAGGERHEART.UI.Chat.healingRoll.heal"}}</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
17
templates/ui/chat/parts/button-part.hbs
Normal file
17
templates/ui/chat/parts/button-part.hbs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<div class="roll-buttons">
|
||||
{{#if hasDamage}}
|
||||
{{#unless (empty damage)}}
|
||||
<button class="duality-action damage-button">{{localize "DAGGERHEART.UI.Chat.damageRoll.dealDamage"}}</button>
|
||||
{{else}}
|
||||
<button class="duality-action duality-action-damage">{{localize "DAGGERHEART.UI.Chat.attackRoll.rollDamage"}}</button>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
{{#if hasHealing}}
|
||||
{{#unless (empty damage)}}
|
||||
<button class="duality-action damage-button">{{localize "DAGGERHEART.UI.Chat.healingRoll.applyHealing"}}</button>
|
||||
{{else}}
|
||||
<button class="duality-action duality-action-damage">{{localize "DAGGERHEART.UI.Chat.attackRoll.rollHealing"}}</button>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
{{#if hasEffect}}<button class="duality-action-effect">{{localize "DAGGERHEART.UI.Chat.attackRoll.applyEffect"}}</button>{{/if}}
|
||||
</div>
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
<div class="dice-roll daggerheart chat roll" data-action="expandRoll">
|
||||
{{#unless noTitle}}<div class="dice-flavor">{{damage.title}}</div>{{/unless}}
|
||||
<div class="dice-result">
|
||||
{{#each damage.roll as | roll index | }}
|
||||
<div class="dice-flavor">{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}}</div>
|
||||
<div class="dice-formula">{{roll.formula}}</div>
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{#each roll.parts}}
|
||||
<section class="tooltip-part">
|
||||
<div class="dice">
|
||||
<header class="part-header flexrow">
|
||||
<span class="part-formula">{{formula}}</span>
|
||||
<span class="part-total">{{total}}</span>
|
||||
</header>
|
||||
<ol class="dice-rolls">
|
||||
{{#each dice}}
|
||||
{{#each results}}
|
||||
<li class="roll die {{../dice}} min">{{result}}</li>
|
||||
{{/each}}
|
||||
{{/each}}
|
||||
</ol>
|
||||
</div>
|
||||
{{#if modifierTotal}}<div class="duality-modifier">{{#if (gt modifierTotal 0)}}+{{/if}}{{modifierTotal}}</div>{{/if}}
|
||||
<div class="duality-result">{{localize "DAGGERHEART.GENERAL.total"}}: {{total}}</div>
|
||||
</section>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="dice-total">{{roll.total}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
69
templates/ui/chat/parts/damage-part.hbs
Normal file
69
templates/ui/chat/parts/damage-part.hbs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
<div class="roll-part damage-section dice-roll" data-action="expandRoll">
|
||||
<div class="roll-part-header"><div><span>Damage</span></div></div>
|
||||
<div class="roll-part-extra on-reduced">
|
||||
<div class="wrapper">
|
||||
{{#each damage as | roll index | }}
|
||||
<div class="roll-formula">{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}}: {{total}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="roll-part-content dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{#each damage as | roll index | }}
|
||||
<fieldset>
|
||||
<legend>
|
||||
{{localize (concat 'DAGGERHEART.CONFIG.HealingType.' index '.name')}} <div class="roll-formula">{{localize "DAGGERHEART.GENERAL.total"}}: {{roll.total}}</div>
|
||||
</legend>
|
||||
{{#each roll.parts}}
|
||||
{{#if damageTypes.length}}
|
||||
<label class="roll-part-header"><span>
|
||||
{{#each damageTypes}}
|
||||
{{localize (concat 'DAGGERHEART.CONFIG.ArmorFeature.' this '.name')}}
|
||||
{{#unless @last}}/{{/unless}}
|
||||
{{/each}}
|
||||
<div class="roll-formula">{{total}}</div></span></label>
|
||||
{{/if}}
|
||||
<div class="roll-dice">
|
||||
{{#each dice}}
|
||||
{{#each results}}
|
||||
{{#unless discarded}}
|
||||
<div class="roll-die">
|
||||
<div class="dice {{../dice}}">{{result}}</div>
|
||||
</div>
|
||||
{{#unless @last}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#unless @last}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#if modifierTotal}}
|
||||
{{#if (gt modifierTotal 0)}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">{{modifierTotal}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#unless dice.length}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">{{total}}</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
102
templates/ui/chat/parts/roll-part.hbs
Normal file
102
templates/ui/chat/parts/roll-part.hbs
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<div class="roll-part roll-section">
|
||||
<div class="roll-part-content">
|
||||
<div class="roll-result-container">
|
||||
<span class="roll-result-value">{{roll.total}}</span>
|
||||
<span class="roll-result-desc">
|
||||
{{#if roll.isCritical}}
|
||||
{{localize "DAGGERHEART.GENERAL.criticalShort"}}
|
||||
{{else}}
|
||||
{{#if roll.result}}
|
||||
{{localize "DAGGERHEART.GENERAL.withThing" thing=roll.result.label}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</span>
|
||||
</div>
|
||||
{{#if roll.difficulty}}<span class="roll-difficulty{{#unless roll.success}} is-miss{{/unless}}">difficulty {{roll.difficulty}}</span>{{/if}}
|
||||
</div>
|
||||
<div class="dice-roll" data-action="expandRoll">
|
||||
<div class="roll-part-header"><div><span>Formula</span></div></div>
|
||||
<div class="roll-part-content dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<div class="roll-dice">
|
||||
{{#if roll.hope}}
|
||||
<div class="roll-die">
|
||||
<label>{{localize "DAGGERHEART.GENERAL.hope"}}</label>
|
||||
<div class="dice {{roll.hope.dice}} color-hope">{{roll.hope.value}}</div>
|
||||
</div>
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
<div class="roll-die">
|
||||
<label>{{localize "DAGGERHEART.GENERAL.fear"}}</label>
|
||||
<div class="dice {{roll.fear.dice}} color-fear" style="--svg-folder: 'fear';">{{roll.fear.value}}</div>
|
||||
</div>
|
||||
{{#if roll.advantage.type}}
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
<div class="roll-die">
|
||||
{{#if (eq roll.advantage.type 1)}}
|
||||
<label>{{localize "DAGGERHEART.GENERAL.Advantage.short"}}</label>
|
||||
<div class="dice {{roll.advantage.dice}} color-adv">{{roll.advantage.value}}</div>
|
||||
{{else}}
|
||||
<label>{{localize "DAGGERHEART.GENERAL.Disadvantage.short"}}</label>
|
||||
<div class="dice {{roll.advantage.dice}} color-dis">{{roll.advantage.value}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if roll.rally.dice}}
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
<div class="roll-die">
|
||||
<label>{{localize "DAGGERHEART.GENERAL.fear"}}</label>
|
||||
<div class="dice {{roll.rally.dice}}">{{roll.rally.value}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#each roll.extra}}
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="dice {{dice}}">{{value}}</div>
|
||||
</div>
|
||||
{{#unless @last}}
|
||||
<div class="roll-die">
|
||||
<label></label>
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{else}}
|
||||
{{#each roll.dice}}
|
||||
{{#each results}}
|
||||
<div class="roll-die">
|
||||
<div class="dice {{../dice}}{{#if discarded}} discarded{{else}}{{#if (and (eq @index 0) ../../roll.advantage.type)}}{{#if (eq ../../roll.advantage.type 1)}} color-adv{{else}} color-dis{{/if}}{{/if}}{{#if success}} color-adv{{/if}}{{/if}}">{{result}}</div>
|
||||
</div>
|
||||
{{#unless (or @last (not discarded))}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#unless @last}}
|
||||
<div class="roll-die">
|
||||
<div class="font-20">+</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="roll-formula">{{roll.formula}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{{#if (gt currentTargets.length 0)}}
|
||||
<fieldset class="dice-roll daggerheart chat roll expanded" data-action="expandRoll">
|
||||
<legend class="dice-flavor">{{localize "DAGGERHEART.GENERAL.Target.plural"}}</legend>
|
||||
<div class="dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
<div class="target-selection">
|
||||
<label class="button-target-selection{{#if @root.targetSelection}} target-selected{{/if}}" data-target-hit="true">{{localize "DAGGERHEART.UI.Chat.damageRoll.hitTarget"}}</label>
|
||||
<label class="button-target-selection{{#unless @root.targetSelection}} target-selected{{/unless}}">{{localize "DAGGERHEART.UI.Chat.damageRoll.selectedTarget"}}</label>
|
||||
</div>
|
||||
{{#if (and hasSave @root.targetSelection @root.hasHitTarget)}}
|
||||
<button class="inner-button inner-button-right roll-all-save-button">{{localize "DAGGERHEART.GENERAL.rollAll"}} <i class="fa-solid fa-shield"></i></button>
|
||||
{{/if}}
|
||||
<div class="target-section">
|
||||
{{#each currentTargets as |target|}}
|
||||
<div class="dice-total target-container {{#if target.hit}}hit{{else}}{{#if (not ../total.alternate)}}miss{{/if}}{{/if}}" data-token="{{target.id}}">
|
||||
<img src="{{target.img}}" />
|
||||
<div class="target-inner-container">
|
||||
{{#if (or ../directDamage (not @root.targetSelection))}}
|
||||
<div data-perm-id="{{target.actorId}}"><span>{{target.name}}</span></div>
|
||||
{{else}}
|
||||
{{#if target.hit}}{{localize "Hit"}}{{else}}{{#if (not ../total.alternate)}}{{localize "Miss"}}{{else}}?{{/if}}{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if (and ../hasSave target.hit @root.targetSelection)}}
|
||||
<button class="target-save-container{{#if target.saved.result includeZero=true}} is-rolled{{/if}}" data-perm-id="{{target.actorId}}">
|
||||
<i class="fa-solid {{#if target.saved.result includeZero=true}}{{#if target.saved.success}}fa-check{{else}}fa-xmark{{/if}}{{else}}fa-shield{{/if}}">
|
||||
</i>
|
||||
</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{/if}}
|
||||
55
templates/ui/chat/parts/target-part.hbs
Normal file
55
templates/ui/chat/parts/target-part.hbs
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<div class="roll-part target-section dice-roll" data-action="expandRoll">
|
||||
<div class="roll-part-header"><div><span>Target</span></div></div>
|
||||
{{#if (and targets.length (or (or (gt targetShort.hit 0) (gt targetShort.miss 0)) (and hasSave pendingSaves)))}}
|
||||
<div class="roll-part-extra on-reduced">
|
||||
<div class="wrapper">
|
||||
{{#if (or (gt targetShort.hit 0) (gt targetShort.miss 0))}}
|
||||
<div class="target-hit-status">{{targetShort.hit}} {{#if (gt targetShort.hit 1)}}{{localize "DAGGERHEART.GENERAL.hit.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.hit.plural"}}{{/if}}</div>
|
||||
<div class="target-hit-status is-miss">{{targetShort.miss}} {{#if (gt targetShort.miss 1)}}{{localize "DAGGERHEART.GENERAL.miss.single"}}{{else}}{{localize "DAGGERHEART.GENERAL.miss.plural"}}{{/if}}</div>
|
||||
{{/if}}
|
||||
{{#if (and hasSave pendingSaves)}}<div class="target-pending-saves{{#if hasRoll}} is-absolute{{/if}}" data-tooltip="{{localize "DAGGERHEART.UI.Tooltip.pendingSaves"}}" data-tooltip-direction="UP"><i class="fa-solid fa-shield fa-lg fa-beat"></i></div>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="roll-part-content dice-result">
|
||||
<div class="dice-tooltip">
|
||||
<div class="wrapper">
|
||||
{{#if targets.length}}
|
||||
<div class="target-selector">
|
||||
<div class="roll-part-header"><div></div></div>
|
||||
<div class="target-choice">
|
||||
<div class="button-target-selection{{#if targetSelection}} target-selected{{/if}}" data-target-hit="true">{{localize "DAGGERHEART.UI.Chat.damageRoll.hitTarget"}}</div>
|
||||
<div class="button-target-selection{{#unless targetSelection}} target-selected{{/unless}}">{{localize "DAGGERHEART.UI.Chat.damageRoll.currentTarget"}}</div>
|
||||
</div>
|
||||
<div class="roll-part-header"><div></div></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if (and hasSave @root.targetSelection pendingSaves)}}<div class="roll-part-extra roll-all-save-button">Reaction Roll All Targets<i class="fa-solid fa-shield fa-lg"></i></div>{{/if}}
|
||||
{{#each currentTargets}}
|
||||
<div class="roll-target" data-token="{{id}}">
|
||||
<img class="target-img" src="{{img}}">
|
||||
<div class="target-data">
|
||||
<div class="target-name" data-perm-id="{{actorId}}">{{name}}</div>
|
||||
{{#if (and ../targetSelection ../hasRoll)}}
|
||||
<div class="target-hit-status {{#if hit}}is-hit{{else}}is-miss{{/if}}">
|
||||
{{#if hit}}
|
||||
{{localize "DAGGERHEART.GENERAL.hit.single"}}
|
||||
{{else}}
|
||||
{{localize "DAGGERHEART.GENERAL.miss.single"}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if (and ../hasSave hit @root.targetSelection)}}
|
||||
<div class="target-save{{#if saved.result includeZero=true}} is-rolled{{/if}}" data-perm-id="{{actorId}}">
|
||||
<i class="fa-solid {{#if saved.result includeZero=true}}{{#if saved.success}}fa-check{{else}}fa-xmark{{/if}}{{else}}fa-shield{{/if}} fa-lg"></i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
<i>{{localize "DAGGERHEART.GENERAL.noTarget"}}</i>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
8
templates/ui/chat/roll.hbs
Normal file
8
templates/ui/chat/roll.hbs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<div class="chat-roll">
|
||||
<div class="roll-part-header"><span>{{title}}</span></div>
|
||||
{{#if hasRoll}}{{> 'systems/daggerheart/templates/ui/chat/parts/roll-part.hbs'}}{{/if}}
|
||||
{{#if (and (not (empty damage)) (or hasDamage hasHealing))}}{{> 'systems/daggerheart/templates/ui/chat/parts/damage-part.hbs'}}{{/if}}
|
||||
{{#if hasTarget}}{{> 'systems/daggerheart/templates/ui/chat/parts/target-part.hbs'}}{{/if}}
|
||||
<div class="roll-part-header"><div></div></div>
|
||||
</div>
|
||||
{{> 'systems/daggerheart/templates/ui/chat/parts/button-part.hbs'}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue