This commit is contained in:
WBHarry 2026-03-06 21:28:09 -05:00 committed by GitHub
commit 5a87e3cde5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
538 changed files with 2477 additions and 2499 deletions

View file

@ -67,7 +67,7 @@ export default class DhCompanionLevelUp extends BaseLevelUp {
break;
case 'summary':
const levelKeys = Object.keys(this.levelup.levels);
const actorDamageDice = this.actor.system.attack.damage.parts[0].value.dice;
const actorDamageDice = this.actor.system.attack.damage.parts.hitPoints.value.dice;
const actorRange = this.actor.system.attack.range;
let achievementExperiences = [];

View file

@ -1,3 +1,4 @@
import { getUnusedDamageTypes } from '../../helpers/utils.mjs';
import DaggerheartSheet from '../sheets/daggerheart-sheet.mjs';
const { ApplicationV2 } = foundry.applications.api;
@ -103,7 +104,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
}
};
static CLEAN_ARRAYS = ['damage.parts', 'cost', 'effects', 'summon'];
static CLEAN_ARRAYS = ['cost', 'effects', 'summon'];
_getTabs(tabs) {
for (const v of Object.values(tabs)) {
@ -155,6 +156,7 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
revealed: this.openTrigger === index
};
});
context.allDamageTypesUsed = !getUnusedDamageTypes(this.action.damage.parts).length;
const settingsTiers = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LevelTiers).tiers;
context.tierOptions = [
@ -268,18 +270,61 @@ export default class DHActionBaseConfig extends DaggerheartSheet(ApplicationV2)
static addDamage(_event) {
if (!this.action.damage.parts) return;
const data = this.action.toObject(),
part = {};
if (this.action.actor?.isNPC) part.value = { multiplier: 'flat' };
data.damage.parts.push(part);
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
const choices = getUnusedDamageTypes(this.action.damage.parts);
const content = new foundry.data.fields.StringField({
label: game.i18n.localize('Damage Type'),
choices,
required: true
}).toFormGroup(
{},
{
name: 'type',
localize: true,
nameAttr: 'value',
labelAttr: 'label'
}
).outerHTML;
const callback = (_, button) => {
const data = this.action.toObject();
const type = choices[button.form.elements.type.value].value;
const part = { applyTo: type };
if (this.action.actor?.isNPC) part.value = { multiplier: 'flat' };
data.damage.parts[type] = part;
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
};
const typeDialog = new foundry.applications.api.DialogV2({
buttons: [
foundry.utils.mergeObject(
{
action: 'ok',
label: 'Confirm',
icon: 'fas fa-check',
default: true
},
{ callback: callback }
)
],
content: content,
rejectClose: false,
modal: false,
window: {
title: game.i18n.localize('Add Damage')
},
position: { width: 300 }
});
typeDialog.render(true);
}
static removeDamage(_event, button) {
if (!this.action.damage.parts) return;
const data = this.action.toObject(),
index = button.dataset.index;
data.damage.parts.splice(index, 1);
const data = this.action.toObject();
const key = button.dataset.key;
delete data.damage.parts[key];
data.damage.parts[`-=${key}`] = null;
this.constructor.updateForm.bind(this)(null, null, { object: foundry.utils.flattenObject(data) });
}

View file

@ -499,7 +499,10 @@ export default function DHApplicationMixin(Base) {
icon: 'fa-solid fa-explosion',
condition: target => {
const doc = getDocFromElementSync(target);
return doc?.system?.attack?.damage.parts.length || doc?.damage?.parts.length;
return (
!foundry.utils.isEmpty(doc?.system?.attack?.damage.parts) ||
!foundry.utils.isEmpty(doc?.damage?.parts)
);
},
callback: async (target, event) => {
const doc = await getDocFromElement(target),

View file

@ -241,8 +241,8 @@ export const defaultRestOptions = {
type: 'friendly'
},
damage: {
parts: [
{
parts: {
hitPoints: {
applyTo: healingTypes.hitPoints.id,
value: {
custom: {
@ -251,7 +251,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -275,8 +275,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
stress: {
applyTo: healingTypes.stress.id,
value: {
custom: {
@ -285,7 +285,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -310,8 +310,8 @@ export const defaultRestOptions = {
type: 'friendly'
},
damage: {
parts: [
{
parts: {
armor: {
applyTo: healingTypes.armor.id,
value: {
custom: {
@ -320,7 +320,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -344,8 +344,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
hope: {
applyTo: healingTypes.hope.id,
value: {
custom: {
@ -354,7 +354,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
},
prepareWithFriends: {
@ -368,8 +368,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
hope: {
applyTo: healingTypes.hope.id,
value: {
custom: {
@ -378,7 +378,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -405,8 +405,8 @@ export const defaultRestOptions = {
type: 'friendly'
},
damage: {
parts: [
{
parts: {
hitPoints: {
applyTo: healingTypes.hitPoints.id,
value: {
custom: {
@ -415,7 +415,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -439,8 +439,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
stress: {
applyTo: healingTypes.stress.id,
value: {
custom: {
@ -449,7 +449,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -474,8 +474,8 @@ export const defaultRestOptions = {
type: 'friendly'
},
damage: {
parts: [
{
parts: {
armor: {
applyTo: healingTypes.armor.id,
value: {
custom: {
@ -484,7 +484,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},
@ -508,8 +508,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
hope: {
applyTo: healingTypes.hope.id,
value: {
custom: {
@ -518,7 +518,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
},
prepareWithFriends: {
@ -532,8 +532,8 @@ export const defaultRestOptions = {
type: 'self'
},
damage: {
parts: [
{
parts: {
hope: {
applyTo: healingTypes.hope.id,
value: {
custom: {
@ -542,7 +542,7 @@ export const defaultRestOptions = {
}
}
}
]
}
}
}
},

View file

@ -14,8 +14,8 @@ export const armorFeatures = {
type: 'hostile'
},
damage: {
parts: [
{
parts: {
stress: {
applyTo: 'stress',
value: {
custom: {
@ -24,7 +24,7 @@ export const armorFeatures = {
}
}
}
]
}
}
}
]
@ -732,8 +732,8 @@ export const weaponFeatures = {
type: 'hostile'
},
damage: {
parts: [
{
parts: {
stress: {
applyTo: 'stress',
value: {
custom: {
@ -742,7 +742,7 @@ export const weaponFeatures = {
}
}
}
]
}
}
}
],
@ -914,8 +914,8 @@ export const weaponFeatures = {
type: 'self'
},
damage: {
parts: [
{
parts: {
hitPoints: {
applyTo: 'hitPoints',
value: {
custom: {
@ -924,7 +924,7 @@ export const weaponFeatures = {
}
}
}
]
}
}
}
]

View file

@ -26,23 +26,23 @@ export default class DHAttackAction extends DHDamageAction {
return {
value: {
multiplier: 'prof',
dice: this.item?.system?.attack.damage.parts[0].value.dice,
bonus: this.item?.system?.attack.damage.parts[0].value.bonus ?? 0
dice: this.item?.system?.attack.damage.parts.hitPoints.value.dice,
bonus: this.item?.system?.attack.damage.parts.hitPoints.value.bonus ?? 0
},
type: this.item?.system?.attack.damage.parts[0].type,
type: this.item?.system?.attack.damage.parts.hitPoints.type,
base: true
};
}
get damageFormula() {
const hitPointsPart = this.damage.parts.find(x => x.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id);
const hitPointsPart = this.damage.parts.hitPoints;
if (!hitPointsPart) return '0';
return hitPointsPart.value.getFormula();
}
get altDamageFormula() {
const hitPointsPart = this.damage.parts.find(x => x.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id);
const hitPointsPart = this.damage.parts.hitPoints;
if (!hitPointsPart) return '0';
return hitPointsPart.valueAlt.getFormula();

View file

@ -352,11 +352,11 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
}
get hasDamage() {
return this.damage?.parts?.length && this.type !== 'healing';
return !foundry.utils.isEmpty(this.damage.parts) && this.type !== 'healing';
}
get hasHealing() {
return this.damage?.parts?.length && this.type === 'healing';
return !foundry.utils.isEmpty(this.damage.parts) && this.type === 'healing';
}
get hasSave() {
@ -376,6 +376,15 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
return tags;
}
static migrateData(source) {
if (source.damage?.parts && Array.isArray(source.damage.parts)) {
source.damage.parts = source.damage.parts.reduce((acc, part) => {
acc[part.applyTo] = part;
return acc;
}, {});
}
}
}
export class ResourceUpdateMap extends Map {

View file

@ -89,14 +89,14 @@ export default class DhpAdversary extends DhCreature {
type: 'attack'
},
damage: {
parts: [
{
parts: {
hitPoints: {
type: ['physical'],
value: {
multiplier: 'flat'
}
}
]
}
}
}
}),
@ -268,12 +268,12 @@ export default class DhpAdversary extends DhCreature {
}
// Update damage in item actions
// Parse damage, and convert all formula matches in the descriptions to the new damage
for (const action of Object.values(item.system.actions)) {
if (!action.damage) continue;
// Parse damage, and convert all formula matches in the descriptions to the new damage
try {
const result = this.#adjustActionDamage(action, { ...damageMeta, type: 'action' });
if (!result) continue;
for (const { previousFormula, formula } of Object.values(result)) {
const oldFormulaRegexp = new RegExp(
previousFormula.replace(' ', '').replace('+', '(?:\\s)?\\+(?:\\s)?')
@ -375,16 +375,14 @@ export default class DhpAdversary extends DhCreature {
/**
* Updates damage to reflect a specific value.
* @throws if damage structure is invalid for conversion
* @returns the converted formula and value as a simplified term
* @returns the converted formula and value as a simplified term, or null if it doesn't deal HP damage
*/
#adjustActionDamage(action, damageMeta) {
// The current algorithm only returns a value if there is a single damage part
const hpDamageParts = action.damage.parts.filter(d => d.applyTo === 'hitPoints');
if (hpDamageParts.length !== 1) throw new Error('incorrect number of hp parts');
if (!action.damage?.parts.hitPoints) return null;
const result = {};
for (const property of ['value', 'valueAlt']) {
const data = hpDamageParts[0][property];
const data = action.damage.parts.hitPoints[property];
const previousFormula = data.custom.enabled
? data.custom.formula
: [data.flatMultiplier ? `${data.flatMultiplier}${data.dice}` : 0, data.bonus ?? 0]

View file

@ -118,8 +118,8 @@ export default class DhCharacter extends DhCreature {
trait: 'strength'
},
damage: {
parts: [
{
parts: {
hitPoints: {
type: ['physical'],
value: {
custom: {
@ -128,7 +128,7 @@ export default class DhCharacter extends DhCreature {
}
}
}
]
}
}
}
}),
@ -704,7 +704,7 @@ export default class DhCharacter extends DhCreature {
isReversed: true
};
this.attack.damage.parts[0].value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`;
this.attack.damage.parts.hitPoints.value.custom.formula = `@prof${this.basicAttackDamageDice}${this.rules.attack.damage.bonus ? ` + ${this.rules.attack.damage.bonus}` : ''}`;
}
getRollData() {

View file

@ -85,15 +85,15 @@ export default class DhCompanion extends DhCreature {
bonus: 0
},
damage: {
parts: [
{
parts: {
hitPoints: {
type: ['physical'],
value: {
dice: 'd6',
multiplier: 'prof'
}
}
]
}
}
}
}),
@ -138,7 +138,9 @@ export default class DhCompanion extends DhCreature {
break;
case 'vicious':
if (selection.data[0] === 'damage') {
this.attack.damage.parts[0].value.dice = adjustDice(this.attack.damage.parts[0].value.dice);
this.attack.damage.parts.hitPoints.value.dice = adjustDice(
this.attack.damage.parts.hitPoints.value.dice
);
} else {
this.attack.range = adjustRange(this.attack.range).id;
}

View file

@ -1,7 +1,7 @@
export { ActionCollection } from './actionField.mjs';
export { default as IterableTypedObjectField } from './iterableTypedObjectField.mjs';
export { default as FormulaField } from './formulaField.mjs';
export { default as ForeignDocumentUUIDField } from './foreignDocumentUUIDField.mjs';
export { default as ForeignDocumentUUIDArrayField } from './foreignDocumentUUIDArrayField.mjs';
export { default as TriggerField } from './triggerField.mjs';
export { default as MappingField } from './mappingField.mjs';
export * as ActionFields from './action/_module.mjs';

View file

@ -1,5 +1,6 @@
import FormulaField from '../formulaField.mjs';
import { setsEqual } from '../../../helpers/utils.mjs';
import IterableTypedObjectField from '../iterableTypedObjectField.mjs';
const fields = foundry.data.fields;
@ -12,7 +13,7 @@ export default class DamageField extends fields.SchemaField {
/** @inheritDoc */
constructor(options, context = {}) {
const damageFields = {
parts: new fields.ArrayField(new fields.EmbeddedDataField(DHDamageData)),
parts: new IterableTypedObjectField(DHDamageData),
includeBase: new fields.BooleanField({
initial: false,
label: 'DAGGERHEART.ACTIONS.Settings.includeBase.label'

View file

@ -1,6 +1,5 @@
import DHActionConfig from '../../applications/sheets-configs/action-config.mjs';
import { itemAbleRollParse } from '../../helpers/utils.mjs';
import MappingField from './mappingField.mjs';
/**
* Specialized collection type for stored actions.
@ -61,7 +60,7 @@ export class ActionCollection extends Collection {
/**
* Field that stores actions.
*/
export class ActionsField extends MappingField {
export class ActionsField extends foundry.data.fields.TypedObjectField {
constructor(options) {
super(new ActionField(), options);
}

View file

@ -0,0 +1,32 @@
export default class IterableTypedObjectField extends foundry.data.fields.TypedObjectField {
constructor(model, options = { collectionClass: foundry.utils.Collection }, context = {}) {
super(new foundry.data.fields.EmbeddedDataField(model), options, context);
this.#elementClass = model;
}
#elementClass;
/** Initializes an object with an iterator. This modifies the prototype instead of */
initialize(values) {
const object = Object.create(IterableObjectPrototype);
for (const [key, value] of Object.entries(values)) {
object[key] = new this.#elementClass(value);
}
return object;
}
}
/**
* The prototype of an iterable object.
* This allows the functionality of a class but also allows foundry.utils.getType() to return "Object" instead of "Unknown".
*/
const IterableObjectPrototype = {
[Symbol.iterator]: function*() {
for (const value of Object.values(this)) {
yield value;
}
},
map: function (func) {
return Array.from(this, func);
}
};

View file

@ -1,128 +0,0 @@
/**
* A subclass of ObjectField that represents a mapping of keys to the provided DataField type.
*
* @param {DataField} model The class of DataField which should be embedded in this field.
* @param {MappingFieldOptions} [options={}] Options which configure the behavior of the field.
* @property {string[]} [initialKeys] Keys that will be created if no data is provided.
* @property {MappingFieldInitialValueBuilder} [initialValue] Function to calculate the initial value for a key.
* @property {boolean} [initialKeysOnly=false] Should the keys in the initialized data be limited to the keys provided
* by `options.initialKeys`?
*/
export default class MappingField extends foundry.data.fields.ObjectField {
constructor(model, options) {
if (!(model instanceof foundry.data.fields.DataField)) {
throw new Error('MappingField must have a DataField as its contained element');
}
super(options);
/**
* The embedded DataField definition which is contained in this field.
* @type {DataField}
*/
this.model = model;
model.parent = this;
}
/* -------------------------------------------- */
/** @inheritDoc */
static get _defaults() {
return foundry.utils.mergeObject(super._defaults, {
initialKeys: null,
initialValue: null,
initialKeysOnly: false
});
}
/* -------------------------------------------- */
/** @inheritDoc */
_cleanType(value, options) {
Object.entries(value).forEach(([k, v]) => {
if (k.startsWith('-=')) return;
value[k] = this.model.clean(v, options);
});
return value;
}
/* -------------------------------------------- */
/** @inheritDoc */
getInitialValue(data) {
let keys = this.initialKeys;
const initial = super.getInitialValue(data);
if (!keys || !foundry.utils.isEmpty(initial)) return initial;
if (!(keys instanceof Array)) keys = Object.keys(keys);
for (const key of keys) initial[key] = this._getInitialValueForKey(key);
return initial;
}
/* -------------------------------------------- */
/**
* Get the initial value for the provided key.
* @param {string} key Key within the object being built.
* @param {object} [object] Any existing mapping data.
* @returns {*} Initial value based on provided field type.
*/
_getInitialValueForKey(key, object) {
const initial = this.model.getInitialValue();
return this.initialValue?.(key, initial, object) ?? initial;
}
/* -------------------------------------------- */
/** @override */
_validateType(value, options = {}) {
if (foundry.utils.getType(value) !== 'Object') throw new Error('must be an Object');
const errors = this._validateValues(value, options);
if (!foundry.utils.isEmpty(errors)) {
const failure = new foundry.data.validation.DataModelValidationFailure();
failure.elements = Object.entries(errors).map(([id, failure]) => ({ id, failure }));
throw failure.asError();
}
}
/* -------------------------------------------- */
/**
* Validate each value of the object.
* @param {object} value The object to validate.
* @param {object} options Validation options.
* @returns {Record<string, Error>} An object of value-specific errors by key.
*/
_validateValues(value, options) {
const errors = {};
for (const [k, v] of Object.entries(value)) {
if (k.startsWith('-=')) continue;
const error = this.model.validate(v, options);
if (error) errors[k] = error;
}
return errors;
}
/* -------------------------------------------- */
/** @override */
initialize(value, model, options = {}) {
if (!value) return value;
const obj = {};
const initialKeys = this.initialKeys instanceof Array ? this.initialKeys : Object.keys(this.initialKeys ?? {});
const keys = this.initialKeysOnly ? initialKeys : Object.keys(value);
for (const key of keys) {
const data = value[key] ?? this._getInitialValueForKey(key, value);
obj[key] = this.model.initialize(data, model, options);
}
return obj;
}
/* -------------------------------------------- */
/** @inheritDoc */
_getField(path) {
if (path.length === 0) return this;
else if (path.length === 1) return this.model;
path.shift();
return this.model._getField(path);
}
}

View file

@ -63,15 +63,15 @@ export default class DHWeapon extends AttachableItem {
type: 'attack'
},
damage: {
parts: [
{
parts: {
hitPoints: {
type: ['physical'],
value: {
multiplier: 'prof',
dice: 'd8'
}
}
]
}
}
}
}),

View file

@ -49,9 +49,7 @@ export default class RegisterHandlebarsHelpers {
}
static damageSymbols(damageParts) {
const symbols = [...new Set(damageParts.reduce((a, c) => a.concat([...c.type]), []))].map(
p => CONFIG.DH.GENERAL.damageTypes[p].icon
);
const symbols = [...new Set(damageParts.map(x => x.type))].map(p => CONFIG.DH.GENERAL.damageTypes[p].icon);
return new Handlebars.SafeString(Array.from(symbols).map(symbol => `<i class="fa-solid ${symbol}"></i>`));
}

View file

@ -675,3 +675,16 @@ export async function RefreshFeatures(
return refreshedActors;
}
export function getUnusedDamageTypes(parts) {
const usedKeys = Object.keys(parts);
return Object.keys(CONFIG.DH.GENERAL.healingTypes).reduce((acc, key) => {
if (!usedKeys.includes(key))
acc.push({
value: key,
label: game.i18n.localize(CONFIG.DH.GENERAL.healingTypes[key].label)
});
return acc;
}, []);
}

View file

@ -91,8 +91,8 @@
"useDefault": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -118,7 +118,7 @@
},
"base": false
}
],
},
"includeBase": false
},
"_id": "TCKVaVweyJzhEArX",
@ -343,7 +343,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -461,8 +461,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -489,7 +489,7 @@
}
}
},
{
"armor": {
"value": {
"custom": {
"enabled": true,
@ -514,7 +514,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -588,8 +588,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -616,7 +616,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -642,8 +642,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -670,7 +670,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -400,8 +400,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -427,7 +427,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},
@ -508,7 +508,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -581,8 +581,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -608,7 +608,7 @@
}
}
},
{
"hope": {
"value": {
"custom": {
"enabled": true,
@ -633,7 +633,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -72,8 +72,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -100,7 +100,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/daggers/dagger-bone-black.webp",
"type": "attack",

View file

@ -85,8 +85,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -112,7 +112,7 @@
},
"base": false
}
]
}
},
"img": "icons/magic/unholy/beam-ringed-impact-purple.webp",
"type": "attack",
@ -256,7 +256,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -336,8 +336,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -363,7 +363,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -414,8 +414,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -440,7 +440,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -608,7 +608,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -681,8 +681,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -708,7 +708,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/bows/longbow-recurve-leather-brown.webp",
"type": "attack",
@ -246,8 +246,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -273,7 +273,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -68,8 +68,8 @@
"description": "<p>A group of trained archers bearing massive bows.</p>",
"attack": {
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -95,7 +95,7 @@
"resultBased": false,
"base": false
}
]
}
},
"name": "Longbow",
"img": "icons/weapons/bows/longbow-recurve-leather-brown.webp",
@ -270,8 +270,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -295,7 +295,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -368,8 +368,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -393,7 +393,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"range": "melee",
"type": "attack",
@ -309,7 +309,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -382,8 +382,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -409,7 +409,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -482,8 +482,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -509,7 +509,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -582,8 +582,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -609,7 +609,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -726,8 +726,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -752,7 +752,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -825,7 +825,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -942,8 +942,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -969,7 +969,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -1049,8 +1049,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -1075,7 +1075,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -1143,8 +1143,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -1170,7 +1170,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -84,8 +84,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -111,7 +111,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/claws/claw-straight-brown.webp",
"type": "attack",
@ -284,8 +284,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -311,7 +311,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -430,8 +430,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -457,7 +457,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"name": "Longsword",
"img": "icons/weapons/swords/sword-guard.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -246,7 +246,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -319,7 +319,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -83,8 +83,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -110,7 +110,7 @@
},
"base": false
}
]
}
},
"img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp",
"type": "attack",
@ -280,8 +280,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -307,7 +307,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},
@ -389,8 +389,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -415,7 +415,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
],
},
"direct": true
},
"name": "Club",
@ -336,8 +336,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false,
@ -365,7 +365,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},
@ -412,8 +412,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -438,7 +438,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -507,8 +507,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -534,7 +534,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},

View file

@ -74,8 +74,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"img": "icons/magic/light/beam-rays-magenta.webp",
"type": "attack",
@ -383,8 +383,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -410,7 +410,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -483,8 +483,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": false
@ -508,7 +508,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -67,8 +67,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -95,7 +95,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false

View file

@ -72,8 +72,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -99,7 +99,7 @@
},
"base": false
}
]
}
},
"name": "Fist Slam",
"img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp",
@ -332,8 +332,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -359,7 +359,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -534,8 +534,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -561,7 +561,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -84,8 +84,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -111,7 +111,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/daggers/dagger-straight-cracked.webp",
"type": "attack",
@ -256,8 +256,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -282,7 +282,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/daggers/dagger-twin-green.webp",
"type": "attack",
@ -253,8 +253,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -279,7 +279,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -84,8 +84,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -111,7 +111,7 @@
},
"base": false
}
]
}
},
"range": "far",
"img": "icons/weapons/staves/staff-ornate-purple.webp",
@ -256,8 +256,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -283,7 +283,7 @@
}
}
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -308,7 +308,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -592,8 +592,8 @@
"recovery": "scene"
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -618,7 +618,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -74,8 +74,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"range": "melee",
"type": "attack",
@ -300,8 +300,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -326,7 +326,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -66,8 +66,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -94,7 +94,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/magic/nature/root-vines-grow-brown.webp",
"type": "attack",
@ -245,8 +245,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -271,7 +271,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -325,8 +325,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -350,7 +350,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "far",
@ -425,8 +425,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -451,7 +451,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -505,8 +505,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -532,7 +532,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -251,8 +251,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -277,7 +277,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -329,8 +329,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -355,7 +355,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -414,8 +414,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -441,7 +441,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -550,8 +550,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -576,7 +576,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
],
},
"direct": true
},
"img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp",
@ -352,7 +352,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
},
"img": "icons/skills/melee/unarmed-punch-fist-yellow-red.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
],
},
"direct": true
},
"type": "attack",
@ -388,8 +388,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -415,7 +415,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},

View file

@ -74,8 +74,8 @@
"motivesAndTactics": "Cause fear, consume fl esh, please masters",
"attack": {
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
"resultBased": false,
"base": false
}
]
}
},
"name": "Claws and Fangs",
"img": "icons/creatures/abilities/mouth-teeth-rows-red.webp",
@ -269,8 +269,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -295,7 +295,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -349,8 +349,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -376,7 +376,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -78,8 +78,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -105,7 +105,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/claws/claw-hooked-curved.webp",
"type": "attack",
@ -312,8 +312,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": false
@ -337,7 +337,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -397,8 +397,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -424,7 +424,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/claws/claw-straight-brown.webp",
"type": "attack",
@ -247,8 +247,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -272,7 +272,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -352,8 +352,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -377,7 +377,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},

View file

@ -81,8 +81,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -251,7 +251,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -297,8 +297,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -324,7 +324,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -438,8 +438,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -464,7 +464,7 @@
},
"type": []
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -489,7 +489,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -68,8 +68,8 @@
"motivesAndTactics": "Avoid larger predators, shock prey, tear apart",
"attack": {
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -95,7 +95,7 @@
"resultBased": false,
"base": false
}
]
}
},
"name": "Shocking Bite",
"img": "icons/creatures/abilities/mouth-teeth-sharp.webp",
@ -270,8 +270,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -297,7 +297,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -67,8 +67,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -95,7 +95,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false

View file

@ -98,8 +98,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -125,7 +125,7 @@
},
"base": false
}
],
},
"includeBase": false
},
"target": {
@ -276,8 +276,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -303,7 +303,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/claws/claw-hooked-barbed.webp",
"range": "melee",

View file

@ -67,8 +67,8 @@
"img": "icons/weapons/axes/axe-battle-skull-black.webp",
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -95,7 +95,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -256,8 +256,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -282,7 +282,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/staves/staff-animal-skull-bull.webp",
"type": "attack",
@ -251,8 +251,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -278,7 +278,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -471,8 +471,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -497,7 +497,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -67,8 +67,8 @@
"useDefault": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -94,7 +94,7 @@
},
"base": false
}
],
},
"includeBase": false
},
"description": "",
@ -337,7 +337,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -416,8 +416,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -443,7 +443,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -516,8 +516,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -543,7 +543,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -653,8 +653,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -679,7 +679,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -67,8 +67,8 @@
"useDefault": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -94,7 +94,7 @@
},
"base": false
}
],
},
"includeBase": false
},
"description": "",
@ -338,7 +338,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -410,8 +410,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -437,7 +437,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -697,8 +697,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -724,7 +724,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -792,8 +792,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -818,7 +818,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -269,8 +269,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -294,7 +294,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -251,8 +251,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -278,7 +278,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -351,8 +351,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -378,7 +378,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -452,8 +452,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -479,7 +479,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -98,8 +98,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -125,7 +125,7 @@
},
"base": false
}
],
},
"includeBase": false
},
"target": {
@ -345,8 +345,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -372,7 +372,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -489,8 +489,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -516,7 +516,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -633,8 +633,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -660,7 +660,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -74,8 +74,8 @@
"motivesAndTactics": "Fly away, harass, steal blood",
"attack": {
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
"resultBased": false,
"base": false
}
]
}
},
"name": "Proboscis",
"img": "icons/skills/wounds/blood-cells-vessel-red.webp",

View file

@ -72,8 +72,8 @@
"name": "Claws",
"img": "icons/creatures/claws/claw-straight-brown.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -100,7 +100,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -272,7 +272,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -62,8 +62,8 @@
"name": "Warhammer",
"img": "icons/weapons/hammers/hammer-double-stone-worn.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -90,7 +90,7 @@
},
"base": false
}
]
}
},
"range": "veryClose",
"roll": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -253,8 +253,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -280,7 +280,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -354,8 +354,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -381,7 +381,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -498,8 +498,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -525,7 +525,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -240,8 +240,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"armor": {
"value": {
"custom": {
"enabled": true,
@ -266,7 +266,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -326,8 +326,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -351,7 +351,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -459,8 +459,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -486,7 +486,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -532,7 +532,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/bows/shortbow-recurve-yellow.webp",
"type": "attack",
@ -399,8 +399,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -426,7 +426,7 @@
}
}
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -451,7 +451,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -531,7 +531,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -642,8 +642,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -669,7 +669,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -268,8 +268,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"armor": {
"value": {
"custom": {
"enabled": true,
@ -294,7 +294,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -422,8 +422,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -449,7 +449,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -567,8 +567,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -594,7 +594,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -245,8 +245,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -272,7 +272,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -401,7 +401,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/slimes/slime-movement-dripping-pseudopods-green.webp",
"type": "attack",
@ -277,8 +277,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"armor": {
"value": {
"custom": {
"enabled": true,
@ -303,7 +303,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -356,8 +356,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -383,7 +383,7 @@
}
}
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -408,7 +408,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
"name": "Sanctified Longbow",
"img": "icons/weapons/bows/shortbow-recurve-yellow.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -314,8 +314,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -341,7 +341,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -65,8 +65,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -93,7 +93,7 @@
},
"base": false
}
]
}
},
"img": "icons/skills/melee/sword-shield-stylized-white.webp",
"type": "attack",

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/polearms/spear-hooked-rounded.webp",
"type": "attack",
@ -278,8 +278,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -305,7 +305,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -85,8 +85,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -112,7 +112,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -258,7 +258,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -398,8 +398,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -425,7 +425,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -244,8 +244,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -270,7 +270,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -322,7 +322,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -394,8 +394,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -420,7 +420,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -542,8 +542,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -568,7 +568,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/skills/melee/strike-blade-hooked-orange-blue.webp",
"type": "attack",
@ -455,8 +455,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -482,7 +482,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -274,8 +274,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"armor": {
"value": {
"custom": {
"enabled": true,
@ -300,7 +300,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -352,8 +352,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -378,7 +378,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -300,8 +300,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -326,7 +326,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -394,8 +394,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -420,7 +420,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/daggers/dagger-twin-green.webp",
"type": "attack",
@ -272,8 +272,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -299,7 +299,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"img": "icons/weapons/staves/staff-blue-jewel.webp",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -337,8 +337,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -364,7 +364,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -85,8 +85,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -112,7 +112,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -277,7 +277,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -64,8 +64,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -92,7 +92,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",

View file

@ -80,8 +80,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -364,8 +364,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -391,7 +391,7 @@
}
}
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -416,7 +416,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -491,8 +491,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -518,7 +518,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -246,8 +246,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -273,7 +273,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -81,8 +81,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -246,8 +246,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -273,7 +273,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -296,7 +296,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -417,7 +417,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -490,8 +490,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -516,7 +516,7 @@
},
"type": []
},
{
"hope": {
"value": {
"custom": {
"enabled": true,
@ -541,7 +541,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -90,8 +90,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -117,7 +117,7 @@
},
"base": false
}
]
}
},
"range": "melee",
"type": "attack",
@ -392,8 +392,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -417,7 +417,7 @@
}
}
},
{
"stress": {
"value": {
"custom": {
"enabled": true,
@ -442,7 +442,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/tentacles/tentacles-octopus-black-pink.webp",
"type": "attack",
@ -327,7 +327,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -445,8 +445,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -472,7 +472,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -546,8 +546,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -573,7 +573,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"range": "melee",
"type": "attack",
@ -244,8 +244,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -269,7 +269,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -342,7 +342,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

View file

@ -86,8 +86,8 @@
},
"range": "close",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -113,7 +113,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -254,8 +254,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false,
@ -283,7 +283,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},
@ -469,8 +469,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -496,7 +496,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -79,8 +79,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -106,7 +106,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/clubs/club-baton-blue.webp",
"type": "attack",
@ -272,8 +272,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -298,7 +298,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -85,8 +85,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -112,7 +112,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -249,8 +249,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -275,7 +275,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -74,8 +74,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"range": "close",
"type": "attack",
@ -317,8 +317,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -343,7 +343,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -448,8 +448,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -475,7 +475,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -557,8 +557,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -584,7 +584,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -74,8 +74,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -299,8 +299,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -325,7 +325,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -385,8 +385,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -412,7 +412,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -544,8 +544,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -571,7 +571,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -75,8 +75,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -102,7 +102,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -297,8 +297,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -324,7 +324,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -405,8 +405,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -432,7 +432,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -511,8 +511,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -537,7 +537,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -578,8 +578,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -604,7 +604,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -674,8 +674,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": true,
@ -701,7 +701,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {

View file

@ -66,8 +66,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -94,7 +94,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",

View file

@ -74,8 +74,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"img": "icons/weapons/axes/axe-double.webp",
"type": "attack",
@ -300,8 +300,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -327,7 +327,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -373,8 +373,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": true,
@ -401,7 +401,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -454,8 +454,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -479,7 +479,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},

View file

@ -85,8 +85,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -112,7 +112,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"range": "melee",
@ -381,8 +381,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"fear": {
"value": {
"custom": {
"enabled": false,
@ -408,7 +408,7 @@
},
"type": []
}
],
},
"includeBase": false,
"direct": false
},

View file

@ -81,8 +81,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -108,7 +108,7 @@
},
"base": false
}
]
}
},
"type": "attack",
"chatDisplay": false
@ -244,8 +244,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -270,7 +270,7 @@
},
"type": []
}
],
},
"includeBase": false
},
"target": {
@ -361,8 +361,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false,
@ -390,7 +390,7 @@
}
}
}
],
},
"includeBase": false,
"direct": true
},
@ -508,7 +508,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -581,8 +581,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -608,7 +608,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -73,8 +73,8 @@
},
"range": "veryClose",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"multiplier": "flat",
"flatMultiplier": 3,
@ -100,7 +100,7 @@
},
"base": false
}
]
}
},
"img": "icons/skills/melee/blood-slash-foam-red.webp",
"type": "attack",
@ -273,8 +273,8 @@
"consumeOnSuccess": false
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false,
@ -302,7 +302,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -80,8 +80,8 @@
},
"range": "far",
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -107,7 +107,7 @@
},
"base": false
}
]
}
},
"img": "icons/magic/symbols/rune-sigil-rough-white-teal.webp",
"type": "attack",
@ -244,8 +244,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hope": {
"value": {
"custom": {
"enabled": true,
@ -270,7 +270,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -322,8 +322,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"stress": {
"value": {
"custom": {
"enabled": true,
@ -348,7 +348,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -407,8 +407,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -434,7 +434,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {
@ -514,7 +514,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -620,8 +620,8 @@
"recovery": null
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -647,7 +647,7 @@
}
}
}
],
},
"includeBase": false
},
"target": {

View file

@ -74,8 +74,8 @@
"type": "attack"
},
"damage": {
"parts": [
{
"parts": {
"hitPoints": {
"value": {
"custom": {
"enabled": false
@ -101,7 +101,7 @@
},
"base": false
}
]
}
},
"img": "icons/creatures/tentacles/tentacle-earth-green.webp",
"type": "attack",
@ -263,7 +263,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -384,7 +384,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {
@ -499,7 +499,7 @@
"recovery": null
},
"damage": {
"parts": [],
"parts": {},
"includeBase": false
},
"target": {

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