[Feature] 1033 - Consume Quantity On Use (#1106)

* Initial migration

* Updated compendium YML

* Added Quantity as a possible cost

* Added quantity consumption to all Compendium Consumables

* .

* Added DestroyOnEmpty property
This commit is contained in:
WBHarry 2025-08-28 18:29:17 +02:00 committed by GitHub
parent 9dd773001d
commit 8fd63d5963
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
397 changed files with 1276 additions and 930 deletions

View file

@ -1983,6 +1983,7 @@
"inactiveEffects": "Inactive Effects",
"inventory": "Inventory",
"itemResource": "Item Resource",
"itemQuantity": "Item Quantity",
"items": "Items",
"label": "Label",
"level": "Level",
@ -2124,7 +2125,8 @@
}
},
"Consumable": {
"consumeOnUse": "Consume On Use"
"consumeOnUse": "Consume On Use",
"destroyOnEmpty": "Destroy On Empty"
},
"DomainCard": {
"type": "Type",

View file

@ -1,4 +1,4 @@
import { abilities } from "../../config/actorConfig.mjs";
import { abilities } from '../../config/actorConfig.mjs';
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
@ -83,7 +83,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
);
context.costs = updatedCosts.map(x => ({
...x,
label: x.keyIsID
label: x.itemId
? this.action.parent.parent.name
: game.i18n.localize(CONFIG.DH.GENERAL.abilityCosts[x.key].label)
}));
@ -115,7 +115,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
context.isLite = this.config.roll?.lite;
context.extraFormula = this.config.extraFormula;
context.formula = this.roll.constructFormula(this.config);
if(this.actor.system.traits) context.abilities = this.getTraitModifiers();
if (this.actor.system.traits) context.abilities = this.getTraitModifiers();
context.showReaction = !this.config.roll?.type && context.rollType === 'DualityRoll';
context.reactionOverride = this.reactionOverride;
@ -124,12 +124,15 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
}
getTraitModifiers() {
return Object.values(abilities).map(a => ({ id: a.id, label: `${game.i18n.localize(a.label)} (${this.actor.system.traits[a.id]?.value.signedString() ?? 0})` }))
return Object.values(abilities).map(a => ({
id: a.id,
label: `${game.i18n.localize(a.label)} (${this.actor.system.traits[a.id]?.value.signedString() ?? 0})`
}));
}
static updateRollConfiguration(event, _, formData) {
const { ...rest } = foundry.utils.expandObject(formData.object);
this.config.selectedRollMode = rest.selectedRollMode;
if (this.config.costs) {
@ -141,7 +144,7 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
this.roll[key] = value;
});
}
if(rest.hasOwnProperty("trait")) {
if (rest.hasOwnProperty('trait')) {
this.config.roll.trait = rest.trait;
this.config.title = game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', {
ability: game.i18n.localize(abilities[this.config.roll.trait]?.label)
@ -169,14 +172,14 @@ export default class D20RollDialog extends HandlebarsApplicationMixin(Applicatio
this.config.costs.indexOf(this.config.costs.find(c => c.extKey === button.dataset.key)) > -1
? this.config.costs.filter(x => x.extKey !== button.dataset.key)
: [
...this.config.costs,
{
extKey: button.dataset.key,
key: this.config?.data?.parent?.isNPC ? 'fear' : 'hope',
value: 1,
name: this.config.data?.experiences?.[button.dataset.key]?.name
}
];
...this.config.costs,
{
extKey: button.dataset.key,
key: this.config?.data?.parent?.isNPC ? 'fear' : 'hope',
value: 1,
name: this.config.data?.experiences?.[button.dataset.key]?.name
}
];
this.render();
}

View file

@ -132,12 +132,19 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
const options = foundry.utils.deepClone(CONFIG.DH.GENERAL.abilityCosts);
const resource = this.action.parent.resource;
if (resource) {
options[this.action.parent.parent.id] = {
options.resource = {
label: 'DAGGERHEART.GENERAL.itemResource',
group: 'Global'
};
}
if (this.action.parent.metadata.isQuantifiable) {
options.quantity = {
label: 'DAGGERHEART.GENERAL.itemQuantity',
group: 'Global'
};
}
return options;
}
@ -164,13 +171,14 @@ export default class DHActionConfig extends DaggerheartSheet(ApplicationV2) {
_prepareSubmitData(_event, formData) {
const submitData = foundry.utils.expandObject(formData.object);
const itemAbilityCostKeys = Object.keys(CONFIG.DH.GENERAL.itemAbilityCosts);
for (const keyPath of this.constructor.CLEAN_ARRAYS) {
const data = foundry.utils.getProperty(submitData, keyPath);
const dataValues = data ? Object.values(data) : [];
if (keyPath === 'cost') {
for (var value of dataValues) {
const item = this.action.parent.parent.id === value.key;
value.keyIsID = Boolean(item);
value.itemId = itemAbilityCostKeys.includes(value.key) ? this.action.parent.parent.id : null;
}
}

View file

@ -132,6 +132,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
});
htmlElement.querySelectorAll('.inventory-item-quantity').forEach(element => {
element.addEventListener('change', this.updateItemQuantity.bind(this));
element.addEventListener('click', e => e.stopPropagation());
});
// Add listener for armor marks input
@ -676,7 +677,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
})
});
if(result) game.system.api.fields.ActionFields.CostField.execute.call(this, result);
if (result) game.system.api.fields.ActionFields.CostField.execute.call(this, result);
}
//TODO: redo toggleEquipItem method

View file

@ -84,8 +84,7 @@ export default class DhCompanionSheet extends DHBaseActorSheet {
return {
key: c.key,
value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1),
target: resource.target,
keyIsID: resource.keyIsID
target: resource.target
};
});

View file

@ -561,6 +561,19 @@ export const refreshTypes = {
}
};
export const itemAbilityCosts = {
resource: {
id: 'resource',
label: 'DAGGERHEART.GENERAL.resource',
group: 'Global'
},
quantity: {
id: 'quantity',
label: 'DAGGERHEART.GENERAL.quantity',
group: 'Global'
}
};
export const abilityCosts = {
hitPoints: {
id: 'hitPoints',
@ -586,7 +599,8 @@ export const abilityCosts = {
id: 'fear',
label: 'Fear',
group: 'TYPES.Actor.adversary'
}
},
resource: itemAbilityCosts.resource
};
export const countdownTypes = {

View file

@ -5,7 +5,7 @@ export default class CostField extends fields.ArrayField {
* Action Workflow order
*/
static order = 150;
/** @inheritDoc */
constructor(options = {}, context = {}) {
const element = new fields.SchemaField({
@ -14,7 +14,7 @@ export default class CostField extends fields.ArrayField {
required: true,
initial: 'hope'
}),
keyIsID: new fields.BooleanField(),
itemId: new fields.StringField({ nullable: true, initial: null }),
value: new fields.NumberField({ nullable: true, initial: 1, min: 0 }),
scalable: new fields.BooleanField({ initial: false }),
step: new fields.NumberField({ nullable: true, initial: null }),
@ -34,23 +34,23 @@ export default class CostField extends fields.ArrayField {
* @param {boolean} [successCost=false] Consume only resources configured as "On Success only" if not already consumed.
*/
static async execute(config, successCost = false) {
const actor= this.actor.system.partner ?? this.actor,
const actor = this.actor.system.partner ?? this.actor,
usefulResources = {
...foundry.utils.deepClone(actor.system.resources),
fear: {
value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear),
max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear,
reversed: false
}
};
...foundry.utils.deepClone(actor.system.resources),
fear: {
value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear),
max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear,
reversed: false
}
};
if(this.parent?.parent) {
if (this.parent?.parent) {
for (var cost of config.costs) {
if (cost.keyIsID) {
if (cost.itemId) {
usefulResources[cost.key] = {
value: cost.value,
target: this.parent.parent,
keyIsID: true
itemId: cost.itemId
};
}
}
@ -69,12 +69,12 @@ export default class CostField extends fields.ArrayField {
key: c.key,
value: (c.total ?? c.value) * (resource.isReversed ? 1 : -1),
target: resource.target,
keyIsID: resource.keyIsID
itemId: resource.itemId
});
return a;
}
}, []);
await actor.modifyResource(resources);
}
@ -95,14 +95,19 @@ export default class CostField extends fields.ArrayField {
}
/**
*
*
* Must be called within Action context.
* @param {*} costs
* @returns
* @param {*} costs
* @returns
*/
static calcCosts(costs) {
const resources = CostField.getResources.call(this, costs);
return costs.map(c => {
let filteredCosts = costs;
if (this.parent.metadata.isQuantifiable && this.parent.consumeOnUse === false) {
filteredCosts = filteredCosts.filter(c => c.key !== 'quantity');
}
return filteredCosts.map(c => {
c.scale = c.scale ?? 0;
c.step = c.step ?? 1;
c.total = c.value + c.scale * c.step;
@ -121,7 +126,7 @@ export default class CostField extends fields.ArrayField {
/**
* Check if the current Actor currently has all needed resources.
* Must be called within Action context.
* @param {*} costs
* @param {*} costs
* @returns {boolean}
*/
static hasCost(costs) {
@ -153,8 +158,8 @@ export default class CostField extends fields.ArrayField {
/**
* Get all Actor resources + parent Item potential one.
* Must be called within Action context.
* @param {*} costs
* @returns
* @param {*} costs
* @returns
*/
static getResources(costs) {
const actorResources = foundry.utils.deepClone(this.actor.system.resources);
@ -162,11 +167,8 @@ export default class CostField extends fields.ArrayField {
actorResources.hope = foundry.utils.deepClone(this.actor.system.partner.system.resources.hope);
const itemResources = {};
for (let itemResource of costs) {
if (itemResource.keyIsID) {
itemResources[itemResource.key] = {
value: this.parent.resource.value ?? 0,
max: CostField.formatMax.call(this, this.parent?.resource?.max)
};
if (itemResource.itemId) {
itemResources[itemResource.key] = CostField.getItemIdCostResource.bind(this)(itemResource);
}
}
@ -176,10 +178,44 @@ export default class CostField extends fields.ArrayField {
};
}
static getItemIdCostResource(itemResource) {
switch (itemResource.key) {
case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id:
return {
value: this.parent.resource.value ?? 0,
max: CostField.formatMax.call(this, this.parent?.resource?.max)
};
case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id:
return {
value: this.parent.quantity ?? 0,
max: this.parent.quantity ?? 0
};
default:
return { value: 0, max: 0 };
}
}
static getItemIdCostUpdate(r) {
switch (r.key) {
case CONFIG.DH.GENERAL.itemAbilityCosts.resource.id:
return {
path: 'system.resource.value',
value: r.target.system.resource.value + r.value
};
case CONFIG.DH.GENERAL.itemAbilityCosts.quantity.id:
return {
path: 'system.quantity',
value: r.target.system.quantity + r.value
};
default:
return { path: '', value: undefined };
}
}
/**
*
* @param {*} costs
* @returns
*
* @param {*} costs
* @returns
*/
static getRealCosts(costs) {
const realCosts = costs?.length ? costs.filter(c => c.enabled) : [];

View file

@ -1,5 +1,4 @@
import BaseDataItem from './base.mjs';
import { ActionField } from '../fields/actionField.mjs';
export default class DHConsumable extends BaseDataItem {
/** @inheritDoc */
@ -19,7 +18,8 @@ export default class DHConsumable extends BaseDataItem {
const fields = foundry.data.fields;
return {
...super.defineSchema(),
consumeOnUse: new fields.BooleanField({ initial: false })
consumeOnUse: new fields.BooleanField({ initial: true }),
destroyOnEmpty: new fields.BooleanField({ initial: true })
};
}
@ -27,5 +27,4 @@ export default class DHConsumable extends BaseDataItem {
/**@override */
static DEFAULT_ICON = 'systems/daggerheart/assets/icons/documents/items/round-potion.svg';
}

View file

@ -659,13 +659,22 @@ export default class DhpActor extends Actor {
};
resources.forEach(r => {
if (r.keyIsID) {
updates.items[r.key] = {
target: r.target,
resources: {
'system.resource.value': r.target.system.resource.value + r.value
}
};
if (r.itemId) {
const { path, value } = game.system.api.fields.ActionFields.CostField.getItemIdCostUpdate(r);
if (
r.key === 'quantity' &&
r.target.type === 'consumable' &&
value === 0 &&
r.target.system.destroyOnEmpty
) {
r.target.delete();
} else {
updates.items[r.key] = {
target: r.target,
resources: { [path]: value }
};
}
} else {
switch (r.key) {
case 'fear':

View file

@ -96,5 +96,60 @@ export async function runMigrations() {
lastMigrationVersion = '1.1.1';
}
if (foundry.utils.isNewerVersion('1.2.0', lastMigrationVersion)) {
const lockedPacks = [];
const compendiumItems = [];
for (let pack of game.packs) {
if (pack.locked) {
lockedPacks.push(pack.collection);
await pack.configure({ locked: false });
}
const documents = await pack.getDocuments();
compendiumItems.push(...documents.filter(x => x.system?.metadata?.hasActions));
compendiumItems.push(
...documents
.filter(x => x.items)
.flatMap(actor => actor.items.filter(x => x.system?.metadata?.hasActions))
);
}
const worldItems = game.items.filter(x => x.system.metadata.hasActions);
const worldActorItems = Array.from(game.actors).flatMap(actor =>
actor.items.filter(x => x.system.metadata.hasActions)
);
const validCostKeys = Object.keys(CONFIG.DH.GENERAL.abilityCosts);
for (let item of [...worldItems, ...worldActorItems, ...compendiumItems]) {
for (let action of item.system.actions) {
const resourceCostIndexes = Object.keys(action.cost).reduce(
(acc, index) => (!validCostKeys.includes(action.cost[index].key) ? [...acc, Number(index)] : acc),
[]
);
if (resourceCostIndexes.length === 0) continue;
await action.update({
cost: action.cost.map((cost, index) => {
const { keyIsID, ...rest } = cost;
if (!resourceCostIndexes.includes(index)) return { ...rest };
return {
...rest,
key: 'resource',
itemId: cost.key
};
})
});
}
}
for (let packId of lockedPacks) {
const pack = game.packs.get(packId);
await pack.configure({ locked: true });
}
lastMigrationVersion = '1.2.0';
}
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion);
}

View file

@ -316,7 +316,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -392,7 +392,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -507,7 +506,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -727,7 +725,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -278,7 +278,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -257,7 +257,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -345,7 +344,6 @@
"scalable": false,
"key": "stress",
"value": 2,
"keyIsID": false,
"step": null
}
],
@ -579,7 +577,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -643,7 +640,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -279,7 +279,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -285,7 +285,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -1091,7 +1090,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -293,7 +293,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -404,7 +404,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -253,7 +253,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -352,7 +351,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -364,7 +364,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -316,7 +316,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -432,7 +431,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -257,7 +257,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -254,7 +254,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -421,7 +420,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -257,7 +257,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -397,7 +396,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -524,7 +522,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -246,7 +246,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -310,7 +309,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -285,7 +285,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -399,7 +398,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -432,7 +431,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -527,7 +525,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -318,7 +318,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -285,7 +285,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -349,7 +348,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -421,7 +421,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -360,7 +360,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -393,7 +392,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -457,7 +455,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -279,7 +279,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -277,7 +277,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -391,7 +390,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -370,7 +370,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -358,7 +358,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -389,7 +389,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -497,7 +497,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -359,7 +359,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -374,7 +374,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -281,7 +281,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -254,7 +254,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -335,7 +335,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -449,7 +448,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -523,7 +523,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -455,7 +455,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -246,7 +246,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -418,7 +417,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -559,7 +557,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -563,7 +563,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -279,7 +279,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -336,7 +335,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -287,7 +287,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -259,7 +259,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],

View file

@ -519,7 +519,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],

View file

@ -285,7 +285,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -455,7 +454,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -570,7 +568,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -532,7 +532,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -317,7 +317,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -281,7 +281,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -253,7 +253,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -352,7 +351,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -562,7 +562,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -290,7 +290,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -354,7 +353,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -363,7 +363,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -334,7 +334,6 @@
"scalable": false,
"key": "hitPoints",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -481,7 +480,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -368,7 +368,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -484,7 +483,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -282,7 +282,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -398,7 +397,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -275,7 +275,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -246,7 +246,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -310,7 +309,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -290,7 +290,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -354,7 +353,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -338,7 +338,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -452,7 +451,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -424,7 +424,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -539,7 +538,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],
@ -660,7 +658,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -272,7 +272,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -452,7 +452,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -365,7 +365,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -288,7 +288,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -377,7 +376,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -346,7 +346,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -411,7 +410,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -499,7 +499,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -275,7 +275,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -343,7 +343,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -407,7 +406,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -257,7 +257,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],
@ -345,7 +344,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -532,7 +530,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -275,7 +275,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -464,7 +464,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -359,7 +359,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -275,7 +275,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -335,7 +335,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -368,7 +367,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],
@ -432,7 +430,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -368,7 +367,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -289,7 +289,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -405,7 +404,6 @@
"scalable": false,
"key": "fear",
"value": 2,
"keyIsID": false,
"step": null
}
],

View file

@ -252,7 +252,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -316,7 +315,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -339,7 +339,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -427,7 +426,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -285,7 +285,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -450,7 +449,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -362,7 +362,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],
@ -478,7 +477,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -316,7 +316,6 @@
"scalable": false,
"key": "stress",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -312,7 +312,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -271,7 +271,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

View file

@ -407,7 +407,6 @@
"scalable": false,
"key": "fear",
"value": 1,
"keyIsID": false,
"step": null
}
],

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