Merge branch 'main' into v14

This commit is contained in:
WBHarry 2026-07-12 00:40:19 +02:00
commit 870692bfa2
256 changed files with 948 additions and 759 deletions

View file

@ -315,15 +315,15 @@ export default class BeastformDialog extends HandlebarsApplicationMixin(Applicat
const beastformEffect = selected.effects.find(x => x.type === 'beastform'); const beastformEffect = selected.effects.find(x => x.type === 'beastform');
for (const traitBonus of app.modifications.traitBonuses) { for (const traitBonus of app.modifications.traitBonuses) {
const existingChange = beastformEffect.changes.find( const existingChange = beastformEffect.system.changes.find(
x => x.key === `system.traits.${traitBonus.trait}.value` x => x.key === `system.traits.${traitBonus.trait}.value`
); );
if (existingChange) { if (existingChange) {
existingChange.value = Number.parseInt(existingChange.value) + traitBonus.bonus; existingChange.value = Number.parseInt(existingChange.value) + traitBonus.bonus;
} else { } else {
beastformEffect.changes.push({ beastformEffect.system.changes.push({
key: `system.traits.${traitBonus.trait}.value`, key: `system.traits.${traitBonus.trait}.value`,
mode: 2, type: 'add',
priority: null, priority: null,
value: traitBonus.bonus value: traitBonus.bonus
}); });

View file

@ -139,13 +139,15 @@ export default class DhDeathMove extends HandlebarsApplicationMixin(ApplicationV
name: game.i18n.localize('DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.name'), name: game.i18n.localize('DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.name'),
description: game.i18n.localize('DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.description'), description: game.i18n.localize('DAGGERHEART.CONFIG.DeathMoves.blazeOfGlory.description'),
img: CONFIG.DH.GENERAL.deathMoves.blazeOfGlory.img, img: CONFIG.DH.GENERAL.deathMoves.blazeOfGlory.img,
changes: [ system: {
{ changes: [
key: 'system.rules.roll.guaranteedCritical', {
mode: 2, key: 'system.rules.roll.guaranteedCritical',
value: 'true' type: 'add',
} value: 'true'
] }
]
}
} }
]); ]);

View file

@ -90,18 +90,20 @@ export const BPModifiers = {
name: 'DAGGERHEART.CONFIG.BPModifiers.increaseDamage.effect.name', name: 'DAGGERHEART.CONFIG.BPModifiers.increaseDamage.effect.name',
description: 'DAGGERHEART.CONFIG.BPModifiers.increaseDamage.effect.description', description: 'DAGGERHEART.CONFIG.BPModifiers.increaseDamage.effect.description',
img: 'icons/magic/control/buff-flight-wings-red.webp', img: 'icons/magic/control/buff-flight-wings-red.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.damage.physical.dice', {
mode: 2, key: 'system.bonuses.damage.physical.dice',
value: '1d4' type: 'add',
}, value: '1d4'
{ },
key: 'system.bonuses.damage.magical.dice', {
mode: 2, key: 'system.bonuses.damage.magical.dice',
value: '1d4' type: 'add',
} value: '1d4'
] }
]
}
} }
] ]
} }

View file

@ -37,13 +37,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.channeling.effects.channeling.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.channeling.effects.channeling.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.channeling.effects.channeling.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.channeling.effects.channeling.description',
img: 'icons/magic/symbols/rune-sigil-horned-blue.webp', img: 'icons/magic/symbols/rune-sigil-horned-blue.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.roll.spellcast', {
mode: 2, key: 'system.bonuses.roll.spellcast',
value: '1' type: 'add',
} value: '1'
] }
]
}
} }
] ]
}, },
@ -55,43 +57,45 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.difficult.effects.difficult.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.difficult.effects.difficult.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.difficult.effects.difficult.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.difficult.effects.difficult.description',
img: 'icons/magic/control/buff-flight-wings-red.webp', img: 'icons/magic/control/buff-flight-wings-red.webp',
changes: [ system: {
{ changes: [
key: 'system.traits.agility.value', {
mode: 2, key: 'system.traits.agility.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.traits.strength.value', {
mode: 2, key: 'system.traits.strength.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.traits.finesse.value', {
mode: 2, key: 'system.traits.finesse.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.traits.instinct.value', {
mode: 2, key: 'system.traits.instinct.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.traits.presence.value', {
mode: 2, key: 'system.traits.presence.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.traits.knowledge.value', {
mode: 2, key: 'system.traits.knowledge.value',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -103,13 +107,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.flexible.effects.flexible.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.flexible.effects.flexible.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.flexible.effects.flexible.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.flexible.effects.flexible.description',
img: 'icons/magic/movement/abstract-ribbons-red-orange.webp', img: 'icons/magic/movement/abstract-ribbons-red-orange.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '1' type: 'add',
} value: '1'
] }
]
}
} }
] ]
}, },
@ -121,13 +127,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.fortified.effects.fortified.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.fortified.effects.fortified.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.fortified.effects.fortified.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.fortified.effects.fortified.description',
img: 'icons/magic/defensive/shield-barrier-glowing-blue.webp', img: 'icons/magic/defensive/shield-barrier-glowing-blue.webp',
changes: [ system: {
{ changes: [
key: 'system.rules.damageReduction.increasePerArmorMark', {
mode: 5, key: 'system.rules.damageReduction.increasePerArmorMark',
value: '2' type: 'override',
} value: '2'
] }
]
}
} }
] ]
}, },
@ -139,13 +147,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.gilded.effects.gilded.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.gilded.effects.gilded.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.gilded.effects.gilded.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.gilded.effects.gilded.description',
img: 'icons/magic/control/control-influence-crown-gold.webp', img: 'icons/magic/control/control-influence-crown-gold.webp',
changes: [ system: {
{ changes: [
key: 'system.traits.presence.value', {
mode: 2, key: 'system.traits.presence.value',
value: '1' type: 'add',
} value: '1'
] }
]
}
} }
] ]
}, },
@ -157,13 +167,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.heavy.effects.heavy.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.heavy.effects.heavy.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.heavy.effects.heavy.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.heavy.effects.heavy.description',
img: 'icons/commodities/metal/ingot-worn-iron.webp', img: 'icons/commodities/metal/ingot-worn-iron.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -212,13 +224,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.magical.effects.magical.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.magical.effects.magical.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.magical.effects.magical.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.magical.effects.magical.description',
img: 'icons/magic/defensive/barrier-shield-dome-blue-purple.webp', img: 'icons/magic/defensive/barrier-shield-dome-blue-purple.webp',
changes: [ system: {
{ changes: [
key: 'system.rules.damageReduction.magical', {
mode: 5, key: 'system.rules.damageReduction.magical',
value: 1 type: 'override',
} value: 1
] }
]
}
} }
] ]
}, },
@ -249,13 +263,15 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.physical.effects.physical.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.physical.effects.physical.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.physical.effects.physical.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.physical.effects.physical.description',
img: 'icons/commodities/stone/ore-pile-tan.webp', img: 'icons/commodities/stone/ore-pile-tan.webp',
changes: [ system: {
{ changes: [
key: 'system.rules.damageReduction.physical', {
mode: 5, key: 'system.rules.damageReduction.physical',
value: 1 type: 'override',
} value: 1
] }
]
}
} }
] ]
}, },
@ -280,18 +296,20 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.reinforced.effects.reinforced.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.reinforced.effects.reinforced.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.reinforced.effects.reinforced.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.reinforced.effects.reinforced.description',
img: 'icons/magic/defensive/shield-barrier-glowing-triangle-green.webp', img: 'icons/magic/defensive/shield-barrier-glowing-triangle-green.webp',
changes: [ system: {
{ changes: [
key: 'system.bunuses.damageThresholds.major', {
mode: 2, key: 'system.bunuses.damageThresholds.major',
value: '2' type: 'add',
}, value: '2'
{ },
key: 'system.bunuses.damageThresholds.severe', {
mode: 2, key: 'system.bunuses.damageThresholds.severe',
value: '2' type: 'add',
} value: '2'
] }
]
}
} }
] ]
}, },
@ -326,18 +344,20 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.sharp.effects.sharp.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.sharp.effects.sharp.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.sharp.effects.sharp.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.sharp.effects.sharp.description',
img: 'icons/magic/defensive/shield-barrier-glowing-triangle-green.webp', img: 'icons/magic/defensive/shield-barrier-glowing-triangle-green.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.damage.primaryWeapon.dice', {
mode: 2, key: 'system.bonuses.damage.primaryWeapon.dice',
value: '1d4' type: 'add',
}, value: '1d4'
{ },
key: 'system.bonuses.damage.secondaryWeapon.dice', {
mode: 2, key: 'system.bonuses.damage.secondaryWeapon.dice',
value: '1d4' type: 'add',
} value: '1d4'
] }
]
}
} }
] ]
}, },
@ -408,18 +428,20 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.veryHeavy.effects.veryHeavy.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.veryHeavy.effects.veryHeavy.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.veryHeavy.effects.veryHeavy.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.veryHeavy.effects.veryHeavy.description',
img: 'icons/commodities/metal/ingot-stamped-steel.webp', img: 'icons/commodities/metal/ingot-stamped-steel.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-2' type: 'add',
}, value: '-2'
{ },
key: 'system.traits.agility.value', {
mode: 2, key: 'system.traits.agility.value',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -431,14 +453,16 @@ export const armorFeatures = {
name: 'DAGGERHEART.CONFIG.ArmorFeature.warded.effects.warded.name', name: 'DAGGERHEART.CONFIG.ArmorFeature.warded.effects.warded.name',
description: 'DAGGERHEART.CONFIG.ArmorFeature.warded.effects.warded.description', description: 'DAGGERHEART.CONFIG.ArmorFeature.warded.effects.warded.description',
img: 'icons/magic/defensive/barrier-shield-dome-pink.webp', img: 'icons/magic/defensive/barrier-shield-dome-pink.webp',
changes: [ system: {
{ changes: [
key: 'system.resistance.magical.reduction', {
mode: 2, key: 'system.resistance.magical.reduction',
value: '@system.armorScore', type: 'add',
priority: 21 value: '@system.armorScore',
} priority: 21
] }
]
}
} }
] ]
} }
@ -488,21 +512,23 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.barrier.effects.barrier.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.barrier.effects.barrier.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.barrier.effects.barrier.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.barrier.effects.barrier.description',
img: 'icons/skills/melee/shield-block-bash-blue.webp', img: 'icons/skills/melee/shield-block-bash-blue.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'Armor', {
type: 'armor', key: 'Armor',
typeData: {
type: 'armor', type: 'armor',
max: 'ITEM.@system.tier + 1' typeData: {
type: 'armor',
max: 'ITEM.@system.tier + 1'
}
} }
} ]
] }
} }
] ]
}, },
@ -514,13 +540,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.bonded.effects.damage.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.bonded.effects.damage.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.bonded.effects.damage.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.bonded.effects.damage.description',
img: 'icons/magic/symbols/chevron-elipse-circle-blue.webp', img: 'icons/magic/symbols/chevron-elipse-circle-blue.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.damage.primaryWeapon.bonus', {
mode: 2, key: 'system.bonuses.damage.primaryWeapon.bonus',
value: '@system.levelData.level.current' type: 'add',
} value: '@system.levelData.level.current'
] }
]
}
} }
] ]
}, },
@ -553,18 +581,20 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.brave.effects.brave.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.brave.effects.brave.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.brave.effects.brave.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.brave.effects.brave.description',
img: 'icons/magic/life/heart-cross-strong-flame-purple-orange.webp', img: 'icons/magic/life/heart-cross-strong-flame-purple-orange.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
}, value: '-1'
{ },
key: 'system.damageThresholds.severe', {
mode: 2, key: 'system.damageThresholds.severe',
value: 'ITEM.@system.tier' type: 'add',
} value: 'ITEM.@system.tier'
] }
]
}
} }
] ]
}, },
@ -618,13 +648,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.charged.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.charged.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.charged.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.charged.description',
img: 'icons/magic/lightning/claws-unarmed-strike-teal.webp', img: 'icons/magic/lightning/claws-unarmed-strike-teal.webp',
changes: [ system: {
{ changes: [
key: 'system.proficiency', {
mode: 2, key: 'system.proficiency',
value: '1' type: 'add',
} value: '1'
] }
]
}
} }
] ]
} }
@ -660,13 +692,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.cumbersome.effects.cumbersome.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.cumbersome.effects.cumbersome.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.cumbersome.effects.cumbersome.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.cumbersome.effects.cumbersome.description',
img: 'icons/commodities/metal/mail-plate-steel.webp', img: 'icons/commodities/metal/mail-plate-steel.webp',
changes: [ system: {
{ changes: [
key: 'system.traits.finesse.value', {
mode: 2, key: 'system.traits.finesse.value',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -707,14 +741,16 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.deflecting.effects.deflecting.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.deflecting.effects.deflecting.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.deflecting.effects.deflecting.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.deflecting.effects.deflecting.description',
img: 'icons/skills/melee/hand-grip-sword-strike-orange.webp', img: 'icons/skills/melee/hand-grip-sword-strike-orange.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '@system.armorScore', type: 'add',
priority: 21 value: '@system.armorScore',
} priority: 21
] }
]
}
} }
] ]
} }
@ -754,13 +790,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.destructive.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.destructive.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.destructive.effects.agility', description: 'DAGGERHEART.CONFIG.WeaponFeature.destructive.effects.agility',
img: 'icons/skills/melee/strike-flail-spiked-pink.webp', img: 'icons/skills/melee/strike-flail-spiked-pink.webp',
changes: [ system: {
{ changes: [
key: 'system.traits.agility.value', {
mode: 2, key: 'system.traits.agility.value',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -795,7 +833,7 @@ export const weaponFeatures = {
changes: [ changes: [
{ {
key: 'system.bonuses.damage.primaryWeapon.bonus', key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2, type: 'add',
value: '1' value: '1'
} }
], ],
@ -902,13 +940,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.actions.greed.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.actions.greed.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.actions.greed.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.greedy.actions.greed.description',
img: 'icons/commodities/currency/coins-crown-stack-gold.webp', img: 'icons/commodities/currency/coins-crown-stack-gold.webp',
changes: [ system: {
{ changes: [
key: 'system.proficiency', {
mode: 2, key: 'system.proficiency',
value: '1' type: 'add',
} value: '1'
] }
]
}
} }
] ]
} }
@ -951,13 +991,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.heavy.effects.heavy.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.heavy.effects.heavy.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.heavy.effects.heavy.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.heavy.effects.heavy.description',
img: 'icons/commodities/metal/ingot-worn-iron.webp', img: 'icons/commodities/metal/ingot-worn-iron.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -1066,13 +1108,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.massive.effects.massive.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.massive.effects.massive.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.massive.effects.massive.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.massive.effects.massive.description',
img: 'icons/skills/melee/strike-flail-destructive-yellow.webp', img: 'icons/skills/melee/strike-flail-destructive-yellow.webp',
changes: [ system: {
{ changes: [
key: 'system.evasion', {
mode: 2, key: 'system.evasion',
value: '-1' type: 'add',
} value: '-1'
] }
]
}
} }
] ]
}, },
@ -1107,7 +1151,7 @@ export const weaponFeatures = {
changes: [ changes: [
{ {
key: 'system.bonuses.damage.primaryWeapon.bonus', key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2, type: 'add',
value: 'ITEM.@system.tier + 1' value: 'ITEM.@system.tier + 1'
} }
], ],
@ -1158,13 +1202,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.persuasive.effects.persuasive.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.persuasive.effects.persuasive.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.persuasive.effects.persuasive.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.persuasive.effects.persuasive.description',
img: 'icons/magic/control/hypnosis-mesmerism-eye.webp', img: 'icons/magic/control/hypnosis-mesmerism-eye.webp',
changes: [ system: {
{ changes: [
key: 'system.traits.presence.value', {
mode: 2, key: 'system.traits.presence.value',
value: '2' type: 'add',
} value: '2'
] }
]
}
} }
] ]
} }
@ -1203,17 +1249,20 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.protective.effects.protective.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.protective.effects.protective.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.protective.effects.protective.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.protective.effects.protective.description',
img: 'icons/skills/melee/shield-block-gray-orange.webp', img: 'icons/skills/melee/shield-block-gray-orange.webp',
changes: [ system: {
{ changes: [
key: 'Armor', {
type: 'armor', key: 'Armor',
value: 0,
typeData: {
type: 'armor', type: 'armor',
max: 'ITEM.@system.tier' value: 0,
typeData: {
type: 'armor',
max: 'ITEM.@system.tier'
}
} }
} ]
] }
} }
] ]
}, },
@ -1244,13 +1293,15 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.reliable.effects.reliable.name', name: 'DAGGERHEART.CONFIG.WeaponFeature.reliable.effects.reliable.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.reliable.effects.reliable.description', description: 'DAGGERHEART.CONFIG.WeaponFeature.reliable.effects.reliable.description',
img: 'icons/skills/melee/strike-sword-slashing-red.webp', img: 'icons/skills/melee/strike-sword-slashing-red.webp',
changes: [ system: {
{ changes: [
key: 'system.bonuses.roll.primaryWeapon.bonus', {
mode: 2, key: 'system.bonuses.roll.primaryWeapon.bonus',
value: 1 type: 'add',
} value: 1
] }
]
}
} }
] ]
}, },
@ -1341,7 +1392,7 @@ export const weaponFeatures = {
changes: [ changes: [
{ {
key: 'system.bonuses.damage.primaryWeapon.bonus', key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2, type: 'add',
value: '@system.traits.agility.value', value: '@system.traits.agility.value',
priority: 21 priority: 21
} }

View file

@ -185,8 +185,10 @@ export default class D20Roll extends DHRoll {
return changeKeys; return changeKeys;
} }
static postEvaluate(roll, config = {}) { static async buildEvaluate(roll, config = {}, message = {}) {
const data = super.postEvaluate(roll, config); await super.buildEvaluate(roll, config, message);
const data = config.roll;
data.type = config.actionType; data.type = config.actionType;
data.difficulty = config.roll.difficulty; data.difficulty = config.roll.difficulty;
if (config.targets?.length) { if (config.targets?.length) {
@ -222,7 +224,6 @@ export default class D20Roll extends DHRoll {
}; };
}); });
data.modifierTotal = roll.modifierTotal; data.modifierTotal = roll.modifierTotal;
return data;
} }
resetFormula() { resetFormula() {

View file

@ -13,32 +13,38 @@ export default class DamageRoll extends DHRoll {
static DefaultDialog = DamageDialog; static DefaultDialog = DamageDialog;
/** @inheritdoc */
static async buildEvaluate(roll, config = {}, message = {}) { static async buildEvaluate(roll, config = {}, message = {}) {
if (config.dialog.configure === false) roll.constructFormula(config); if (config.dialog.configure === false) roll.constructFormula(config);
if (config.evaluate !== false) for (const roll of config.roll) await roll.roll.evaluate(); for (const roll of config.roll) await roll.roll.evaluate();
roll._evaluated = true; roll._evaluated = true;
const parts = []; const parts = [];
for (const roll of config.roll) { for (const rollData of config.roll) {
parts.push(this.postEvaluate(roll)); const roll = rollData.roll;
roll.roll = JSON.stringify(roll.roll.toJSON()); parts.push({
...rollData,
...roll.options.roll,
total: roll.total,
formula: roll.formula,
dice: roll.dice.map(d => ({
dice: d.denomination,
total: d.total,
formula: d.formula,
results: d.results
})),
damageTypes: [...(rollData.damageTypes ?? [])],
roll,
type: config.type,
modifierTotal: this.calculateTotalModifiers(roll)
});
rollData.roll = JSON.stringify(roll.toJSON());
} }
config.damage = this.unifyDamageRoll(parts); config.damage = this.unifyDamageRoll(parts);
} }
static postEvaluate(roll, config = {}) {
return {
...roll,
...super.postEvaluate(roll.roll, config),
damageTypes: [...(roll.damageTypes ?? [])],
roll: roll.roll,
type: config.type,
modifierTotal: this.calculateTotalModifiers(roll.roll)
};
}
static async buildPost(roll, config, message) { static async buildPost(roll, config, message) {
const chatMessage = config.source?.message const chatMessage = config.source?.message
? ui.chat.collection.get(config.source.message) ? ui.chat.collection.get(config.source.message)

View file

@ -33,7 +33,9 @@ export default class DHRoll extends Roll {
if (config.skips?.createMessage) config.messageRoll = roll; if (config.skips?.createMessage) config.messageRoll = roll;
await this.buildEvaluate(roll, config, (message = {})); if (config.evaluate !== false) {
await this.buildEvaluate(roll, config, (message = {}));
}
await this.buildPost(roll, config, (message = {})); await this.buildPost(roll, config, (message = {}));
return config; return config;
} }
@ -72,27 +74,14 @@ export default class DHRoll extends Roll {
return roll; return roll;
} }
/**
* Evaluates the roll and assigns roll data into the config.
* This is only called if config.evaluate is not set to false
* @protected
*/
static async buildEvaluate(roll, config = {}, message = {}) { static async buildEvaluate(roll, config = {}, message = {}) {
if (config.evaluate !== false) { await roll.evaluate();
await roll.evaluate(); config.roll = {
config.roll = this.postEvaluate(roll, config);
}
}
static async buildPost(roll, config, message) {
for (const hook of config.hooks) {
if (Hooks.call(`${CONFIG.DH.id}.postRoll${hook.capitalize()}`, config, message) === false) return null;
}
if (config.skips?.createMessage) {
await triggerChatRollFx([roll]);
} else if (!config.source?.message) {
config.message = await this.toMessage(roll, config);
}
}
static postEvaluate(roll, config = {}) {
return {
...roll.options.roll, ...roll.options.roll,
total: roll.total, total: roll.total,
formula: roll.formula, formula: roll.formula,
@ -105,6 +94,22 @@ export default class DHRoll extends Roll {
}; };
} }
/**
* Runs any post configuration events that need to happen towards the end, such as hooks and dice so nice
* @protected
*/
static async buildPost(roll, config, message) {
for (const hook of config.hooks) {
if (Hooks.call(`${CONFIG.DH.id}.postRoll${hook.capitalize()}`, config, message) === false) return null;
}
if (config.skips?.createMessage) {
await triggerChatRollFx([roll]);
} else if (!config.source?.message) {
config.message = await this.toMessage(roll, config);
}
}
static async toMessage(roll, config) { static async toMessage(roll, config) {
const item = config.data.parent?.items?.get?.(config.source.item) ?? null; const item = config.data.parent?.items?.get?.(config.source.item) ?? null;
const action = item ? item.system.actions.get(config.source.action) : null; const action = item ? item.system.actions.get(config.source.action) : null;

View file

@ -232,22 +232,10 @@ export default class DualityRoll extends D20Roll {
return changeKeys; return changeKeys;
} }
/** @inheritdoc */
static async buildEvaluate(roll, config = {}, message = {}) { static async buildEvaluate(roll, config = {}, message = {}) {
await super.buildEvaluate(roll, config, message); await super.buildEvaluate(roll, config, message);
config.roll.hope = {
await setDiceSoNiceForDualityRoll(
roll,
config.roll.advantage.type,
config.roll.hope.dice,
config.roll.fear.dice,
config.roll.advantage.dice
);
}
static postEvaluate(roll, config = {}) {
const data = super.postEvaluate(roll, config);
data.hope = {
dice: roll.dHope.denomination, dice: roll.dHope.denomination,
value: this.guaranteedCritical ? 0 : roll.dHope.total, value: this.guaranteedCritical ? 0 : roll.dHope.total,
rerolled: { rerolled: {
@ -255,7 +243,7 @@ export default class DualityRoll extends D20Roll {
rerolls: roll.dHope.results.filter(x => x.rerolled) rerolls: roll.dHope.results.filter(x => x.rerolled)
} }
}; };
data.fear = { config.roll.fear = {
dice: roll.dFear.denomination, dice: roll.dFear.denomination,
value: this.guaranteedCritical ? 0 : roll.dFear.total, value: this.guaranteedCritical ? 0 : roll.dFear.total,
rerolled: { rerolled: {
@ -263,11 +251,11 @@ export default class DualityRoll extends D20Roll {
rerolls: roll.dFear.results.filter(x => x.rerolled) rerolls: roll.dFear.results.filter(x => x.rerolled)
} }
}; };
data.rally = { config.roll.rally = {
dice: roll.dRally?.denomination, dice: roll.dRally?.denomination,
value: roll.dRally?.total value: roll.dRally?.total
}; };
data.result = { config.roll.result = {
duality: roll.withHope ? 1 : roll.withFear ? -1 : 0, duality: roll.withHope ? 1 : roll.withFear ? -1 : 0,
total: this.guaranteedCritical ? 0 : roll.dHope.total + roll.dFear.total, total: this.guaranteedCritical ? 0 : roll.dHope.total + roll.dFear.total,
label: roll.totalLabel label: roll.totalLabel
@ -275,11 +263,18 @@ export default class DualityRoll extends D20Roll {
if (roll._rallyIndex && roll.data?.parent) if (roll._rallyIndex && roll.data?.parent)
roll.data.parent.deleteEmbeddedDocuments('ActiveEffect', [roll._rallyIndex]); roll.data.parent.deleteEmbeddedDocuments('ActiveEffect', [roll._rallyIndex]);
return data;
} }
/** @inheritdoc */
static async buildPost(roll, config, message) { static async buildPost(roll, config, message) {
await setDiceSoNiceForDualityRoll(
roll,
config.roll.advantage.type,
config.roll.hope.dice,
config.roll.fear.dice,
config.roll.advantage.dice
);
await super.buildPost(roll, config, message); await super.buildPost(roll, config, message);
await DualityRoll.dualityUpdate(config); await DualityRoll.dualityUpdate(config);

View file

@ -75,25 +75,23 @@ export default class FateRoll extends D20Roll {
this.terms[0] = new foundry.dice.terms.Die({ faces: 12 }); this.terms[0] = new foundry.dice.terms.Die({ faces: 12 });
} }
/** @inheritdoc */
static async buildEvaluate(roll, config = {}, message = {}) { static async buildEvaluate(roll, config = {}, message = {}) {
await super.buildEvaluate(roll, config, message); await super.buildEvaluate(roll, config, message);
config.roll.fate = {
dice: roll.fateDie === 'Hope' ? roll.dHope.denomination : roll.dFear.denomination,
value: roll.fateDie === 'Hope' ? roll.dHope.total : roll.dFear.total,
fateDie: roll.fateDie
};
}
/** @inheritdoc */
static async buildPost(roll, config, message) {
if (roll.fateDie === 'Hope') { if (roll.fateDie === 'Hope') {
await setDiceSoNiceForHopeFateRoll(roll, config.roll.fate.dice); await setDiceSoNiceForHopeFateRoll(roll, config.roll.fate.dice);
} else { } else {
await setDiceSoNiceForFearFateRoll(roll, config.roll.fate.dice); await setDiceSoNiceForFearFateRoll(roll, config.roll.fate.dice);
} }
} return super.buildPost(roll, config, message);
static postEvaluate(roll, config = {}) {
const data = super.postEvaluate(roll, config);
data.fate = {
dice: roll.fateDie === 'Hope' ? roll.dHope.denomination : roll.dFear.denomination,
value: roll.fateDie === 'Hope' ? roll.dHope.total : roll.dFear.total,
fateDie: roll.fateDie
};
return data;
} }
} }

View file

@ -58,7 +58,7 @@ export const renderMeasuredTemplate = async event => {
if (!type || !range || !game.canvas.scene) return; if (!type || !range || !game.canvas.scene) return;
const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({ const shapeData = CONFIG.Canvas.layers.regions.layerClass.getTemplateShape({
shapetype: type, shapeType: type,
angle, angle,
range, range,
direction, direction,

View file

@ -35,23 +35,24 @@ export const enricherConfig = [
]; ];
export const enricherRenderSetup = element => { export const enricherRenderSetup = element => {
const clickWrapper = func => event => {
event.stopPropagation();
func(event);
};
element element
.querySelectorAll('.enriched-damage-button') .querySelectorAll('.enriched-damage-button')
.forEach(element => element.addEventListener('click', renderDamageButton)); .forEach(element => element.addEventListener('click', clickWrapper(renderDamageButton)));
element element
.querySelectorAll('.duality-roll-button') .querySelectorAll('.duality-roll-button')
.forEach(element => element.addEventListener('click', renderDualityButton)); .forEach(element => element.addEventListener('click', clickWrapper(renderDualityButton)));
element element
.querySelectorAll('.fate-roll-button') .querySelectorAll('.fate-roll-button')
.forEach(element => element.addEventListener('click', renderFateButton)); .forEach(element => element.addEventListener('click', clickWrapper(renderFateButton)));
element element
.querySelectorAll('.measured-template-button') .querySelectorAll('.measured-template-button')
.forEach(element => element.addEventListener('click', renderMeasuredTemplate)); .forEach(element => element.addEventListener('click', clickWrapper(renderMeasuredTemplate)));
// element
// .querySelectorAll('.enriched-effect')
// .forEach(element => element.addEventListener('dragstart', dragEnrichedEffect));
}; };

View file

@ -0,0 +1,38 @@
import { MigrationHandlerBase } from './base.mjs';
export class Migration_2_5_2 extends MigrationHandlerBase {
version = '2.5.2';
/** @inheritdoc */
async updateActiveEffectSource(effectSource, item) {
let shouldUpdate = false;
const newChanges = [];
const srdItem = item?._stats.compendiumSource ?
await foundry.utils.fromUuid(item?._stats.compendiumSource) :
null;
for (let i = 0; i < effectSource.system.changes.length; i++) {
const change = effectSource.system.changes[i];
const srdEffect = srdItem?.effects.find(x => x.name === effectSource.name);
if (change.type === 'custom') {
const srdChange = srdEffect ? srdEffect.system.changes[i] : null;
if (
change.key === srdChange.key &&
change.value === srdChange.value &&
change.type !== srdChange.type
) {
shouldUpdate = true;
newChanges.push(srdChange);
}
} else {
newChanges.push(change);
}
}
if (shouldUpdate) {
return {
_id: effectSource._id,
system: { changes: newChanges }
}
}
}
}

View file

@ -0,0 +1,77 @@
/**
* @import DHItem from "../../documents/item.mjs";
*/
/**
* The base class of an async migration.
* These are generally run between versions for things that require compendiums or must be done in post.
* The migrate() functions calls the various updateXSource() functions.
* Generally a subclass will override the version and the updateXSource() functions.
*/
export class MigrationHandlerBase {
version = null;
/**
* Gets change data for an active effect's source, or null if no changes
* @param {object} effectSource
* @param {DHItem} item
* @returns {Promise<object>}
* @protected
*/
async updateActiveEffectSource(effectSource, item) {
return null;
}
async migrate() {
// todo: handle more than just migrating effects. Right now this can only migrate effects
// NOTE: the preload is hardcoded, we should not hardcode it
const numActors = game.actors.size;
const numItems = game.items.size;
const finalUpdateProgress = 5;
const DhProgress = game.system.api.applications.ui.DhProgress;
const preRunProgress = game.packs.size;
const progress = DhProgress.createMigrationProgress(
preRunProgress + numActors + numItems + finalUpdateProgress
);
// Preload. Avoid hardcoding in the future
for (const pack of game.packs) {
await pack.getDocuments();
progress.advance();
}
const batch = [];
const updateItem = async item => {
const itemUpdates = [];
for (const effect of item.effects) {
const changes = await this.updateActiveEffectSource(effect.toObject(), item);
if (changes) itemUpdates.push(changes);
}
if (itemUpdates.length) {
batch.push({
action: 'update',
documentName: 'ActiveEffect',
updates: itemUpdates,
parent: item
});
}
};
for (const actor of game.actors) {
for (const item of actor.items) {
await updateItem(item);
}
progress.advance();
}
for (const item of game.items) {
await updateItem(item);
progress.advance();
}
await foundry.documents.modifyBatch(batch);
progress.advance({ by: finalUpdateProgress });
}
}

View file

@ -1,4 +1,5 @@
import { defaultRestOptions } from '../config/generalConfig.mjs'; import { defaultRestOptions } from '../config/generalConfig.mjs';
import { Migration_2_5_2 } from './migration-handlers/2_5_2.mjs';
export async function runMigrations() { export async function runMigrations() {
let lastMigrationVersion = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion); let lastMigrationVersion = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion);
@ -320,7 +321,19 @@ export async function runMigrations() {
lastMigrationVersion = '2.1.0'; lastMigrationVersion = '2.1.0';
} }
//#endregion
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion); await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion);
/* -------------------------------------------- */
/* New Style migrations below this point */
/* -------------------------------------------- */
const migrations = [
new Migration_2_5_2()
].filter(m => m.version && foundry.utils.isNewerVersion(m.version, lastMigrationVersion));
for (const handler of migrations) {
await handler.migrate();
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, handler.version);
}
} }

View file

@ -325,7 +325,7 @@
"changes": [ "changes": [
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 5, "type": "override",
"value": "@system.evasion / 2", "value": "@system.evasion / 2",
"priority": 10 "priority": 10
} }

View file

@ -328,7 +328,7 @@
"changes": [ "changes": [
{ {
"key": "system.disadvantageSources", "key": "system.disadvantageSources",
"mode": 2, "type": "add",
"value": "Agility Rolls", "value": "Agility Rolls",
"priority": null "priority": null
} }

View file

@ -338,7 +338,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "On attacks if they are Hidden.", "value": "On attacks if they are Hidden.",
"priority": null "priority": null
} }

View file

@ -235,7 +235,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.conditionImmunities.restrained", "key": "system.rules.conditionImmunities.restrained",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }
@ -298,7 +298,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.magical.resistance", "key": "system.resistance.magical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -462,7 +462,7 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.bonus", "key": "system.bonuses.damage.physical.bonus",
"mode": 2, "type": "add",
"value": "10", "value": "10",
"priority": null "priority": null
} }

View file

@ -273,7 +273,7 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.roll.attack.bonus", "key": "system.bonuses.roll.attack.bonus",
"mode": 2, "type": "add",
"value": "ITEM.@system.resource.value", "value": "ITEM.@system.resource.value",
"priority": 21 "priority": 21
} }

View file

@ -241,7 +241,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.attack.damage.hpDamageMultiplier", "key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -243,7 +243,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }
@ -306,7 +306,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.attack.damage.hpDamageMultiplier", "key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -268,7 +268,7 @@
"changes": [ "changes": [
{ {
"key": "system.difficulty", "key": "system.difficulty",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
} }

View file

@ -272,7 +272,7 @@
"changes": [ "changes": [
{ {
"key": "system.difficulty", "key": "system.difficulty",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -343,7 +343,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.reduction", "key": "system.resistance.physical.reduction",
"mode": 2, "type": "add",
"value": "7", "value": "7",
"priority": null "priority": null
} }

View file

@ -326,7 +326,7 @@
"changes": [ "changes": [
{ {
"key": "system.disadvantageSources", "key": "system.disadvantageSources",
"mode": 2, "type": "add",
"value": "Your next action", "value": "Your next action",
"priority": null "priority": null
} }

View file

@ -237,7 +237,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.attack.damage.hpDamageMultiplier", "key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -378,7 +378,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Attacks made while Hidden", "value": "Attacks made while Hidden",
"priority": null "priority": null
} }

View file

@ -349,7 +349,7 @@
"changes": [ "changes": [
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 5, "type": "override",
"value": "@system.evasion / 2", "value": "@system.evasion / 2",
"priority": 10 "priority": 10
} }

View file

@ -253,7 +253,7 @@
"changes": [ "changes": [
{ {
"key": "system.difficulty", "key": "system.difficulty",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }
@ -316,7 +316,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.reduction", "key": "system.resistance.physical.reduction",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
} }

View file

@ -238,7 +238,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.magical.resistance", "key": "system.resistance.magical.resistance",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -316,7 +316,7 @@
"changes": [ "changes": [
{ {
"key": "system.disadvantageSources", "key": "system.disadvantageSources",
"mode": 2, "type": "add",
"value": "On your next action roll.", "value": "On your next action roll.",
"priority": null "priority": null
} }

View file

@ -238,7 +238,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.attack.damage.hpDamageMultiplier", "key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -240,7 +240,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -273,7 +273,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -273,7 +273,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -273,7 +273,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -300,7 +300,7 @@
"changes": [ "changes": [
{ {
"key": "system.disadvantageSources", "key": "system.disadvantageSources",
"mode": 2, "type": "add",
"value": "On attack rolls while you're within Very Close range of the Sentinel", "value": "On attack rolls while you're within Very Close range of the Sentinel",
"priority": null "priority": null
} }

View file

@ -305,7 +305,7 @@
"changes": [ "changes": [
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 5, "type": "override",
"value": "@system.evasion / 2", "value": "@system.evasion / 2",
"priority": 10 "priority": 10
} }

View file

@ -379,7 +379,7 @@
"changes": [ "changes": [
{ {
"key": "system.difficulty", "key": "system.difficulty",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -324,7 +324,7 @@
"changes": [ "changes": [
{ {
"key": "system.difficulty", "key": "system.difficulty",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
} }
@ -387,7 +387,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -262,7 +262,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,13 +27,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.rest.shortRest.shortMoves", "key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.bonuses.rest.longRest.longMoves", "key": "system.bonuses.rest.longRest.longMoves",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Dread Visage: Rolls to intimidate hostile creatures", "value": "Dread Visage: Rolls to intimidate hostile creatures",
"priority": null "priority": null
} }

View file

@ -27,13 +27,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.rest.shortRest.longMoves", "key": "system.bonuses.rest.shortRest.longMoves",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.bonuses.rest.shortRest.shortMoves", "key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2, "type": "add",
"value": "-1", "value": "-1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.resources.hitPoints.max", "key": "system.resources.hitPoints.max",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.resources.stress.max", "key": "system.resources.stress.max",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Agility Rolls that involve balancing and climbing", "value": "Agility Rolls that involve balancing and climbing",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.damageReduction.stressDamageReduction.severe.cost", "key": "system.rules.damageReduction.stressDamageReduction.severe.cost",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,13 +27,13 @@
"changes": [ "changes": [
{ {
"key": "system.damageThresholds.major", "key": "system.damageThresholds.major",
"mode": 2, "type": "add",
"value": "@prof", "value": "@prof",
"priority": 21 "priority": 21
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "@prof", "value": "@prof",
"priority": 21 "priority": 21
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.damageReduction.stressDamageReduction.minor.cost", "key": "system.rules.damageReduction.stressDamageReduction.minor.cost",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -90,13 +90,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.dice", "key": "system.bonuses.damage.physical.dice",
"mode": 2, "type": "add",
"value": "1d6", "value": "1d6",
"priority": null "priority": null
}, },
{ {
"key": "system.bonuses.damage.magical.dice", "key": "system.bonuses.damage.magical.dice",
"mode": 2, "type": "add",
"value": "1d6", "value": "1d6",
"priority": null "priority": null
} }

View file

@ -57,7 +57,7 @@
"changes": [ "changes": [
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -62,25 +62,25 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "0", "value": "0",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "6", "value": "6",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -62,25 +62,25 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "0", "value": "0",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -65,31 +65,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "10", "value": "10",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "8", "value": "8",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.finesse.value", "key": "system.traits.finesse.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "6", "value": "6",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "finesse", "value": "finesse",
"priority": null "priority": null
} }

View file

@ -62,25 +62,25 @@
"changes": [ "changes": [
{ {
"key": "system.traits.instinct.value", "key": "system.traits.instinct.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "instinct", "value": "instinct",
"priority": null "priority": null
} }

View file

@ -49,13 +49,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.bonus", "key": "system.bonuses.damage.physical.bonus",
"mode": 2, "type": "add",
"value": "6", "value": "6",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -49,31 +49,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "8", "value": "8",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -66,31 +66,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "12", "value": "12",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.instinct.value", "key": "system.traits.instinct.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "7", "value": "7",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "instinct", "value": "instinct",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -65,31 +65,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.finesse.value", "key": "system.traits.finesse.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "11", "value": "11",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "finesse", "value": "finesse",
"priority": null "priority": null
} }

View file

@ -49,19 +49,19 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.bonus", "key": "system.bonuses.damage.physical.bonus",
"mode": 2, "type": "add",
"value": "9", "value": "9",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": 60 "priority": 60
} }

View file

@ -49,31 +49,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "10", "value": "10",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,25 +62,25 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "agility", "value": "agility",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.instinct.value", "key": "system.traits.instinct.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "6", "value": "6",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "instinct", "value": "instinct",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.finesse.value", "key": "system.traits.finesse.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "finesse", "value": "finesse",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.finesse.value", "key": "system.traits.finesse.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "finesse", "value": "finesse",
"priority": null "priority": null
} }

View file

@ -65,31 +65,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.strength.value", "key": "system.traits.strength.value",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "4", "value": "4",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "10", "value": "10",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "strength", "value": "strength",
"priority": null "priority": null
} }

View file

@ -62,31 +62,31 @@
"changes": [ "changes": [
{ {
"key": "system.traits.finesse.value", "key": "system.traits.finesse.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.evasion", "key": "system.evasion",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.diceIndex", "key": "system.rules.attack.damage.diceIndex",
"mode": 5, "type": "override",
"value": "0", "value": "0",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.damage.bonus", "key": "system.rules.attack.damage.bonus",
"mode": 5, "type": "override",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.attack.roll.trait", "key": "system.rules.attack.roll.trait",
"mode": 5, "type": "override",
"value": "finesse", "value": "finesse",
"priority": null "priority": null
} }

View file

@ -60,7 +60,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.resistance", "key": "system.resistance.physical.resistance",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }
@ -98,7 +98,7 @@
"changes": [ "changes": [
{ {
"key": "system.resistance.physical.reduction", "key": "system.resistance.physical.reduction",
"mode": 2, "type": "add",
"value": "@system.armorScore", "value": "@system.armorScore",
"priority": 21 "priority": 21
} }

View file

@ -25,13 +25,13 @@
"changes": [ "changes": [
{ {
"key": "system.damageThresholds.major", "key": "system.damageThresholds.major",
"mode": 2, "type": "add",
"value": "-2", "value": "-2",
"priority": null "priority": null
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "-2", "value": "-2",
"priority": null "priority": null
} }

View file

@ -25,13 +25,13 @@
"changes": [ "changes": [
{ {
"key": "system.damageThresholds.major", "key": "system.damageThresholds.major",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "3", "value": "3",
"priority": null "priority": null
} }

View file

@ -62,7 +62,7 @@
"changes": [ "changes": [
{ {
"key": "system.proficiency", "key": "system.proficiency",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -108,7 +108,7 @@
"changes": [ "changes": [
{ {
"key": "system.proficiency", "key": "system.proficiency",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -25,13 +25,13 @@
"changes": [ "changes": [
{ {
"key": "system.damageThresholds.major", "key": "system.damageThresholds.major",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -25,13 +25,13 @@
"changes": [ "changes": [
{ {
"key": "system.damageThresholds.major", "key": "system.damageThresholds.major",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
} }

View file

@ -24,13 +24,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.bonus", "key": "system.bonuses.damage.physical.bonus",
"mode": 2, "type": "add",
"value": "@system.levelData.level.current", "value": "@system.levelData.level.current",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.burden.ignore", "key": "system.rules.burden.ignore",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -55,7 +55,7 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.rally", "key": "system.bonuses.rally",
"mode": 2, "type": "add",
"value": "6 + min((floor(@system.levelData.level.current / 5)*2), 2)", "value": "6 + min((floor(@system.levelData.level.current / 5)*2), 2)",
"priority": null "priority": null
} }

View file

@ -28,13 +28,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.dice", "key": "system.bonuses.damage.physical.dice",
"mode": 2, "type": "add",
"value": "@tierd6", "value": "@tierd6",
"priority": null "priority": null
}, },
{ {
"key": "system.bonuses.damage.magical.dice", "key": "system.bonuses.damage.magical.dice",
"mode": 2, "type": "add",
"value": "@tierd6", "value": "@tierd6",
"priority": null "priority": null
} }

View file

@ -65,31 +65,31 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.physical.bonus", "key": "system.bonuses.damage.physical.bonus",
"mode": 2, "type": "add",
"value": "ORIGIN.@item.resource.value", "value": "ORIGIN.@item.resource.value",
"priority": null "priority": null
}, },
{ {
"key": "system.bonuses.damage.magical.bonus", "key": "system.bonuses.damage.magical.bonus",
"mode": 2, "type": "add",
"value": "ORIGIN.@item.resource.value", "value": "ORIGIN.@item.resource.value",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.damageReduction.reduceSeverity.physical", "key": "system.rules.damageReduction.reduceSeverity.physical",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.conditionImmunities.vulnerable", "key": "system.rules.conditionImmunities.vulnerable",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
}, },
{ {
"key": "system.rules.conditionImmunities.restrained", "key": "system.rules.conditionImmunities.restrained",
"mode": 5, "type": "override",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Move without being heard.", "value": "Move without being heard.",
"priority": null "priority": null
} }

View file

@ -27,19 +27,19 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Consort with nobles", "value": "Consort with nobles",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Negotiate prices", "value": "Negotiate prices",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Leverage your reputation to get what you want", "value": "Leverage your reputation to get what you want",
"priority": null "priority": null
} }

View file

@ -27,19 +27,19 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Negotiate with criminals", "value": "Negotiate with criminals",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Detect lies", "value": "Detect lies",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Find a safe place to hide", "value": "Find a safe place to hide",
"priority": null "priority": null
} }

View file

@ -27,19 +27,19 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Traverse dangerous cliffs and ledges", "value": "Traverse dangerous cliffs and ledges",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Navigate harsh environment", "value": "Navigate harsh environment",
"priority": null "priority": null
}, },
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "Use your survival knowledge", "value": "Use your survival knowledge",
"priority": null "priority": null
} }

View file

@ -27,7 +27,7 @@
"changes": [ "changes": [
{ {
"key": "system.advantageSources", "key": "system.advantageSources",
"mode": 2, "type": "add",
"value": "History, culture, or politics of a prominent person or place", "value": "History, culture, or politics of a prominent person or place",
"priority": null "priority": null
} }

View file

@ -68,7 +68,7 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.roll.spellcast.bonus", "key": "system.bonuses.roll.spellcast.bonus",
"mode": 2, "type": "add",
"value": "+1", "value": "+1",
"priority": null "priority": null
} }

View file

@ -27,13 +27,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.roll.attack.bonus", "key": "system.bonuses.roll.attack.bonus",
"mode": 2, "type": "add",
"value": "2", "value": "2",
"priority": null "priority": null
}, },
{ {
"key": "system.damageThresholds.severe", "key": "system.damageThresholds.severe",
"mode": 2, "type": "add",
"value": "4", "value": "4",
"priority": null "priority": null
} }

View file

@ -35,13 +35,13 @@
"changes": [ "changes": [
{ {
"key": "system.bonuses.damage.primaryWeapon.bonus", "key": "system.bonuses.damage.primaryWeapon.bonus",
"mode": 2, "type": "add",
"value": "@system.traits.strength.value", "value": "@system.traits.strength.value",
"priority": 21 "priority": 21
}, },
{ {
"key": "system.bonuses.damage.secondaryWeapon.bonus", "key": "system.bonuses.damage.secondaryWeapon.bonus",
"mode": 2, "type": "add",
"value": "@system.traits.strength.value", "value": "@system.traits.strength.value",
"priority": 21 "priority": 21
} }

View file

@ -88,7 +88,7 @@
"changes": [ "changes": [
{ {
"key": "system.traits.presence.value", "key": "system.traits.presence.value",
"mode": 2, "type": "add",
"value": "@system.traits.strength.value", "value": "@system.traits.strength.value",
"priority": null "priority": null
} }

View file

@ -60,7 +60,7 @@
"changes": [ "changes": [
{ {
"key": "system.traits.agility.value", "key": "system.traits.agility.value",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

View file

@ -26,7 +26,7 @@
"changes": [ "changes": [
{ {
"key": "system.rules.damageReduction.maxArmorMarked.stressExtra", "key": "system.rules.damageReduction.maxArmorMarked.stressExtra",
"mode": 2, "type": "add",
"value": "1", "value": "1",
"priority": null "priority": null
} }

Some files were not shown because too many files have changed in this diff Show more