mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 03:31:07 +01:00
Merged with main
This commit is contained in:
commit
2c6aabb97a
31 changed files with 175 additions and 122 deletions
15
lang/en.json
15
lang/en.json
|
|
@ -501,18 +501,21 @@
|
|||
},
|
||||
"takeLevelUp": "Finish Level Up",
|
||||
"tier2": {
|
||||
"name": "Tier 2",
|
||||
"label": "Levels 2-4",
|
||||
"infoLabel": "At Level 2, gain an additional Experience at +2 and gain a +1 bonus to your Proficiency.",
|
||||
"pretext": "Choose two options from the list below",
|
||||
"posttext": "Take an additional domain card of your level or lower from a domain you have access to."
|
||||
},
|
||||
"tier3": {
|
||||
"name": "Tier 3",
|
||||
"label": "Levels 5-7",
|
||||
"infoLabel": "At Level 5, take an additional Experience and clear all marks on Character Traits.",
|
||||
"pretext": "When you level up, record it on your character sheet, then choose two from the list below or any unmarked from the previous tier.",
|
||||
"posttext": "Take an additional domain card of your level or lower from a domain you have access to."
|
||||
},
|
||||
"tier4": {
|
||||
"name": "Tier 4",
|
||||
"label": "Levels 8-10",
|
||||
"infoLabel": "At Level 8, take an additional Experience and clear all marks on Character Traits.",
|
||||
"pretext": "When you level up, record it on your character sheet, then choose two from the list below or any unmarked from the previous tier.",
|
||||
|
|
@ -1026,6 +1029,12 @@
|
|||
"selectType": "Select Action Type",
|
||||
"selectAction": "Action Selection"
|
||||
},
|
||||
"TargetTypes": {
|
||||
"any": "Any",
|
||||
"friendly": "Friendly",
|
||||
"hostile": "Hostile",
|
||||
"self": "Self"
|
||||
},
|
||||
"TemplateTypes": {
|
||||
"circle": "Circle",
|
||||
"cone": "Cone",
|
||||
|
|
@ -1918,7 +1927,9 @@
|
|||
"rules": "Rules",
|
||||
"types": "Types",
|
||||
"itemFeatures": "Item Features",
|
||||
"questions": "Questions"
|
||||
"questions": "Questions",
|
||||
"configuration": "Configuration",
|
||||
"base": "Base"
|
||||
},
|
||||
"Tiers": {
|
||||
"singular": "Tier",
|
||||
|
|
@ -2028,6 +2039,8 @@
|
|||
"save": "Save",
|
||||
"scalable": "Scalable",
|
||||
"situationalBonus": "Situational Bonus",
|
||||
"spent": "Spent",
|
||||
"step": "Step",
|
||||
"stress": "Stress",
|
||||
"subclasses": "Subclasses",
|
||||
"success": "Success",
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
|
|||
group: 'primary',
|
||||
id: 'base',
|
||||
icon: null,
|
||||
label: 'Base'
|
||||
label: 'DAGGERHEART.GENERAL.Tabs.base'
|
||||
},
|
||||
config: {
|
||||
active: false,
|
||||
|
|
@ -74,7 +74,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
|
|||
group: 'primary',
|
||||
id: 'config',
|
||||
icon: null,
|
||||
label: 'Configuration'
|
||||
label: 'DAGGERHEART.GENERAL.Tabs.configuration'
|
||||
},
|
||||
effect: {
|
||||
active: false,
|
||||
|
|
@ -82,7 +82,7 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
|
|||
group: 'primary',
|
||||
id: 'effect',
|
||||
icon: null,
|
||||
label: 'Effect'
|
||||
label: 'DAGGERHEART.GENERAL.Tabs.effects'
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
|||
* @protected
|
||||
*/
|
||||
async _prepareLoadoutContext(context, _options) {
|
||||
context.cardView = !game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList);
|
||||
context.cardView = game.user.getFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -722,8 +722,8 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
|||
* @type {ApplicationClickAction}
|
||||
*/
|
||||
static async #toggleLoadoutView(_, button) {
|
||||
const newAbilityView = button.dataset.value !== 'true';
|
||||
await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsList, newAbilityView);
|
||||
const newAbilityView = button.dataset.value === 'true';
|
||||
await game.user.setFlag(CONFIG.DH.id, CONFIG.DH.FLAGS.displayDomainCardsAsCard, newAbilityView);
|
||||
this.render();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -455,7 +455,7 @@ export default function DHApplicationMixin(Base) {
|
|||
options.push({
|
||||
name: 'DAGGERHEART.APPLICATIONS.ContextMenu.sendToChat',
|
||||
icon: 'fa-solid fa-message',
|
||||
callback: async target => (await getDocFromElement(target)).toChat(this.document.id)
|
||||
callback: async target => (await getDocFromElement(target)).toChat(this.document.uuid)
|
||||
});
|
||||
|
||||
if (deletable)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
export const displayDomainCardsAsList = 'displayDomainCardsAsList';
|
||||
export const displayDomainCardsAsCard = 'displayDomainCardsAsCard';
|
||||
export const narrativeCountdown = {
|
||||
simple: 'countdown-narrative-simple',
|
||||
position: 'countdown-narrative-position'
|
||||
|
|
|
|||
|
|
@ -90,22 +90,22 @@ export const rangeInclusion = {
|
|||
export const otherTargetTypes = {
|
||||
friendly: {
|
||||
id: 'friendly',
|
||||
label: 'Friendly'
|
||||
label: 'DAGGERHEART.CONFIG.TargetTypes.friendly'
|
||||
},
|
||||
hostile: {
|
||||
id: 'hostile',
|
||||
label: 'Hostile'
|
||||
label: 'DAGGERHEART.CONFIG.TargetTypes.hostile'
|
||||
},
|
||||
any: {
|
||||
id: 'any',
|
||||
label: 'Any'
|
||||
label: 'DAGGERHEART.CONFIG.TargetTypes.any'
|
||||
}
|
||||
};
|
||||
|
||||
export const targetTypes = {
|
||||
self: {
|
||||
id: 'self',
|
||||
label: 'Self'
|
||||
label: 'DAGGERHEART.CONFIG.TargetTypes.self'
|
||||
},
|
||||
...otherTargetTypes
|
||||
};
|
||||
|
|
@ -587,17 +587,17 @@ export const abilityCosts = {
|
|||
},
|
||||
hope: {
|
||||
id: 'hope',
|
||||
label: 'Hope',
|
||||
label: 'DAGGERHEART.CONFIG.HealingType.hope.name',
|
||||
group: 'TYPES.Actor.character'
|
||||
},
|
||||
armor: {
|
||||
id: 'armor',
|
||||
label: 'Armor Slot',
|
||||
label: 'DAGGERHEART.CONFIG.HealingType.armor.name',
|
||||
group: 'TYPES.Actor.character'
|
||||
},
|
||||
fear: {
|
||||
id: 'fear',
|
||||
label: 'Fear',
|
||||
label: 'DAGGERHEART.CONFIG.HealingType.fear.name',
|
||||
group: 'TYPES.Actor.adversary'
|
||||
},
|
||||
resource: itemAbilityCosts.resource
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
|||
actionType: new fields.StringField({
|
||||
choices: CONFIG.DH.ITEM.actionTypes,
|
||||
initial: 'action',
|
||||
nullable: true
|
||||
nullable: false,
|
||||
required: true
|
||||
})
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -218,7 +218,8 @@ export default class CostField extends fields.ArrayField {
|
|||
* @returns
|
||||
*/
|
||||
static getRealCosts(costs) {
|
||||
const realCosts = costs?.length ? costs.filter(c => c.enabled) : [];
|
||||
const cloneCosts = foundry.utils.deepClone(costs),
|
||||
realCosts = cloneCosts?.length ? cloneCosts.filter(c => c.enabled) : [];
|
||||
let mergedCosts = [];
|
||||
realCosts.forEach(c => {
|
||||
const getCost = Object.values(mergedCosts).find(gc => gc.key === c.key);
|
||||
|
|
|
|||
|
|
@ -176,7 +176,9 @@ export class DHActionDiceData extends foundry.abstract.DataModel {
|
|||
multiplier: new fields.StringField({
|
||||
choices: CONFIG.DH.GENERAL.multiplierTypes,
|
||||
initial: 'prof',
|
||||
label: 'DAGGERHEART.ACTIONS.Config.damage.multiplier'
|
||||
label: 'DAGGERHEART.ACTIONS.Config.damage.multiplier',
|
||||
nullable: false,
|
||||
required: true
|
||||
}),
|
||||
flatMultiplier: new fields.NumberField({
|
||||
nullable: true,
|
||||
|
|
@ -186,7 +188,9 @@ export class DHActionDiceData extends foundry.abstract.DataModel {
|
|||
dice: new fields.StringField({
|
||||
choices: CONFIG.DH.GENERAL.diceTypes,
|
||||
initial: 'd6',
|
||||
label: 'DAGGERHEART.GENERAL.Dice.single'
|
||||
label: 'DAGGERHEART.GENERAL.Dice.single',
|
||||
nullable: false,
|
||||
required: true
|
||||
}),
|
||||
bonus: new fields.NumberField({ nullable: true, initial: null, label: 'DAGGERHEART.GENERAL.bonus' }),
|
||||
custom: new fields.SchemaField({
|
||||
|
|
|
|||
|
|
@ -15,13 +15,17 @@ export class DHActionRollData extends foundry.abstract.DataModel {
|
|||
bonus: new fields.NumberField({ nullable: true, initial: null, integer: true }),
|
||||
advState: new fields.StringField({
|
||||
choices: CONFIG.DH.ACTIONS.advantageState,
|
||||
initial: 'neutral'
|
||||
initial: 'neutral',
|
||||
nullable: false,
|
||||
required: true
|
||||
}),
|
||||
diceRolling: new fields.SchemaField({
|
||||
multiplier: new fields.StringField({
|
||||
choices: CONFIG.DH.GENERAL.diceSetNumbers,
|
||||
initial: 'prof',
|
||||
label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.multiplier'
|
||||
label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.multiplier',
|
||||
nullable: false,
|
||||
required: true
|
||||
}),
|
||||
flatMultiplier: new fields.NumberField({
|
||||
nullable: true,
|
||||
|
|
@ -31,7 +35,9 @@ export class DHActionRollData extends foundry.abstract.DataModel {
|
|||
dice: new fields.StringField({
|
||||
choices: CONFIG.DH.GENERAL.diceTypes,
|
||||
initial: CONFIG.DH.GENERAL.diceTypes.d6,
|
||||
label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.dice'
|
||||
label: 'DAGGERHEART.ACTIONS.RollField.diceRolling.dice',
|
||||
nullable: false,
|
||||
required: true
|
||||
}),
|
||||
compare: new fields.StringField({
|
||||
choices: CONFIG.DH.ACTIONS.diceCompare,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ export default class SaveField extends fields.SchemaField {
|
|||
difficulty: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 }),
|
||||
damageMod: new fields.StringField({
|
||||
initial: CONFIG.DH.ACTIONS.damageOnSave.none.id,
|
||||
choices: CONFIG.DH.ACTIONS.damageOnSave
|
||||
choices: CONFIG.DH.ACTIONS.damageOnSave,
|
||||
nullable: false,
|
||||
required: true
|
||||
})
|
||||
};
|
||||
super(saveFields, options, context);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ export default class TargetField extends fields.SchemaField {
|
|||
type: new fields.StringField({
|
||||
choices: CONFIG.DH.GENERAL.targetTypes,
|
||||
initial: CONFIG.DH.GENERAL.targetTypes.any.id,
|
||||
nullable: true
|
||||
nullable: true,
|
||||
blank: true
|
||||
}),
|
||||
amount: new fields.NumberField({ nullable: true, initial: null, integer: true, min: 0 })
|
||||
};
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ export const defaultLevelTiers = {
|
|||
tiers: {
|
||||
2: {
|
||||
tier: 2,
|
||||
name: 'Tier 2',
|
||||
name: 'DAGGERHEART.APPLICATIONS.Levelup.tier2.name',
|
||||
levels: {
|
||||
start: 2,
|
||||
end: 4
|
||||
|
|
@ -232,7 +232,7 @@ export const defaultLevelTiers = {
|
|||
},
|
||||
3: {
|
||||
tier: 3,
|
||||
name: 'Tier 3',
|
||||
name: 'DAGGERHEART.APPLICATIONS.Levelup.tier3.name',
|
||||
levels: {
|
||||
start: 5,
|
||||
end: 7
|
||||
|
|
@ -313,7 +313,7 @@ export const defaultLevelTiers = {
|
|||
},
|
||||
4: {
|
||||
tier: 4,
|
||||
name: 'Tier 4',
|
||||
name: 'DAGGERHEART.APPLICATIONS.Levelup.tier4.name',
|
||||
levels: {
|
||||
start: 8,
|
||||
end: 10
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ export class DhLevelup extends foundry.abstract.DataModel {
|
|||
const subclassInTier = subclasses.some(x => x.tier === Number(tierKey));
|
||||
|
||||
return {
|
||||
name: tier.name,
|
||||
name: game.i18n.localize(tier.name),
|
||||
active: this.currentLevel >= Math.min(...tier.belongingLevels),
|
||||
groups: Object.keys(tier.options).map(optionKey => {
|
||||
const option = tier.options[optionKey];
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@ export default function DhDualityRollEnricher(match, _options) {
|
|||
}
|
||||
|
||||
function getDualityMessage(roll, flavor) {
|
||||
const trait = roll.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null;
|
||||
const trait = roll?.trait && abilities[roll.trait] ? game.i18n.localize(abilities[roll.trait].label) : null;
|
||||
const label =
|
||||
flavor ??
|
||||
(roll.trait
|
||||
(roll?.trait
|
||||
? game.i18n.format('DAGGERHEART.GENERAL.rollWith', { roll: trait })
|
||||
: roll.reaction
|
||||
: roll?.reaction
|
||||
? game.i18n.localize('DAGGERHEART.GENERAL.reactionRoll')
|
||||
: game.i18n.localize('DAGGERHEART.GENERAL.duality'));
|
||||
|
||||
|
|
@ -22,9 +22,9 @@ function getDualityMessage(roll, flavor) {
|
|||
? game.i18n.localize(abilities[roll.trait].label)
|
||||
: game.i18n.localize('DAGGERHEART.GENERAL.duality');
|
||||
|
||||
const advantage = roll.advantage
|
||||
const advantage = roll?.advantage
|
||||
? CONFIG.DH.ACTIONS.advantageState.advantage.value
|
||||
: roll.disadvantage
|
||||
: roll?.disadvantage
|
||||
? CONFIG.DH.ACTIONS.advantageState.disadvantage.value
|
||||
: undefined;
|
||||
const advantageLabel =
|
||||
|
|
@ -36,21 +36,21 @@ function getDualityMessage(roll, flavor) {
|
|||
|
||||
const dualityElement = document.createElement('span');
|
||||
dualityElement.innerHTML = `
|
||||
<button type="button" class="duality-roll-button${roll.inline ? ' inline' : ''}"
|
||||
<button type="button" class="duality-roll-button${roll?.inline ? ' inline' : ''}"
|
||||
data-title="${label}"
|
||||
data-label="${dataLabel}"
|
||||
data-reaction="${roll.reaction ? 'true' : 'false'}"
|
||||
data-hope="${roll.hope ?? 'd12'}"
|
||||
data-fear="${roll.fear ?? 'd12'}"
|
||||
data-reaction="${roll?.reaction ? 'true' : 'false'}"
|
||||
data-hope="${roll?.hope ?? 'd12'}"
|
||||
data-fear="${roll?.fear ?? 'd12'}"
|
||||
${advantage ? `data-advantage="${advantage}"` : ''}
|
||||
${roll.difficulty !== undefined ? `data-difficulty="${roll.difficulty}"` : ''}
|
||||
${roll.trait && abilities[roll.trait] ? `data-trait="${roll.trait}"` : ''}
|
||||
${roll.advantage ? 'data-advantage="true"' : ''}
|
||||
${roll.disadvantage ? 'data-disadvantage="true"' : ''}
|
||||
${roll?.difficulty !== undefined ? `data-difficulty="${roll.difficulty}"` : ''}
|
||||
${roll?.trait && abilities[roll.trait] ? `data-trait="${roll.trait}"` : ''}
|
||||
${roll?.advantage ? 'data-advantage="true"' : ''}
|
||||
${roll?.disadvantage ? 'data-disadvantage="true"' : ''}
|
||||
>
|
||||
${roll.reaction ? '<i class="fa-solid fa-reply"></i>' : '<i class="fa-solid fa-circle-half-stroke"></i>'}
|
||||
${roll?.reaction ? '<i class="fa-solid fa-reply"></i>' : '<i class="fa-solid fa-circle-half-stroke"></i>'}
|
||||
${label}
|
||||
${!flavor && (roll.difficulty || advantageLabel) ? `(${[roll.difficulty, advantageLabel ? game.i18n.localize(`DAGGERHEART.GENERAL.${advantageLabel}.short`) : null].filter(x => x).join(' ')})` : ''}
|
||||
${!flavor && (roll?.difficulty || advantageLabel) ? `(${[roll.difficulty, advantageLabel ? game.i18n.localize(`DAGGERHEART.GENERAL.${advantageLabel}.short`) : null].filter(x => x).join(' ')})` : ''}
|
||||
</button>
|
||||
`;
|
||||
|
||||
|
|
|
|||
|
|
@ -557,11 +557,11 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8",
|
||||
"modifiedTime": 1754143653876
|
||||
"systemVersion": "1.1.2",
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg",
|
||||
"modifiedTime": 1756510879809
|
||||
},
|
||||
"_key": "!actors.items!89yAh30vaNQOALlz.UpFsnlbZkyvM2Ftv"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -342,12 +342,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"systemVersion": "1.1.2",
|
||||
"createdTime": 1754127683751,
|
||||
"modifiedTime": 1754127795809,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756511006257,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!actors.items!dsfB3YhoL5SudvS2.NnCkXIuATO0s3tSR"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -348,12 +348,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"systemVersion": "1.1.2",
|
||||
"createdTime": 1754129153649,
|
||||
"modifiedTime": 1754129204931,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756510982337,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!actors.items!6hbqmxDXFOzZJDk4.BQsVuuwFYByKwesR"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -110,19 +110,20 @@
|
|||
"source": "Daggerheart SRD",
|
||||
"page": 95,
|
||||
"artist": ""
|
||||
}
|
||||
},
|
||||
"motivesAndTactics": "Hide in plain sight, preserve the forest, root down, swing branches"
|
||||
},
|
||||
"flags": {},
|
||||
"_stats": {
|
||||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.347",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "1.0.5",
|
||||
"systemVersion": "1.1.2",
|
||||
"createdTime": 1753922784314,
|
||||
"modifiedTime": 1755385515496,
|
||||
"lastModifiedBy": "VZIeX2YDvX338Zvr"
|
||||
"modifiedTime": 1757057641714,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_id": "XK78QUfY8c8Go8Uv",
|
||||
"sort": 3400000,
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@
|
|||
"_key": "!actors.items!3aAS2Qm3R6cgaYfE.tQgxiSS48TJ3X1Dl"
|
||||
},
|
||||
{
|
||||
"name": "Avalance Roar",
|
||||
"name": "Avalanche Roar",
|
||||
"type": "feature",
|
||||
"system": {
|
||||
"description": "<p><strong>Spend a Fear</strong> to roar while within a cave and cause a cave-in. All targets within Close range must succeed on an Agility Reaction Roll (14) or take <strong>2d10</strong> physical damage. The rubble can be cleared with a Progress Countdown (8).</p><p>@Template[type:emanation|range:c]</p>",
|
||||
|
|
@ -535,12 +535,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.347",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754085059319,
|
||||
"modifiedTime": 1754143365810,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756256613353,
|
||||
"lastModifiedBy": "CEZZA7TXd7uT8O2c"
|
||||
},
|
||||
"_key": "!actors.items!3aAS2Qm3R6cgaYfE.9Z0i0uURfBMVIapJ"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -301,12 +301,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"systemVersion": "1.1.2",
|
||||
"createdTime": 1754055148507,
|
||||
"modifiedTime": 1754145130460,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756510967769,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!actors.items!aLkLFuVoKz2NLoBK.WpOh5kHHx7lcTvEY"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@
|
|||
"_key": "!actors.items!UGPiPLJsPvMTSKEF.QV2ytK4b1VWF71OS"
|
||||
},
|
||||
{
|
||||
"name": "Avalance",
|
||||
"name": "Avalanche",
|
||||
"type": "feature",
|
||||
"system": {
|
||||
"description": "<p><strong>Spend a Fear</strong> to have the Dragon unleash a huge downfall of snow and ice, covering all other creatures within Far range. All targets within this area must succeed on an Instinct Reaction Roll or be buried in snow and rocks, becoming <em>Vulnerable</em> until they dig themselves out from the debris. For each PC that fails the reaction roll, you gain a Fear.</p><p>@Template[type:emanation|range:f]</p>",
|
||||
|
|
@ -681,12 +681,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.347",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754131703390,
|
||||
"modifiedTime": 1754131790034,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756256581072,
|
||||
"lastModifiedBy": "CEZZA7TXd7uT8O2c"
|
||||
},
|
||||
"_key": "!actors.items!UGPiPLJsPvMTSKEF.CcRTxCDCJskiu3fI"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@
|
|||
"_key": "!actors.items!acMu9wJrMZZzLSTJ.cIAMenvMXHPTpOFn"
|
||||
},
|
||||
{
|
||||
"name": "Avalance",
|
||||
"name": "Avalanche",
|
||||
"type": "feature",
|
||||
"system": {
|
||||
"description": "<p>Spend a Fear to carve the mountain with an icy torrent, causing an avalanche. All PCs in its path must succeed on an Agility or Strength Reaction Roll or be bowled over and carried down the mountain. A PC using rope, pitons, or other climbing gear gains advantage on this roll. Targets who fail are knocked down the mountain to Far range, take <strong>2d20</strong> physical damage, and must mark a Stress. Targets who succeed must mark a Stress. </p><section id=\"secret-3gM8fEJj1vD9W88k\" class=\"secret\"><p><em>How do the PCs try to weather the avalanche? What approach do the characters take to fi nd one another when their companions go hurtling down the mountainside?</em></p></section>",
|
||||
|
|
@ -257,12 +257,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.347",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1754217019442,
|
||||
"modifiedTime": 1754217102897,
|
||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
||||
"modifiedTime": 1756256534443,
|
||||
"lastModifiedBy": "CEZZA7TXd7uT8O2c"
|
||||
},
|
||||
"_key": "!actors.items!acMu9wJrMZZzLSTJ.jkm03DXYYajsRk2j"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -110,13 +110,14 @@
|
|||
"effects": [
|
||||
{
|
||||
"name": "Protective",
|
||||
"description": "Add your character's Tier to your Armor Score",
|
||||
"description": "<p>Add the item's Tier to your Armor Score</p>",
|
||||
"img": "icons/skills/melee/shield-block-gray-orange.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.armorScore",
|
||||
"mode": 2,
|
||||
"value": "ITEM.@system.tier"
|
||||
"value": "ITEM.@system.tier",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"_id": "i5HfkF5aKQuUCTEG",
|
||||
|
|
@ -125,7 +126,12 @@
|
|||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
|
|
@ -137,12 +143,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753794875150,
|
||||
"modifiedTime": 1753794875150,
|
||||
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
|
||||
"modifiedTime": 1756682958806,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!items.effects!hiEOGF2reabGLUoi.i5HfkF5aKQuUCTEG"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,13 +110,14 @@
|
|||
"effects": [
|
||||
{
|
||||
"name": "Protective",
|
||||
"description": "Add your character's Tier to your Armor Score",
|
||||
"description": "<p>Add the item's Tier to your Armor Score</p>",
|
||||
"img": "icons/skills/melee/shield-block-gray-orange.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.armorScore",
|
||||
"mode": 2,
|
||||
"value": "ITEM.@system.tier"
|
||||
"value": "ITEM.@system.tier",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"_id": "cXWSV50apzaNQkdA",
|
||||
|
|
@ -125,7 +126,12 @@
|
|||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
|
|
@ -137,12 +143,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753794098464,
|
||||
"modifiedTime": 1753794098464,
|
||||
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
|
||||
"modifiedTime": 1756682973559,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!items.effects!DlinEBGZfIlvreO3.cXWSV50apzaNQkdA"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,13 +110,14 @@
|
|||
"effects": [
|
||||
{
|
||||
"name": "Protective",
|
||||
"description": "Add your character's Tier to your Armor Score",
|
||||
"description": "<p>Add the item's Tier to your Armor Score</p>",
|
||||
"img": "icons/skills/melee/shield-block-gray-orange.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.armorScore",
|
||||
"mode": 2,
|
||||
"value": "ITEM.@system.tier"
|
||||
"value": "ITEM.@system.tier",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"_id": "Z2p00q5h6x6seXys",
|
||||
|
|
@ -125,7 +126,12 @@
|
|||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
|
|
@ -137,12 +143,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753796983285,
|
||||
"modifiedTime": 1753796983285,
|
||||
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
|
||||
"modifiedTime": 1756682777682,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!items.effects!A28WL9E2lJ3iLZHW.Z2p00q5h6x6seXys"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,13 +110,14 @@
|
|||
"effects": [
|
||||
{
|
||||
"name": "Protective",
|
||||
"description": "Add your character's Tier to your Armor Score",
|
||||
"description": "<p>Add the item's Tier to your Armor Score.</p>",
|
||||
"img": "icons/skills/melee/shield-block-gray-orange.webp",
|
||||
"changes": [
|
||||
{
|
||||
"key": "system.armorScore",
|
||||
"mode": 2,
|
||||
"value": "ITEM.@system.tier"
|
||||
"value": "ITEM.@system.tier",
|
||||
"priority": null
|
||||
}
|
||||
],
|
||||
"_id": "M70a81e0Mg66jHRL",
|
||||
|
|
@ -125,7 +126,12 @@
|
|||
"disabled": false,
|
||||
"duration": {
|
||||
"startTime": null,
|
||||
"combat": null
|
||||
"combat": null,
|
||||
"seconds": null,
|
||||
"rounds": null,
|
||||
"turns": null,
|
||||
"startRound": null,
|
||||
"startTurn": null
|
||||
},
|
||||
"origin": null,
|
||||
"tint": "#ffffff",
|
||||
|
|
@ -137,12 +143,12 @@
|
|||
"compendiumSource": null,
|
||||
"duplicateSource": null,
|
||||
"exportSource": null,
|
||||
"coreVersion": "13.346",
|
||||
"coreVersion": "13.348",
|
||||
"systemId": "daggerheart",
|
||||
"systemVersion": "0.0.1",
|
||||
"createdTime": 1753794114980,
|
||||
"modifiedTime": 1753794114980,
|
||||
"lastModifiedBy": "FecEtPuoQh6MpjQ0"
|
||||
"modifiedTime": 1756682994216,
|
||||
"lastModifiedBy": "mdk78Q6pOyHh6aBg"
|
||||
},
|
||||
"_key": "!items.effects!mxwWKDujgsRcZWPT.M70a81e0Mg66jHRL"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<fieldset class="one-column" data-key="cost">
|
||||
<legend>
|
||||
Cost
|
||||
{{localize "DAGGERHEART.GENERAL.Cost.single"}}
|
||||
<a><i class="fa-solid fa-plus icon-button" data-action="addElement"></i></a>
|
||||
</legend>
|
||||
{{#each source as |cost index|}}
|
||||
|
|
@ -8,10 +8,10 @@
|
|||
{{formField ../fields.consumeOnSuccess value=cost.consumeOnSuccess name=(concat "cost." index ".consumeOnSuccess") classes="checkbox" rootId=partId localize=true}}
|
||||
{{/if}}
|
||||
<div class="nest-inputs">
|
||||
{{formField ../fields.scalable label="Scalable" value=cost.scalable name=(concat "cost." index ".scalable") classes="checkbox"}}
|
||||
{{formField ../fields.key choices=(@root.disableOption index @root.costOptions ../source) label="Resource" value=cost.key name=(concat "cost." index ".key") localize=true blank=false}}
|
||||
{{formField ../fields.value label="Amount" value=cost.value name=(concat "cost." index ".value")}}
|
||||
{{formField ../fields.step label="Step" value=cost.step name=(concat "cost." index ".step") disabled=(not cost.scalable)}}
|
||||
{{formField ../fields.scalable label="DAGGERHEART.GENERAL.scalable" value=cost.scalable name=(concat "cost." index ".scalable") classes="checkbox" localize=true}}
|
||||
{{formField ../fields.key choices=(@root.disableOption index @root.costOptions ../source) label="DAGGERHEART.GENERAL.resource" value=cost.key name=(concat "cost." index ".key") localize=true blank=false}}
|
||||
{{formField ../fields.value label="DAGGERHEART.GENERAL.amount" value=cost.value name=(concat "cost." index ".value") localize=true}}
|
||||
{{formField ../fields.step label="DAGGERHEART.GENERAL.step" value=cost.step name=(concat "cost." index ".step") disabled=(not cost.scalable) localize=true}}
|
||||
<a class="btn" data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeElement" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<fieldset class="one-column">
|
||||
<legend>{{localize "DAGGERHEART.GENERAL.range"}}{{#if fields.target}} & {{localize "DAGGERHEART.GENERAL.Target.single"}}{{/if}}</legend>
|
||||
{{formField fields.range value=source.range label="Range" name=(concat path "range") localize=true}}
|
||||
{{formField fields.range value=source.range label="DAGGERHEART.GENERAL.range" name=(concat path "range") localize=true}}
|
||||
{{#if fields.target}}
|
||||
<div class="nest-inputs">
|
||||
{{#if (and source.target.type (not (eq source.target.type 'self')))}}
|
||||
{{ formField fields.target.amount value=source.target.amount label="Amount" name=(concat path "target.amount") }}
|
||||
{{ formField fields.target.amount value=source.target.amount label="DAGGERHEART.GENERAL.amount" name=(concat path "target.amount") localize=true}}
|
||||
{{/if}}
|
||||
{{ formField fields.target.type value=source.target.type label="Target" name=(concat path "target.type") localize=true }}
|
||||
{{ formField fields.target.type value=source.target.type label="DAGGERHEART.GENERAL.Target.single" name=(concat path "target.type") localize=true }}
|
||||
</div>
|
||||
{{/if}}
|
||||
</fieldset>
|
||||
|
|
@ -4,8 +4,8 @@
|
|||
{{formField fields.consumeOnSuccess value=source.consumeOnSuccess name="uses.consumeOnSuccess" classes="checkbox" rootId=partId localize=true}}
|
||||
{{/if}}
|
||||
<div class="nest-inputs">
|
||||
{{formField fields.value label="Spent" value=source.value name="uses.value" rootId=partId}}
|
||||
{{formField fields.max label="Max" value=source.max name="uses.max" rootId=partId}}
|
||||
{{formField fields.value label="DAGGERHEART.GENERAL.spent" value=source.value name="uses.value" rootId=partId localize=true}}
|
||||
{{formField fields.max label="DAGGERHEART.GENERAL.max" value=source.max name="uses.max" rootId=partId localize=true}}
|
||||
</div>
|
||||
{{formField fields.recovery label="Recovery" value=source.recovery name="uses.recovery" rootId=partId localize=true}}
|
||||
{{formField fields.recovery label="DAGGERHEART.GENERAL.recovery" value=source.recovery name="uses.recovery" rootId=partId localize=true}}
|
||||
</fieldset>
|
||||
|
|
@ -146,7 +146,7 @@
|
|||
<select class="roll-mode-select" name="selectedRollMode">
|
||||
{{selectOptions rollModes selected=selectedRollMode valueAttr="action" labelAttr="label" localize=true}}
|
||||
</select>
|
||||
<button class="sunmit-btn" data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>
|
||||
<button class="submit-btn" data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>
|
||||
<i class="fa-solid fa-dice"></i>
|
||||
<span class="label">
|
||||
{{#if @root.rollConfig.roll.difficulty}}
|
||||
|
|
@ -162,7 +162,7 @@
|
|||
{{> 'systems/daggerheart/templates/dialogs/dice-roll/costSelection.hbs'}}
|
||||
{{/if}}
|
||||
<div class="roll-dialog-controls">
|
||||
<button class="sunmit-btn" data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>
|
||||
<button class="submit-btn" data-action="submitRoll"{{#unless canRoll}} disabled{{/unless}}>
|
||||
<span class="label">{{localize "DAGGERHEART.GENERAL.continue"}}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue