Merge branch 'main' into v14

This commit is contained in:
WBHarry 2026-07-11 01:47:54 +02:00
commit 54461a0d68
307 changed files with 2132 additions and 3962 deletions

View file

@ -390,7 +390,7 @@ const updateActorsRangeDependentEffects = async token => {
).rangeMeasurement;
for (let effect of token.actor?.allApplicableEffects() ?? []) {
if (!effect.system.rangeDependence?.enabled) continue;
if (!effect.system.rangeDependence) continue;
const { target, range, type } = effect.system.rangeDependence;
// If there are no targets, assume false. Otherwise, start with the effect enabled.

View file

@ -167,9 +167,7 @@
},
"ACTIVEEFFECT": {
"Config": {
"rangeDependence": {
"title": "Range Dependence"
},
"rangeDependence": { "title": "Range Dependence" },
"stacking": { "title": "Stacking" },
"targetDispositions": "Affected Dispositions"
},
@ -774,7 +772,7 @@
"removeRoll": "Remove Roll",
"resultsHint": "Results will appear when characters roll",
"selectLeaderHint": "Select one Character to be the leader",
"selectParticipantsHint": "Select one Character to be the leader",
"selectParticipantsHint": "Select all Characters who will participate in the roll",
"startGroupRoll": "Start Group Roll",
"title": "Group Roll"
},
@ -3235,7 +3233,7 @@
"beastformToManyAdvantages": "You cannot select any more advantages.",
"beastformToManyFeatures": "You cannot select any more features.",
"beastformEquipWeapon": "You cannot use weapons while in a Beastform.",
"loadoutMaxReached": "You've reached maximum loadout. Move atleast one domain card to the vault, or increase the limit in homebrew settings if desired.",
"loadoutMaxReached": "You've reached the maximum loadout size. To add more, move at least one domain card to the vault.",
"domainMaxReached": "You've reached the maximum domains for the class. Increase the limit in homebrew settings if desired.",
"insufficientResources": "You don't have enough resources to use that action.",
"actionNoUsesRemaining": "That action doesn't have remaining uses.",

View file

@ -1,7 +1,7 @@
import { ResourceUpdateMap } from '../../data/action/baseAction.mjs';
import { shouldUseHopeFearAutomation } from '../../helpers/utils.mjs';
import { emitGMUpdate, GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs';
import Party from '../sheets/actors/party.mjs';
import PartySheet from '../sheets/actors/party.mjs';
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
@ -11,7 +11,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat
this.party = party;
this.partyMembers = party.system.partyMembers
.filter(x => Party.DICE_ROLL_ACTOR_TYPES.includes(x.type))
.filter(x => PartySheet.DICE_ROLL_ACTOR_TYPES.includes(x.type))
.map(member => ({
...member.toObject(),
uuid: member.uuid,

View file

@ -2,7 +2,7 @@ import { ResourceUpdateMap } from '../../data/action/baseAction.mjs';
import { MemberData } from '../../data/tagTeamData.mjs';
import { getCritDamageBonus, shouldUseHopeFearAutomation } from '../../helpers/utils.mjs';
import { emitGMUpdate, GMUpdateEvent, RefreshType, socketEvent } from '../../systemRegistration/socket.mjs';
import Party from '../sheets/actors/party.mjs';
import PartySheet from '../sheets/actors/party.mjs';
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
@ -13,7 +13,7 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
this.usesTagTeamHopeCost = true;
this.party = party;
this.partyMembers = party.system.partyMembers
.filter(x => Party.DICE_ROLL_ACTOR_TYPES.includes(x.type))
.filter(x => PartySheet.DICE_ROLL_ACTOR_TYPES.includes(x.type))
.map(member => ({
...member.toObject(),
uuid: member.uuid,
@ -208,6 +208,16 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
const rollOptions = [];
const damageRollOptions = [];
if (actor?.system.usedUnarmed) {
damageRollOptions.push({
value: actor.system.attack.uuid,
label: actor.system.usedUnarmed.name,
group: actor.name,
baseAction: actor.system.attack
});
}
for (const item of actor?.items ?? []) {
if (!item.system.metadata.hasActions) continue;
const actions = [...item.system.actions, ...(item.system.attack ? [item.system.attack] : [])];

View file

@ -155,6 +155,10 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac
.querySelector('.stacking-change-checkbox')
?.addEventListener('change', this.stackingChangeToggle.bind(this));
htmlElement
.querySelector('.range-dependence-change-checkbox')
?.addEventListener('change', this.rangeDependenceChangeToggle.bind(this));
htmlElement
.querySelector('.armor-change-checkbox')
?.addEventListener('change', this.armorChangeToggle.bind(this));
@ -224,6 +228,20 @@ export default class DhActiveEffectConfig extends foundry.applications.sheets.Ac
return this.submit({ updateData: { system: systemData } });
}
rangeDependenceChangeToggle(event) {
const rangeFields = this.document.system.schema.fields.rangeDependence.fields;
const systemData = {
rangeDependence: event.target.checked
? _replace({
type: rangeFields.type.initial,
target: rangeFields.target.initial,
range: rangeFields.range.initial
})
: null
};
return this.submit({ updateData: { system: systemData } });
}
armorChangeToggle(event) {
if (event.target.checked) {
this.addArmorChange();

View file

@ -1,8 +1,18 @@
import DhCompanion from '../../../data/actor/companion.mjs';
import DhParty from '../../../data/actor/party.mjs';
import DhpActor from '../../../documents/actor.mjs';
declare module './companion.mjs' {
export default interface DhCompanionSheet {
actor: DhpActor<DhCompanion>;
document: DhpActor<DhCompanion>;
}
}
declare module './party.mjs' {
export default interface PartySheet {
actor: DhpActor<DhParty>;
document: DhpActor<DhParty>;
}
}

View file

@ -914,7 +914,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
const doc = await getDocFromElement(button);
const { available } = this.document.system.loadoutSlot;
if (doc.system.inVault && !available && !doc.system.loadoutIgnore) {
return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.loadoutMaxReached'));
return ui.notifications.warn('DAGGERHEART.UI.Notifications.loadoutMaxReached', { localize: true });
}
await doc?.update({ 'system.inVault': !doc.system.inVault });
@ -1206,10 +1206,22 @@ export default class CharacterSheet extends DHBaseActorSheet {
if (!confirmed) return;
}
if (this.document.uuid === item.parent?.uuid) {
// Check for same actor drag/drop attempts
const isSameActor = this.document.uuid === item.parent?.uuid;
const loadoutFieldset = event.target.closest('[data-in-vault]');
const vaulting = loadoutFieldset?.dataset.inVault === 'true';
if (isSameActor && loadoutFieldset && item.type === 'domainCard' && vaulting !== item.system.inVault) {
// This is likely an attempt to vault or unvault an item
const { available } = this.document.system.loadoutSlot;
if (!vaulting && !available && !item.system.loadoutIgnore) {
return ui.notifications.warn('DAGGERHEART.UI.Notifications.loadoutMaxReached', { localize: true });
}
return item.update({ 'system.inVault': vaulting });
} else if (isSameActor) {
return super._onDropItem(event, item);
}
// Handle beastforms
if (item.type === 'beastform') {
if (this.document.effects.find(x => x.type === 'beastform')) {
return ui.notifications.warn(

View file

@ -6,7 +6,9 @@ import DaggerheartMenu from '../../sidebar/tabs/daggerheartMenu.mjs';
import { socketEvent } from '../../../systemRegistration/socket.mjs';
import DhpActor from '../../../documents/actor.mjs';
export default class Party extends DHBaseActorSheet {
/**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */
export default class PartySheet extends DHBaseActorSheet {
constructor(options) {
super(options);
@ -24,17 +26,17 @@ export default class Party extends DHBaseActorSheet {
resizable: true
},
actions: {
openDocument: Party.#openDocument,
deletePartyMember: Party.#deletePartyMember,
toggleHope: Party.#toggleHope,
toggleHitPoints: Party.#toggleHitPoints,
toggleStress: Party.#toggleStress,
toggleArmorSlot: Party.#toggleArmorSlot,
tempBrowser: Party.#tempBrowser,
refeshActions: Party.#refeshActions,
triggerRest: Party.#triggerRest,
tagTeamRoll: Party.#tagTeamRoll,
groupRoll: Party.#groupRoll
openDocument: PartySheet.#onOpenDocument,
deletePartyMember: PartySheet.#onDeletePartyMember,
toggleHope: PartySheet.#onToggleHope,
toggleHitPoints: PartySheet.#onToggleHitPoints,
toggleStress: PartySheet.#onToggleStress,
toggleArmorSlot: PartySheet.#onToggleArmorSlot,
tempBrowser: PartySheet.#onTempBrowser,
refreshActions: PartySheet.#onRefreshActions,
triggerRest: PartySheet.#onTriggerRest,
tagTeamRoll: PartySheet.#onTagTeamRoll,
groupRoll: PartySheet.#onGroupRoll
},
dragDrop: [{ dragSelector: '[data-item-id]', dropSelector: null }]
};
@ -72,6 +74,23 @@ export default class Party extends DHBaseActorSheet {
this._createSearchFilter();
}
/** @inheritdoc */
_toggleDisabled(disabled) {
// Overriden to only disable text inputs by default if the user is a member
const isMember = this.actor.system.partyMembers.some(
m => m.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)
);
if (!isMember) return super._toggleDisabled(disabled);
const form = this.form;
for (const input of form.querySelectorAll('input:not([type=search]), .editor.prosemirror')) {
input.disabled = disabled;
}
for (const element of form.querySelectorAll('.input[contenteditable]')) {
element.classList.toggle('disabled', disabled);
}
}
/* -------------------------------------------- */
/* Prepare Context */
/* -------------------------------------------- */
@ -199,7 +218,15 @@ export default class Party extends DHBaseActorSheet {
}
}
static async #openDocument(_, target) {
/* -------------------------------------------- */
/* Event handlers */
/* -------------------------------------------- */
/**
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onOpenDocument(_, target) {
const uuid = target.dataset.uuid;
const document = await foundry.utils.fromUuid(uuid);
document?.sheet?.render(true);
@ -207,9 +234,10 @@ export default class Party extends DHBaseActorSheet {
/**
* Toggles a hope resource value.
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #toggleHope(_, target) {
static async #onToggleHope(_, target) {
const hopeValue = Number.parseInt(target.dataset.value);
const actor = await foundry.utils.fromUuid(target.dataset.actorId);
const newValue = actor.system.resources.hope.value >= hopeValue ? hopeValue - 1 : hopeValue;
@ -219,9 +247,10 @@ export default class Party extends DHBaseActorSheet {
/**
* Toggles a hp resource value.
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #toggleHitPoints(_, target) {
static async #onToggleHitPoints(_, target) {
const hitPointsValue = Number.parseInt(target.dataset.value);
const actor = await foundry.utils.fromUuid(target.dataset.actorId);
const newValue = actor.system.resources.hitPoints.value >= hitPointsValue ? hitPointsValue - 1 : hitPointsValue;
@ -231,9 +260,10 @@ export default class Party extends DHBaseActorSheet {
/**
* Toggles a stress resource value.
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #toggleStress(_, target) {
static async #onToggleStress(_, target) {
const stressValue = Number.parseInt(target.dataset.value);
const actor = await foundry.utils.fromUuid(target.dataset.actorId);
const newValue = actor.system.resources.stress.value >= stressValue ? stressValue - 1 : stressValue;
@ -243,9 +273,10 @@ export default class Party extends DHBaseActorSheet {
/**
* Toggles a armor slot resource value.
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #toggleArmorSlot(_, target) {
static async #onToggleArmorSlot(_, target) {
const actor = await foundry.utils.fromUuid(target.dataset.actorId);
const { value, max } = actor.system.armorScore;
const inputValue = Number.parseInt(target.dataset.value);
@ -258,12 +289,19 @@ export default class Party extends DHBaseActorSheet {
/**
* Opens Compedium Browser
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #tempBrowser(_, target) {
static async #onTempBrowser(_, target) {
new ItemBrowser().render({ force: true });
}
static async #refeshActions() {
/**
* @todo Is this unused?
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onRefreshActions() {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: {
title: 'New Section',
@ -281,7 +319,11 @@ export default class Party extends DHBaseActorSheet {
if (!confirmed) return;
}
static async #triggerRest(_, button) {
/**
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onTriggerRest(_, button) {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: {
title: game.i18n.localize(`DAGGERHEART.APPLICATIONS.Downtime.${button.dataset.type}.title`),
@ -304,6 +346,30 @@ export default class Party extends DHBaseActorSheet {
});
}
/**
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onDeletePartyMember(event, target) {
const doc = await foundry.utils.fromUuid(target.closest('[data-uuid]')?.dataset.uuid);
if (!event.shiftKey) {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: {
title: game.i18n.format('DAGGERHEART.ACTORS.Party.RemoveConfirmation.title', {
name: doc.name
})
},
content: game.i18n.format('DAGGERHEART.ACTORS.Party.RemoveConfirmation.text', { name: doc.name })
});
if (!confirmed) return;
}
const currentMembers = this.document.system.partyMembers.map(x => x.uuid);
const newMembersList = currentMembers.filter(uuid => uuid !== doc.uuid);
await this.document.update({ 'system.partyMembers': newMembersList });
}
static async downtimeMoveQuery({ actorId, downtimeType }) {
const actor = await foundry.utils.fromUuid(actorId);
if (!actor || !actor?.isOwner) return;
@ -312,11 +378,19 @@ export default class Party extends DHBaseActorSheet {
});
}
static async #tagTeamRoll() {
/**
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onTagTeamRoll() {
new game.system.api.applications.dialogs.TagTeamDialog(this.document).render({ force: true });
}
static async #groupRoll(_params) {
/**
* @this PartySheet
* @type {ApplicationClickAction}
*/
static async #onGroupRoll(_params) {
new game.system.api.applications.dialogs.GroupRollDialog(this.document).render({ force: true });
}
@ -460,11 +534,10 @@ export default class Party extends DHBaseActorSheet {
}
}
/* -------------------------------------------- */
/** @inheritdoc */
async _onDropActor(event, document) {
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
if (document instanceof DhpActor && Party.ALLOWED_ACTOR_TYPES.includes(document.type)) {
if (document instanceof DhpActor && PartySheet.ALLOWED_ACTOR_TYPES.includes(document.type)) {
const currentMembers = this.document.system.partyMembers.map(x => x.uuid);
if (currentMembers.includes(data.uuid)) {
return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.duplicateCharacter'));
@ -477,24 +550,4 @@ export default class Party extends DHBaseActorSheet {
return null;
}
static async #deletePartyMember(event, target) {
const doc = await foundry.utils.fromUuid(target.closest('[data-uuid]')?.dataset.uuid);
if (!event.shiftKey) {
const confirmed = await foundry.applications.api.DialogV2.confirm({
window: {
title: game.i18n.format('DAGGERHEART.ACTORS.Party.RemoveConfirmation.title', {
name: doc.name
})
},
content: game.i18n.format('DAGGERHEART.ACTORS.Party.RemoveConfirmation.text', { name: doc.name })
});
if (!confirmed) return;
}
const currentMembers = this.document.system.partyMembers.map(x => x.uuid);
const newMembersList = currentMembers.filter(uuid => uuid !== doc.uuid);
await this.document.update({ 'system.partyMembers': newMembersList });
}
}

View file

@ -791,14 +791,14 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.doubleDuty.effects.doubleDuty.description',
img: 'icons/skills/melee/sword-shield-stylized-white.webp',
changes: [
{
key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2,
value: '1'
}
],
system: {
changes: [
{
key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2,
value: '1'
}
],
rangeDependence: {
enabled: true,
range: 'melee',
@ -1103,14 +1103,14 @@ export const weaponFeatures = {
name: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.name',
description: 'DAGGERHEART.CONFIG.WeaponFeature.paired.effects.paired.description',
img: 'icons/skills/melee/weapons-crossed-swords-yellow-teal.webp',
changes: [
{
key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2,
value: 'ITEM.@system.tier + 1'
}
],
system: {
changes: [
{
key: 'system.bonuses.damage.primaryWeapon.bonus',
mode: 2,
value: 'ITEM.@system.tier + 1'
}
],
rangeDependence: {
enabled: true,
range: 'melee',

View file

@ -57,11 +57,6 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
description: new fields.HTMLField({ label: 'DAGGERHEART.GENERAL.description' })
}),
rangeDependence: new fields.SchemaField({
enabled: new fields.BooleanField({
required: true,
initial: false,
label: 'DAGGERHEART.GENERAL.enabled'
}),
type: new fields.StringField({
required: true,
choices: CONFIG.DH.GENERAL.rangeInclusion,
@ -80,7 +75,7 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
initial: CONFIG.DH.GENERAL.range.melee.id,
label: 'DAGGERHEART.GENERAL.range'
})
}),
}, { nullable: true, initial: null }),
stacking: new fields.SchemaField(
{
value: new fields.NumberField({
@ -146,14 +141,8 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
description: '',
transfer: options.transfer,
statuses: [],
changes: [],
system: {
rangeDependence: {
enabled: false,
type: CONFIG.DH.GENERAL.rangeInclusion.withinRange.id,
target: CONFIG.DH.GENERAL.otherTargetTypes.hostile.id,
range: CONFIG.DH.GENERAL.range.melee.id
}
changes: []
}
};
}
@ -185,4 +174,12 @@ export default class BaseEffect extends foundry.data.ActiveEffectTypeDataModel {
if (this.parent.actor && options.scrollingTextData)
this.parent.actor.queueScrollText(options.scrollingTextData);
}
static migrateData(source) {
if (source.rangeDependence?.enabled === false) {
source.rangeDependence = null;
}
return super.migrateData(source);
}
}

View file

@ -8,7 +8,8 @@ export default class DHArmor extends AttachableItem {
type: 'armor',
hasDescription: true,
isInventoryItem: true,
hasActions: true
hasActions: true,
hasResource: true
});
}

View file

@ -622,22 +622,30 @@ export default class DhpActor extends Actor {
return rollData;
}
#canReduceDamage(hpDamage, type) {
const { stressDamageReduction, disabledArmor } = this.system.rules.damageReduction;
#canReduceDamage(hpDamage, types) {
const { stressDamageReduction, disabledArmor, reduceSeverity, thresholdImmunities } =
this.system.rules.damageReduction;
if (disabledArmor) return false;
const availableStress = this.system.resources.stress.max - this.system.resources.stress.value;
const canUseArmor =
this.system.armorScore.value < this.system.armorScore.max &&
type.every(t => this.system.armorApplicableDamageTypes[t] === true);
types.every(t => this.system.armorApplicableDamageTypes[t] === true);
const canUseStress = Object.keys(stressDamageReduction).reduce((acc, x) => {
const rule = stressDamageReduction[x];
if (damageKeyToNumber(x) <= hpDamage) return acc || (rule.enabled && availableStress >= rule.cost);
return acc;
}, false);
return canUseArmor || canUseStress;
const hasReduceSeverity = types.some(t => reduceSeverity[t]);
const hasThresholdImmunity = Object.entries(thresholdImmunities)
.filter(([key, value]) => Boolean(value) && damageKeyToNumber(key) === hpDamage)
.length;
return canUseArmor || canUseStress || hasReduceSeverity || hasThresholdImmunity;
}
async takeDamage(damages, isDirect = false) {

View file

@ -1,5 +1,5 @@
import DamageReductionDialog from '../applications/dialogs/damageReductionDialog.mjs';
import Party from '../applications/sheets/actors/party.mjs';
import PartySheet from '../applications/sheets/actors/party.mjs';
export function handleSocketEvent({ action = null, data = {} } = {}) {
switch (action) {
@ -16,7 +16,7 @@ export function handleSocketEvent({ action = null, data = {} } = {}) {
Hooks.call(socketEvent.Refresh, data);
break;
case socketEvent.DowntimeTrigger:
Party.downtimeMoveQuery(data);
PartySheet.downtimeMoveQuery(data);
break;
case socketEvent.TagTeamStart:
Hooks.callAll(CONFIG.DH.HOOKS.hooksConfig.tagTeamStart, data);

View file

@ -403,12 +403,6 @@
"_id": "9PsnogEPsp1OOK64",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "act"

View file

@ -322,32 +322,23 @@
"_id": "ia0NUIOxE3RHb45P",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
]
},
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
],
"disabled": false,
"duration": {
"startTime": null,
"combat": null,
"seconds": null,
"rounds": null,
"turns": null,
"startRound": null,
"startTurn": null
"value": null,
"units": "seconds",
"expiry": null,
"expired": false
},
"description": "<p>When the Flickerfl y makes an attack, the targets Evasion is halved against the attack.</p>",
"disabled": false,
"description": "<p>When the Flickerfly makes an attack, the targets Evasion is halved against the attack.</p>",
"tint": "#ffffff",
"statuses": [],
"sort": 0,

View file

@ -491,12 +491,6 @@
"_id": "KGdf2eqcXkdigg0u",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -325,21 +325,15 @@
"_id": "wGuxOLokMqdxVSOo",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "Agility Rolls",
"priority": null
}
]
},
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "Agility Rolls",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -472,14 +472,8 @@
"disabled": true,
"_id": "bq8hTzQoCXmA3xad",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -270,12 +270,6 @@
"_id": "2iBVUGHtGW3I9VIj",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",
@ -341,23 +335,17 @@
"name": "Out of Nowhere",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "On attacks if they are Hidden.",
"priority": null
}
]
},
"_id": "qT5nh7OcQ6aGdiWS",
"img": "icons/magic/perception/shadow-stealth-eyes-purple.webp",
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "On attacks if they are Hidden.",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -452,12 +440,6 @@
"_id": "yP4ot8VqS56RnxnE",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": []
},
"disabled": false,

View file

@ -680,12 +680,6 @@
"_id": "9NQcCXMhjyBReJRd",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",
@ -927,12 +921,6 @@
"_id": "S7kJlhnV8Nexzi8l",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -363,12 +363,6 @@
"_id": "U50Ccm9emMqAxma6",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -371,12 +371,6 @@
"_id": "LmzztuktRkwOCy1a",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -447,12 +447,6 @@
"_id": "CjMrSdL6kgD8mKRQ",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary"

View file

@ -232,23 +232,17 @@
"name": "Levitation",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.conditionImmunities.restrained",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "k6iaQVfMZhrpwYQj",
"img": "icons/magic/air/fog-gas-smoke-blue-gray.webp",
"changes": [
{
"key": "system.rules.conditionImmunities.restrained",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -301,23 +295,17 @@
"name": "Wards",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.magical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "4rj6PM0AGrrlbxSc",
"img": "icons/magic/defensive/barrier-shield-dome-blue-purple.webp",
"changes": [
{
"key": "system.resistance.magical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -459,21 +459,15 @@
"_id": "xkDIZk9u2ipDHvOL",
"img": "icons/creatures/magical/construct-golem-stone-blue.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.bonuses.damage.physical.bonus",
"mode": 2,
"value": "10",
"priority": null
}
]
},
"changes": [
{
"key": "system.bonuses.damage.physical.bonus",
"mode": 2,
"value": "10",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,

View file

@ -315,12 +315,6 @@
"_id": "blcRqns0PHqiuPac",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -331,12 +331,6 @@
"_id": "YNMhgBZW8ndrCjIp",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "scene"

View file

@ -415,12 +415,6 @@
"_id": "U9lWz1LgeAiK5L85",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.resistance.magical.resistance",
@ -546,12 +540,6 @@
"_id": "lNH6srSPyEprXZ4o",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -379,12 +379,6 @@
"_id": "LwWxRz7FTMA80VdA",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary"

View file

@ -410,12 +410,6 @@
"_id": "F3E7fiz01AbF2kr5",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -270,23 +270,17 @@
"name": "Numbers Must Go Up",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.bonuses.roll.attack.bonus",
"mode": 2,
"value": "ITEM.@system.resource.value",
"priority": 21
}
]
},
"_id": "iLeiOlUtWvYsgbDQ",
"img": "icons/magic/control/fear-fright-monster-grin-red-orange.webp",
"changes": [
{
"key": "system.bonuses.roll.attack.bonus",
"mode": 2,
"value": "ITEM.@system.resource.value",
"priority": 21
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -238,23 +238,17 @@
"name": "Depths Of Despair",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
]
},
"_id": "nofxm1vGZ2TmceA2",
"img": "icons/magic/death/skull-horned-worn-fire-blue.webp",
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,
@ -356,12 +350,6 @@
"_id": "6WSx03mFbpbPWnOI",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.rules.dualityRoll.defaultHopeDice",

View file

@ -319,12 +319,6 @@
"_id": "gFeHLGgeRoDdd3VG",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.rules.dualityRoll.defaultFearDice",

View file

@ -440,14 +440,8 @@
"disabled": true,
"_id": "dPZ7PwvTERjtG92P",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -238,12 +238,6 @@
"name": "Flying",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.difficulty",

View file

@ -430,12 +430,6 @@
"_id": "YNKHEFQ4ucGr4Rmc",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -358,14 +358,8 @@
"disabled": true,
"_id": "xoal60Ed3Ih7saBJ",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -240,23 +240,17 @@
"name": "Warped Fortitude",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "3QLH2EEtcUEZolFz",
"img": "icons/creatures/magical/humanoid-silhouette-glowing-pink.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -309,23 +303,17 @@
"name": "Overwhelm",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
]
},
"_id": "eGB9G0ljYCcdGbOx",
"img": "icons/skills/melee/strike-slashes-orange.webp",
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,

View file

@ -388,12 +388,6 @@
"_id": "Q99saHj6NOY2PSXf",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",
@ -596,12 +590,6 @@
"_id": "pWDg0MADoohKu40O",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -656,12 +656,6 @@
"vulnerable"
],
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"description": "",

View file

@ -347,12 +347,6 @@
"_id": "vb1sZCOLwDNLsr3j",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -265,23 +265,17 @@
"name": "Flying",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "3",
"priority": null
}
]
},
"_id": "odAyKY0BSAkcO3Dd",
"img": "icons/creatures/birds/raptor-hawk-flying.webp",
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "3",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -425,12 +419,6 @@
"_id": "m6qqQZxukDPVcGdQ",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "act"
@ -579,14 +567,8 @@
"_id": "Sd34xywRqiF5w9sX",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -269,21 +269,15 @@
"_id": "aATxfjeOzUYtKuU6",
"img": "icons/commodities/biological/wing-insect-green.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "2",
"priority": null
}
]
},
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "2",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,
@ -385,14 +379,8 @@
"disabled": true,
"_id": "dQgcYTz5vmV25Y6G",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -433,12 +433,6 @@
"_id": "oILkLJlGNZl7KI1R",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "shortRest"

View file

@ -597,12 +597,6 @@
"_id": "Mchd23xNQ4nSWw9X",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": []
},
"disabled": false,

View file

@ -330,12 +330,6 @@
"_id": "bYBrgiSwHwYfQyjn",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.rules.conditionImmunities.hidden",

View file

@ -340,23 +340,17 @@
"name": "Immovable Object",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.reduction",
"mode": 2,
"value": "7",
"priority": null
}
]
},
"_id": "7V7qMq9in3AArwiM",
"img": "icons/magic/defensive/shield-barrier-glowing-triangle-green.webp",
"changes": [
{
"key": "system.resistance.physical.reduction",
"mode": 2,
"value": "7",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -510,12 +504,6 @@
"_id": "38MUzfbH64EMLVse",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -323,21 +323,15 @@
"_id": "WYqjt1tVqPEdVV5l",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "Your next action",
"priority": null
}
]
},
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "Your next action",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -462,12 +456,6 @@
"_id": "X8NF2OB23mSpDvlx",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -460,12 +460,6 @@
"_id": "yk5kR5OVLCgDWfgY",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -234,23 +234,17 @@
"name": "Punish the Guilty",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
]
},
"_id": "ID85zoIa5GfhNMti",
"img": "icons/magic/control/buff-flight-wings-runes-red-yellow.webp",
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,

View file

@ -386,12 +386,6 @@
"_id": "O8G0oOf9f3qzNOAT",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -429,12 +429,6 @@
"_id": "EwZ8owroJxFpg81e",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -510,12 +510,6 @@
"_id": "iBJ3YhEkVsGKEIVk",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.resistance.magical.immunity",

View file

@ -273,12 +273,6 @@
"_id": "ihy3kvEGSOEKdNfT",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary"

View file

@ -329,12 +329,6 @@
"_id": "d7sB1Qa1kJMnglqu",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.rules.attack.damage.hpDamageTakenMultiplier",

View file

@ -375,21 +375,15 @@
"_id": "w5VTwlHmUjl8XCQ4",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Attacks made while Hidden",
"priority": null
}
]
},
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Attacks made while Hidden",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -346,21 +346,15 @@
"_id": "pZUEkMkCus4U7h8W",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
]
},
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -250,23 +250,17 @@
"name": "Chevalier",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "2",
"priority": null
}
]
},
"_id": "w8wLcSsTiTU3mS7e",
"img": "icons/environment/people/cavalry-heavy.webp",
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "2",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -319,23 +313,17 @@
"name": "Heavily Armored",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.reduction",
"mode": 2,
"value": "3",
"priority": null
}
]
},
"_id": "xZjvrNRRjskY3n3j",
"img": "icons/equipment/chest/breastplate-cuirass-steel-grey.webp",
"changes": [
{
"key": "system.resistance.physical.reduction",
"mode": 2,
"value": "3",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -378,12 +378,6 @@
"_id": "Xes6ZIE01CCN67KF",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -402,12 +402,6 @@
"_id": "zMut1PRphlwE0xOa",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -235,21 +235,15 @@
"_id": "vwc93gtzFoFZj4XT",
"img": "icons/magic/defensive/shield-barrier-flaming-diamond-blue.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.magical.resistance",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.resistance.magical.resistance",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -383,12 +377,6 @@
"_id": "KIyV2eXDmmymXY5y",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "shortRest"

View file

@ -447,12 +447,6 @@
"_id": "YznseQP43jNrk07h",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "scene"

View file

@ -394,12 +394,6 @@
"_id": "3PY5KIG6d3dr3dty",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "any",
"range": "self"
},
"changes": [
{
"key": "system.resistance.physical.resistance",

View file

@ -313,21 +313,15 @@
"_id": "rpkjVdlJYI5dB99B",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "On your next action roll.",
"priority": null
}
]
},
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "On your next action roll.",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -445,12 +439,6 @@
"_id": "edEZER9ImWicMwRb",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "scene"

View file

@ -446,12 +446,6 @@
"_id": "Q5eeh0B6qaXFS1Ck",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "shortRest",

View file

@ -337,14 +337,8 @@
"disabled": true,
"_id": "OU05YZwFQffawtna",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -404,12 +404,6 @@
"_id": "9UBLk9M87VIUziAQ",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -411,12 +411,6 @@
"_id": "xrm5786ckKbMYHjn",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -235,23 +235,17 @@
"name": "Opportunist",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
]
},
"_id": "O03vYbyNLO3YPZGo",
"img": "icons/skills/targeting/crosshair-triple-strike-orange.webp",
"changes": [
{
"key": "system.rules.attack.damage.hpDamageMultiplier",
"mode": 5,
"value": "2",
"priority": null
}
],
"disabled": true,
"duration": {
"startTime": null,

View file

@ -237,21 +237,15 @@
"_id": "zTepuF1Z5OObQdSi",
"img": "icons/magic/death/bones-crossed-orange.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -270,23 +270,17 @@
"name": "Ghost",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "xNkkl7nwKFkiB9Rv",
"img": "icons/magic/death/undead-ghost-scream-teal.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -270,23 +270,17 @@
"name": "Ghost",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "kZhvwDvfcYQ10reO",
"img": "icons/magic/death/undead-ghost-scream-teal.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -270,23 +270,17 @@
"name": "Ghost",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "QDXyAMk33kJGe6hU",
"img": "icons/magic/death/undead-ghost-scream-teal.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -352,12 +352,6 @@
"_id": "6UgMuuJ8ZygbCsDh",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary"

View file

@ -278,14 +278,8 @@
"disabled": true,
"_id": "FOV6AzngiR0PZyuN",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -489,14 +489,8 @@
"_id": "xyXPmPIOtqXYF1TJ",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -421,14 +421,8 @@
"_id": "PdkhaTw2j15KJwBf",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"disabled": false,
"duration": {
"startTime": null,
@ -473,14 +467,8 @@
"disabled": true,
"_id": "ki4vrzrFcEYtGeJu",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -323,12 +323,6 @@
"_id": "6TZlstmWJPbeoL7i",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -297,21 +297,15 @@
"_id": "Fo5bLYlmYGtQFAGg",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "On attack rolls while you're within Very Close range of the Sentinel",
"priority": null
}
]
},
"changes": [
{
"key": "system.disadvantageSources",
"mode": 2,
"value": "On attack rolls while you're within Very Close range of the Sentinel",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -302,21 +302,15 @@
"_id": "yQ85C0JHRG1pwu8a",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
]
},
"changes": [
{
"key": "system.evasion",
"mode": 5,
"value": "@system.evasion / 2",
"priority": 10
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -376,23 +376,17 @@
"name": "Injured Wings",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"_id": "zCi90lgFAaA7yrJG",
"img": "icons/commodities/biological/wing-green.webp",
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -873,12 +867,6 @@
"_id": "YUjdwrEZ4zn7WR9X",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -734,12 +734,6 @@
"_id": "xmzA6NC9zrulhzQs",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -321,23 +321,17 @@
"name": "Flying",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "3",
"priority": null
}
]
},
"_id": "8o8yG73ZfrZ3hb5i",
"img": "icons/commodities/biological/wing-green.webp",
"changes": [
{
"key": "system.difficulty",
"mode": 2,
"value": "3",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -390,23 +384,17 @@
"name": "Obsidian Scales",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "Jr9SlkRnkroulYhy",
"img": "icons/commodities/leather/scale-chitin-grey.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -551,12 +539,6 @@
"_id": "qtIaAZDW8QsjILgb",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": []
},
"disabled": false,

View file

@ -319,12 +319,6 @@
"_id": "j2jYmYbtWXvq32yX",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -362,12 +362,6 @@
"_id": "k8LzBWRZo6VPqvpH",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",

View file

@ -500,12 +500,6 @@
"_id": "g9bUvmw3jet6T99e",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": []
},
"disabled": false,
@ -634,12 +628,6 @@
"_id": "40cFHuNdEvbUZ9rs",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary",
@ -768,12 +756,6 @@
"_id": "1JlRxa07i8T1a9x6",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.disadvantageSources",

View file

@ -259,23 +259,17 @@
"name": "Unyielding",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"_id": "D1lCoe9WVr6vYuD9",
"img": "icons/magic/defensive/shield-barrier-blue.webp",
"changes": [
{
"key": "system.resistance.physical.resistance",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,
@ -434,14 +428,8 @@
"disabled": true,
"_id": "9D6SteWlhbfMPhvt",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -309,14 +309,8 @@
"disabled": true,
"_id": "aWWZTlNS9zYoUay7",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": []
},
"changes": [],
"duration": {
"startTime": 0,
"combat": null

View file

@ -24,27 +24,21 @@
"_id": "LqQvZJJLNMnFkt1D",
"img": "icons/magic/perception/orb-crystal-ball-scrying-blue.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2,
"value": "1",
"priority": null
},
{
"key": "system.bonuses.rest.longRest.longMoves",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2,
"value": "1",
"priority": null
},
{
"key": "system.bonuses.rest.longRest.longMoves",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "2Gd6iHQX521aAZqC",
"img": "icons/magic/control/fear-fright-monster-red.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Dread Visage: Rolls to intimidate hostile creatures",
"priority": null
}
]
},
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Dread Visage: Rolls to intimidate hostile creatures",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,27 +24,21 @@
"_id": "EEryWN2nE33ppGHi",
"img": "icons/magic/time/clock-stopwatch-white-blue.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.bonuses.rest.shortRest.longMoves",
"mode": 2,
"value": "1",
"priority": null
},
{
"key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2,
"value": "-1",
"priority": null
}
]
},
"changes": [
{
"key": "system.bonuses.rest.shortRest.longMoves",
"mode": 2,
"value": "1",
"priority": null
},
{
"key": "system.bonuses.rest.shortRest.shortMoves",
"mode": 2,
"value": "-1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "db8W2Q0Qty84XV0x",
"img": "icons/magic/control/buff-strength-muscle-damage.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resources.hitPoints.max",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.resources.hitPoints.max",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "Xl3TsKUJcl6vi1ly",
"img": "icons/magic/control/buff-flight-wings-runes-purple-orange.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.resources.stress.max",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.resources.stress.max",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "HQeQH9gUfrjlWWcg",
"img": "icons/magic/nature/root-vine-barrier-wall-brown.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Agility Rolls that involve balancing and climbing",
"priority": null
}
]
},
"changes": [
{
"key": "system.advantageSources",
"mode": 2,
"value": "Agility Rolls that involve balancing and climbing",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "zaxVYqKzUYDJ3SDq",
"img": "icons/skills/movement/arrows-up-trio-red.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.evasion",
"mode": 2,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.evasion",
"mode": 2,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -63,12 +63,6 @@
"_id": "3V4FPoyjJUnFP9WS",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [
{
"key": "system.resistance.physical.resistance",

View file

@ -78,12 +78,6 @@
"_id": "pO76svFkmWmZ6LjC",
"type": "base",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
},
"changes": [],
"duration": {
"type": "temporary"

View file

@ -24,21 +24,15 @@
"_id": "b6Pkwwk7pgBeeUTe",
"img": "icons/commodities/leather/scales-brown.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.severe.cost",
"mode": 5,
"value": "1",
"priority": null
}
]
},
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.severe.cost",
"mode": 5,
"value": "1",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,27 +24,21 @@
"_id": "41uiZKXzSSomf9YD",
"img": "icons/creatures/reptiles/turtle-shell-glowing-green.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.damageThresholds.major",
"mode": 2,
"value": "@prof",
"priority": 21
},
{
"key": "system.damageThresholds.severe",
"mode": 2,
"value": "@prof",
"priority": 21
}
]
},
"changes": [
{
"key": "system.damageThresholds.major",
"mode": 2,
"value": "@prof",
"priority": 21
},
{
"key": "system.damageThresholds.severe",
"mode": 2,
"value": "@prof",
"priority": 21
}
],
"disabled": false,
"duration": {
"startTime": null,

View file

@ -24,21 +24,15 @@
"_id": "4Lc40mNnRInTKMC5",
"img": "icons/magic/defensive/shield-barrier-glowing-triangle-orange.webp",
"system": {
"rangeDependence": {
"enabled": false,
"type": "withinRange",
"target": "hostile",
"range": "melee"
}
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.minor.cost",
"mode": 5,
"value": "2",
"priority": null
}
]
},
"changes": [
{
"key": "system.rules.damageReduction.stressDamageReduction.minor.cost",
"mode": 5,
"value": "2",
"priority": null
}
],
"disabled": false,
"duration": {
"startTime": null,

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