mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 03:31:07 +01:00
Merge branch 'main' into release
This commit is contained in:
commit
2e62545aa7
272 changed files with 1194 additions and 388 deletions
23
lang/en.json
23
lang/en.json
|
|
@ -130,7 +130,8 @@
|
||||||
"RangeDependance": {
|
"RangeDependance": {
|
||||||
"hint": "Settings for an optional distance at which this effect should activate",
|
"hint": "Settings for an optional distance at which this effect should activate",
|
||||||
"title": "Range Dependant"
|
"title": "Range Dependant"
|
||||||
}
|
},
|
||||||
|
"immuneStatusText": "Immunity: {status}"
|
||||||
},
|
},
|
||||||
"ACTORS": {
|
"ACTORS": {
|
||||||
"Adversary": {
|
"Adversary": {
|
||||||
|
|
@ -396,7 +397,8 @@
|
||||||
"stressReduction": "Reduce By Stress",
|
"stressReduction": "Reduce By Stress",
|
||||||
"title": "Damage Reduction",
|
"title": "Damage Reduction",
|
||||||
"unncessaryStress": "You don't need to expend stress",
|
"unncessaryStress": "You don't need to expend stress",
|
||||||
"usedMarks": "Used Marks"
|
"usedMarks": "Used Marks",
|
||||||
|
"reduceSeverity": "Severity Reduced By {nr}"
|
||||||
},
|
},
|
||||||
"DeathMove": {
|
"DeathMove": {
|
||||||
"selectMove": "Select Move",
|
"selectMove": "Select Move",
|
||||||
|
|
@ -464,6 +466,9 @@
|
||||||
"title": "Select Image",
|
"title": "Select Image",
|
||||||
"selectImage": "Select Image"
|
"selectImage": "Select Image"
|
||||||
},
|
},
|
||||||
|
"ItemTransfer": {
|
||||||
|
"transfer": "Transfer"
|
||||||
|
},
|
||||||
"Levelup": {
|
"Levelup": {
|
||||||
"actions": {
|
"actions": {
|
||||||
"creatureComfort": {
|
"creatureComfort": {
|
||||||
|
|
@ -1031,7 +1036,8 @@
|
||||||
},
|
},
|
||||||
"ItemResourceType": {
|
"ItemResourceType": {
|
||||||
"simple": "Simple",
|
"simple": "Simple",
|
||||||
"diceValue": "Dice Value"
|
"diceValue": "Dice Value",
|
||||||
|
"die": "Die"
|
||||||
},
|
},
|
||||||
"Range": {
|
"Range": {
|
||||||
"self": {
|
"self": {
|
||||||
|
|
@ -2445,7 +2451,8 @@
|
||||||
"texture": "Texture",
|
"texture": "Texture",
|
||||||
"colorset": "Theme",
|
"colorset": "Theme",
|
||||||
"material": "Material",
|
"material": "Material",
|
||||||
"system": "Dice Preset"
|
"system": "Dice Preset",
|
||||||
|
"font": "Font"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"variantRules": {
|
"variantRules": {
|
||||||
|
|
@ -2526,7 +2533,8 @@
|
||||||
"abilityCheckTitle": "{ability} Check"
|
"abilityCheckTitle": "{ability} Check"
|
||||||
},
|
},
|
||||||
"effectSummary": {
|
"effectSummary": {
|
||||||
"title": "Effects Applied"
|
"title": "Effects Applied",
|
||||||
|
"immunityTo": "Immunity: {immunities}"
|
||||||
},
|
},
|
||||||
"featureTitle": "Class Feature",
|
"featureTitle": "Class Feature",
|
||||||
"groupRoll": {
|
"groupRoll": {
|
||||||
|
|
@ -2650,7 +2658,7 @@
|
||||||
"cardTooHighLevel": "The card is too high level!",
|
"cardTooHighLevel": "The card is too high level!",
|
||||||
"duplicateCard": "You cannot select the same card more than once.",
|
"duplicateCard": "You cannot select the same card more than once.",
|
||||||
"duplicateCharacter": "This actor is already registered in the party members list.",
|
"duplicateCharacter": "This actor is already registered in the party members list.",
|
||||||
"onlyCharactersInPartySheet": "You can only drag characters, companions and adverasries to the party sheet.",
|
"onlyCharactersInPartySheet": "You can only drag characters, companions and adversaries to the party sheet.",
|
||||||
"notPrimary": "The weapon is not a primary weapon!",
|
"notPrimary": "The weapon is not a primary weapon!",
|
||||||
"notSecondary": "The weapon is not a secondary weapon!",
|
"notSecondary": "The weapon is not a secondary weapon!",
|
||||||
"itemTooHighTier": "The item must be from Tier1",
|
"itemTooHighTier": "The item must be from Tier1",
|
||||||
|
|
@ -2724,7 +2732,8 @@
|
||||||
"rightClickExtand": "Right-Click to extand",
|
"rightClickExtand": "Right-Click to extand",
|
||||||
"companionPartnerLevelBlock": "The companion needs an assigned partner to level up.",
|
"companionPartnerLevelBlock": "The companion needs an assigned partner to level up.",
|
||||||
"configureAttribution": "Configure Attribution",
|
"configureAttribution": "Configure Attribution",
|
||||||
"deleteItem": "Delete Item"
|
"deleteItem": "Delete Item",
|
||||||
|
"immune": "Immune"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ export { default as DamageReductionDialog } from './damageReductionDialog.mjs';
|
||||||
export { default as DeathMove } from './deathMove.mjs';
|
export { default as DeathMove } from './deathMove.mjs';
|
||||||
export { default as Downtime } from './downtime.mjs';
|
export { default as Downtime } from './downtime.mjs';
|
||||||
export { default as ImageSelectDialog } from './imageSelectDialog.mjs';
|
export { default as ImageSelectDialog } from './imageSelectDialog.mjs';
|
||||||
|
export { default as ItemTransferDialog } from './itemTransfer.mjs';
|
||||||
export { default as MulticlassChoiceDialog } from './multiclassChoiceDialog.mjs';
|
export { default as MulticlassChoiceDialog } from './multiclassChoiceDialog.mjs';
|
||||||
export { default as OwnershipSelection } from './ownershipSelection.mjs';
|
export { default as OwnershipSelection } from './ownershipSelection.mjs';
|
||||||
export { default as RerollDamageDialog } from './rerollDamageDialog.mjs';
|
export { default as RerollDamageDialog } from './rerollDamageDialog.mjs';
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,11 @@ export default class ActionSelectionDialog extends HandlebarsApplicationMixin(Ap
|
||||||
|
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
async _prepareContext(options) {
|
async _prepareContext(options) {
|
||||||
const actions = this.#item.system.actionsList,
|
const actions = this.#item.system.actionsList.map(action => ({
|
||||||
|
...action.toObject(),
|
||||||
|
id: action.id,
|
||||||
|
img: action.baseAction ? action.parent.parent.img : action.img
|
||||||
|
})),
|
||||||
itemName = this.#item.name;
|
itemName = this.#item.name;
|
||||||
return {
|
return {
|
||||||
...(await super._prepareContext(options)),
|
...(await super._prepareContext(options)),
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
|
||||||
this.reject = reject;
|
this.reject = reject;
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
|
this.damageType = damageType;
|
||||||
this.rulesDefault = game.settings.get(
|
this.rulesDefault = game.settings.get(
|
||||||
CONFIG.DH.id,
|
CONFIG.DH.id,
|
||||||
CONFIG.DH.SETTINGS.gameSettings.Automation
|
CONFIG.DH.SETTINGS.gameSettings.Automation
|
||||||
|
|
@ -57,6 +58,11 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.reduceSeverity = this.damageType.reduce((value, curr) => {
|
||||||
|
return Math.max(this.actor.system.rules.damageReduction.reduceSeverity[curr], value);
|
||||||
|
}, 0);
|
||||||
|
this.actor.system.rules.damageReduction.reduceSeverity[this.damageType];
|
||||||
|
|
||||||
this.thresholdImmunities = Object.keys(actor.system.rules.damageReduction.thresholdImmunities).reduce(
|
this.thresholdImmunities = Object.keys(actor.system.rules.damageReduction.thresholdImmunities).reduce(
|
||||||
(acc, key) => {
|
(acc, key) => {
|
||||||
if (actor.system.rules.damageReduction.thresholdImmunities[key])
|
if (actor.system.rules.damageReduction.thresholdImmunities[key])
|
||||||
|
|
@ -111,7 +117,9 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
|
||||||
CONFIG.DH.GENERAL.ruleChoice.onWithToggle.id,
|
CONFIG.DH.GENERAL.ruleChoice.onWithToggle.id,
|
||||||
CONFIG.DH.GENERAL.ruleChoice.offWithToggle.id
|
CONFIG.DH.GENERAL.ruleChoice.offWithToggle.id
|
||||||
].includes(this.rulesDefault);
|
].includes(this.rulesDefault);
|
||||||
context.thresholdImmunities = this.thresholdImmunities;
|
context.reduceSeverity = this.reduceSeverity;
|
||||||
|
context.thresholdImmunities =
|
||||||
|
Object.keys(this.thresholdImmunities).length > 0 ? this.thresholdImmunities : null;
|
||||||
|
|
||||||
const { selectedArmorMarks, selectedStressMarks, stressReductions, currentMarks, currentDamage } =
|
const { selectedArmorMarks, selectedStressMarks, stressReductions, currentMarks, currentDamage } =
|
||||||
this.getDamageInfo();
|
this.getDamageInfo();
|
||||||
|
|
@ -173,6 +181,9 @@ export default class DamageReductionDialog extends HandlebarsApplicationMixin(Ap
|
||||||
this.damage - armorMarkReduction - selectedStressMarks.length - stressReductions.length,
|
this.damage - armorMarkReduction - selectedStressMarks.length - stressReductions.length,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
if (this.reduceSeverity) {
|
||||||
|
currentDamage = Math.max(currentDamage - this.reduceSeverity, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (this.thresholdImmunities[currentDamage]) currentDamage = 0;
|
if (this.thresholdImmunities[currentDamage]) currentDamage = 0;
|
||||||
|
|
||||||
|
|
|
||||||
70
module/applications/dialogs/itemTransfer.mjs
Normal file
70
module/applications/dialogs/itemTransfer.mjs
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
|
||||||
|
|
||||||
|
export default class ItemTransferDialog extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
|
constructor(item) {
|
||||||
|
super({});
|
||||||
|
|
||||||
|
this.item = item;
|
||||||
|
this.quantity = item.system.quantity;
|
||||||
|
}
|
||||||
|
|
||||||
|
get title() {
|
||||||
|
return this.item.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
tag: 'form',
|
||||||
|
classes: ['daggerheart', 'dh-style', 'dialog', 'item-transfer'],
|
||||||
|
position: { width: 300, height: 'auto' },
|
||||||
|
window: { icon: 'fa-solid fa-hand-holding-hand' },
|
||||||
|
actions: {
|
||||||
|
finish: ItemTransferDialog.#finish
|
||||||
|
},
|
||||||
|
form: { handler: this.updateData, submitOnChange: true, closeOnSubmit: false }
|
||||||
|
};
|
||||||
|
|
||||||
|
static PARTS = {
|
||||||
|
main: { template: 'systems/daggerheart/templates/dialogs/item-transfer.hbs' }
|
||||||
|
};
|
||||||
|
|
||||||
|
_attachPartListeners(partId, htmlElement, options) {
|
||||||
|
super._attachPartListeners(partId, htmlElement, options);
|
||||||
|
|
||||||
|
htmlElement.querySelector('.number-display').addEventListener('change', event => {
|
||||||
|
this.quantity = isNaN(event.target.value) ? this.quantity : Number(event.target.value);
|
||||||
|
this.render();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async _prepareContext(_options) {
|
||||||
|
const context = await super._prepareContext(_options);
|
||||||
|
context.item = this.item;
|
||||||
|
context.quantity = this.quantity;
|
||||||
|
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
static async updateData(_event, _element, formData) {
|
||||||
|
const { quantity } = foundry.utils.expandObject(formData.object);
|
||||||
|
this.quantity = quantity;
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
static async #finish() {
|
||||||
|
this.close({ submitted: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
close(options = {}) {
|
||||||
|
if (!options.submitted) this.quantity = null;
|
||||||
|
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
static async configure(item) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
const app = new this(item);
|
||||||
|
app.addEventListener('close', () => resolve(app.quantity), { once: true });
|
||||||
|
app.render({ force: true });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -33,7 +33,10 @@ export default class DHTokenHUD extends foundry.applications.hud.TokenHUD {
|
||||||
: context.canToggleCombat;
|
: context.canToggleCombat;
|
||||||
context.systemStatusEffects = Object.keys(context.statusEffects).reduce((acc, key) => {
|
context.systemStatusEffects = Object.keys(context.statusEffects).reduce((acc, key) => {
|
||||||
const effect = context.statusEffects[key];
|
const effect = context.statusEffects[key];
|
||||||
if (effect.systemEffect) acc[key] = effect;
|
if (effect.systemEffect) {
|
||||||
|
const disabled = !effect.isActive && this.actor.system.rules.conditionImmunities[key];
|
||||||
|
acc[key] = { ...effect, disabled };
|
||||||
|
}
|
||||||
|
|
||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ export default class DHAppearanceSettings extends HandlebarsApplicationMixin(App
|
||||||
context.diceSoNiceSystems = Object.fromEntries(
|
context.diceSoNiceSystems = Object.fromEntries(
|
||||||
[...game.dice3d.DiceFactory.systems].map(([k, v]) => [k, v.name])
|
[...game.dice3d.DiceFactory.systems].map(([k, v]) => [k, v.name])
|
||||||
);
|
);
|
||||||
|
context.diceSoNiceFonts = game.dice3d.exports.Utils.prepareFontList();
|
||||||
|
|
||||||
foundry.utils.mergeObject(
|
foundry.utils.mergeObject(
|
||||||
context.dsnTabs,
|
context.dsnTabs,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import { getDocFromElement, getDocFromElementSync } from '../../../helpers/utils
|
||||||
|
|
||||||
/**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */
|
/**@typedef {import('@client/applications/_types.mjs').ApplicationClickAction} ApplicationClickAction */
|
||||||
|
|
||||||
const { TextEditor } = foundry.applications.ux;
|
|
||||||
export default class CharacterSheet extends DHBaseActorSheet {
|
export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
/**@inheritdoc */
|
/**@inheritdoc */
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
|
|
@ -31,6 +30,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
toggleEquipItem: CharacterSheet.#toggleEquipItem,
|
toggleEquipItem: CharacterSheet.#toggleEquipItem,
|
||||||
toggleResourceDice: CharacterSheet.#toggleResourceDice,
|
toggleResourceDice: CharacterSheet.#toggleResourceDice,
|
||||||
handleResourceDice: CharacterSheet.#handleResourceDice,
|
handleResourceDice: CharacterSheet.#handleResourceDice,
|
||||||
|
advanceResourceDie: CharacterSheet.#advanceResourceDie,
|
||||||
cancelBeastform: CharacterSheet.#cancelBeastform,
|
cancelBeastform: CharacterSheet.#cancelBeastform,
|
||||||
useDowntime: this.useDowntime
|
useDowntime: this.useDowntime
|
||||||
},
|
},
|
||||||
|
|
@ -148,6 +148,10 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
htmlElement.querySelectorAll('.armor-marks-input').forEach(element => {
|
htmlElement.querySelectorAll('.armor-marks-input').forEach(element => {
|
||||||
element.addEventListener('change', this.updateArmorMarks.bind(this));
|
element.addEventListener('change', this.updateArmorMarks.bind(this));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
htmlElement.querySelectorAll('.item-resource.die').forEach(element => {
|
||||||
|
element.addEventListener('contextmenu', this.lowerResourceDie.bind(this));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @inheritdoc */
|
/** @inheritdoc */
|
||||||
|
|
@ -858,6 +862,27 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
|
static #advanceResourceDie(_, target) {
|
||||||
|
this.updateResourceDie(target, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
lowerResourceDie(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
this.updateResourceDie(event.target, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateResourceDie(target, advance) {
|
||||||
|
const item = await getDocFromElement(target);
|
||||||
|
if (!item) return;
|
||||||
|
|
||||||
|
const advancedValue = item.system.resource.value + (advance ? 1 : -1);
|
||||||
|
await item.update({
|
||||||
|
'system.resource.value': Math.min(advancedValue, Number(item.system.resource.dieFaces.split('d')[1]))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
@ -881,6 +906,8 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
const item = await getDocFromElement(event.target);
|
const item = await getDocFromElement(event.target);
|
||||||
|
|
||||||
const dragData = {
|
const dragData = {
|
||||||
|
originActor: this.document.uuid,
|
||||||
|
originId: item.id,
|
||||||
type: item.documentName,
|
type: item.documentName,
|
||||||
uuid: item.uuid
|
uuid: item.uuid
|
||||||
};
|
};
|
||||||
|
|
@ -894,9 +921,12 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
// Prevent event bubbling to avoid duplicate handling
|
// Prevent event bubbling to avoid duplicate handling
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
||||||
|
|
||||||
super._onDrop(event);
|
const { cancel } = await super._onDrop(event);
|
||||||
this._onDropItem(event, TextEditor.getDragEventData(event));
|
if (cancel) return;
|
||||||
|
|
||||||
|
this._onDropItem(event, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onDropItem(event, data) {
|
async _onDropItem(event, data) {
|
||||||
|
|
@ -907,6 +937,14 @@ export default class CharacterSheet extends DHBaseActorSheet {
|
||||||
itemData.system.inVault = true;
|
itemData.system.inVault = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const typesThatReplace = ['ancestry', 'community'];
|
||||||
|
if (typesThatReplace.includes(item.type)) {
|
||||||
|
await this.document.deleteEmbeddedDocuments(
|
||||||
|
'Item',
|
||||||
|
this.document.items.filter(x => x.type === item.type).map(x => x.id)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (item.type === 'beastform') {
|
if (item.type === 'beastform') {
|
||||||
if (this.document.effects.find(x => x.type === 'beastform')) {
|
if (this.document.effects.find(x => x.type === 'beastform')) {
|
||||||
return ui.notifications.warn(
|
return ui.notifications.warn(
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export default class DhpEnvironment extends DHBaseActorSheet {
|
||||||
toggleResourceDice: DhpEnvironment.#toggleResourceDice,
|
toggleResourceDice: DhpEnvironment.#toggleResourceDice,
|
||||||
handleResourceDice: DhpEnvironment.#handleResourceDice
|
handleResourceDice: DhpEnvironment.#handleResourceDice
|
||||||
},
|
},
|
||||||
dragDrop: [{ dragSelector: '.action-section .inventory-item', dropSelector: null }]
|
dragDrop: [{ dragSelector: '.inventory-item', dropSelector: null }]
|
||||||
};
|
};
|
||||||
|
|
||||||
/**@override */
|
/**@override */
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import { socketEvent } from '../../../systemRegistration/socket.mjs';
|
||||||
import GroupRollDialog from '../../dialogs/group-roll-dialog.mjs';
|
import GroupRollDialog from '../../dialogs/group-roll-dialog.mjs';
|
||||||
import DhpActor from '../../../documents/actor.mjs';
|
import DhpActor from '../../../documents/actor.mjs';
|
||||||
import DHItem from '../../../documents/item.mjs';
|
import DHItem from '../../../documents/item.mjs';
|
||||||
import DhParty from '../../../data/actor/party.mjs';
|
|
||||||
|
|
||||||
export default class Party extends DHBaseActorSheet {
|
export default class Party extends DHBaseActorSheet {
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
|
|
@ -21,7 +20,7 @@ export default class Party extends DHBaseActorSheet {
|
||||||
classes: ['party'],
|
classes: ['party'],
|
||||||
position: {
|
position: {
|
||||||
width: 550,
|
width: 550,
|
||||||
height: 900,
|
height: 900
|
||||||
},
|
},
|
||||||
window: {
|
window: {
|
||||||
resizable: true
|
resizable: true
|
||||||
|
|
@ -41,7 +40,7 @@ export default class Party extends DHBaseActorSheet {
|
||||||
selectRefreshable: DaggerheartMenu.selectRefreshable,
|
selectRefreshable: DaggerheartMenu.selectRefreshable,
|
||||||
refreshActors: DaggerheartMenu.refreshActors
|
refreshActors: DaggerheartMenu.refreshActors
|
||||||
},
|
},
|
||||||
dragDrop: [{ dragSelector: '.actors-section .inventory-item', dropSelector: null }]
|
dragDrop: [{ dragSelector: '[data-item-id][draggable="true"]', dropSelector: null }]
|
||||||
};
|
};
|
||||||
|
|
||||||
/**@override */
|
/**@override */
|
||||||
|
|
@ -439,23 +438,28 @@ export default class Party extends DHBaseActorSheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
async _onDragStart(event) {
|
async _onDragStart(event) {
|
||||||
const item = event.currentTarget.closest('.inventory-item');
|
const item = await getDocFromElement(event.target);
|
||||||
|
const dragData = {
|
||||||
|
originActor: this.document.uuid,
|
||||||
|
originId: item.id,
|
||||||
|
type: item.documentName,
|
||||||
|
uuid: item.uuid
|
||||||
|
};
|
||||||
|
|
||||||
if (item) {
|
event.dataTransfer.setData('text/plain', JSON.stringify(dragData));
|
||||||
const adversaryData = { type: 'Actor', uuid: item.dataset.itemUuid };
|
super._onDragStart(event);
|
||||||
event.dataTransfer.setData('text/plain', JSON.stringify(adversaryData));
|
|
||||||
event.dataTransfer.setDragImage(item, 60, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
// Prevent event bubbling to avoid duplicate handling
|
// Prevent event bubbling to avoid duplicate handling
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
||||||
|
|
||||||
|
const { cancel } = await super._onDrop(event);
|
||||||
|
if (cancel) return;
|
||||||
|
|
||||||
const document = await foundry.utils.fromUuid(data.uuid);
|
const document = await foundry.utils.fromUuid(data.uuid);
|
||||||
|
|
||||||
if (document instanceof DhpActor && Party.ALLOWED_ACTOR_TYPES.includes(document.type)) {
|
if (document instanceof DhpActor && Party.ALLOWED_ACTOR_TYPES.includes(document.type)) {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { itemIsIdentical } from '../../../helpers/utils.mjs';
|
||||||
import DHBaseActorSettings from './actor-setting.mjs';
|
import DHBaseActorSettings from './actor-setting.mjs';
|
||||||
import DHApplicationMixin from './application-mixin.mjs';
|
import DHApplicationMixin from './application-mixin.mjs';
|
||||||
|
|
||||||
|
|
@ -217,6 +218,70 @@ export default class DHBaseActorSheet extends DHApplicationMixin(ActorSheetV2) {
|
||||||
/* Application Drag/Drop */
|
/* Application Drag/Drop */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
|
async _onDrop(event) {
|
||||||
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
||||||
|
if (data.originActor === this.document.uuid) return { cancel: true };
|
||||||
|
|
||||||
|
/* Handling transfer of inventoryItems */
|
||||||
|
let cancel = false;
|
||||||
|
const physicalActorTypes = ['character', 'party'];
|
||||||
|
if (physicalActorTypes.includes(this.document.type)) {
|
||||||
|
const originActor = data.originActor ? await foundry.utils.fromUuid(data.originActor) : null;
|
||||||
|
if (data.originId && originActor && physicalActorTypes.includes(originActor.type)) {
|
||||||
|
const dropDocument = await foundry.utils.fromUuid(data.uuid);
|
||||||
|
|
||||||
|
if (dropDocument.system.metadata.isInventoryItem) {
|
||||||
|
cancel = true;
|
||||||
|
if (dropDocument.system.metadata.isQuantifiable) {
|
||||||
|
const actorItem = originActor.items.get(data.originId);
|
||||||
|
const quantityTransfered =
|
||||||
|
actorItem.system.quantity === 1
|
||||||
|
? 1
|
||||||
|
: await game.system.api.applications.dialogs.ItemTransferDialog.configure(dropDocument);
|
||||||
|
|
||||||
|
if (quantityTransfered) {
|
||||||
|
if (quantityTransfered === actorItem.system.quantity) {
|
||||||
|
await originActor.deleteEmbeddedDocuments('Item', [data.originId]);
|
||||||
|
} else {
|
||||||
|
cancel = true;
|
||||||
|
await actorItem.update({
|
||||||
|
'system.quantity': actorItem.system.quantity - quantityTransfered
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const existingItem = this.document.items.find(x => itemIsIdentical(x, dropDocument));
|
||||||
|
if (existingItem) {
|
||||||
|
cancel = true;
|
||||||
|
await existingItem.update({
|
||||||
|
'system.quantity': existingItem.system.quantity + quantityTransfered
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
const createData = dropDocument.toObject();
|
||||||
|
await this.document.createEmbeddedDocuments('Item', [
|
||||||
|
{
|
||||||
|
...createData,
|
||||||
|
system: {
|
||||||
|
...createData.system,
|
||||||
|
quantity: quantityTransfered
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cancel = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await originActor.deleteEmbeddedDocuments('Item', [data.originId], { render: false });
|
||||||
|
const createData = dropDocument.toObject();
|
||||||
|
await this.document.createEmbeddedDocuments('Item', [createData]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { cancel };
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On dragStart on the item.
|
* On dragStart on the item.
|
||||||
* @param {DragEvent} event - The drag event
|
* @param {DragEvent} event - The drag event
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,9 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
removeResource: DHBaseItemSheet.#removeResource
|
removeResource: DHBaseItemSheet.#removeResource
|
||||||
},
|
},
|
||||||
dragDrop: [
|
dragDrop: [
|
||||||
{ dragSelector: null, dropSelector: '.tab.features .drop-section' },
|
{ dragSelector: null, dropSelector: '.drop-section' },
|
||||||
{ dragSelector: '.feature-item', dropSelector: null },
|
{ dragSelector: '.feature-item', dropSelector: null },
|
||||||
{ dragSelector: '.action-item', dropSelector: null }
|
{ dragSelector: '.inventory-item', dropSelector: null }
|
||||||
],
|
],
|
||||||
contextMenus: [
|
contextMenus: [
|
||||||
{
|
{
|
||||||
|
|
@ -199,18 +199,32 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
static async #deleteFeature(_, element) {
|
static async #deleteFeature(_, element) {
|
||||||
const target = element.closest('[data-item-uuid]');
|
const target = element.closest('[data-item-uuid]');
|
||||||
const feature = await getDocFromElement(target);
|
const feature = await getDocFromElement(target);
|
||||||
|
|
||||||
if (!feature) {
|
if (!feature) {
|
||||||
await this.document.update({
|
await this.document.update({
|
||||||
'system.features': this.document.system.features
|
'system.features': this.document.system.features
|
||||||
.filter(x => x.item)
|
.filter(x => x.item)
|
||||||
.map(x => ({ ...x, item: x.item.uuid }))
|
.map(x => ({ ...x, item: x.item.uuid }))
|
||||||
});
|
});
|
||||||
} else
|
} else {
|
||||||
|
const confirmed = await foundry.applications.api.DialogV2.confirm({
|
||||||
|
window: {
|
||||||
|
title: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.title', {
|
||||||
|
type: game.i18n.localize('TYPES.Item.feature'),
|
||||||
|
name: feature.name
|
||||||
|
})
|
||||||
|
},
|
||||||
|
content: game.i18n.format('DAGGERHEART.APPLICATIONS.DeleteConfirmation.text', { name: feature.name })
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!confirmed) return;
|
||||||
|
|
||||||
await this.document.update({
|
await this.document.update({
|
||||||
'system.features': this.document.system.features
|
'system.features': this.document.system.features
|
||||||
.filter(x => target.dataset.type !== x.type || x.item.uuid !== feature.uuid)
|
.filter(x => target.dataset.type !== x.type || x.item.uuid !== feature.uuid)
|
||||||
.map(x => ({ ...x, item: x.item.uuid }))
|
.map(x => ({ ...x, item: x.item.uuid }))
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -242,37 +256,30 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
* @param {DragEvent} event - The drag event
|
* @param {DragEvent} event - The drag event
|
||||||
*/
|
*/
|
||||||
async _onDragStart(event) {
|
async _onDragStart(event) {
|
||||||
|
/* Can prolly be improved a lot, but I don't wanna >_< */
|
||||||
const featureItem = event.currentTarget.closest('.feature-item');
|
const featureItem = event.currentTarget.closest('.feature-item');
|
||||||
|
const inventoryItem = event.currentTarget.closest('.inventory-item');
|
||||||
|
const lineItem = event.currentTarget.closest('.item-line');
|
||||||
|
const dragItemData = featureItem ?? inventoryItem ?? lineItem;
|
||||||
|
|
||||||
if (featureItem) {
|
const dragItem = await foundry.utils.fromUuid(dragItemData.dataset.itemUuid);
|
||||||
const feature = this.document.system.features.find(x => x?.id === featureItem.id);
|
if (dragItem) {
|
||||||
if (!feature) {
|
if (!dragItem) {
|
||||||
ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.featureIsMissing'));
|
ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.featureIsMissing'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const featureData = { type: 'Item', data: { ...feature.toObject(), _id: null }, fromInternal: true };
|
let dragData = {};
|
||||||
event.dataTransfer.setData('text/plain', JSON.stringify(featureData));
|
if (dragItemData.dataset.type === 'effect')
|
||||||
event.dataTransfer.setDragImage(featureItem.querySelector('img'), 60, 0);
|
dragData = {
|
||||||
} else {
|
type: 'ActiveEffect',
|
||||||
const actionItem = event.currentTarget.closest('.action-item');
|
fromInternal: this.document.uuid,
|
||||||
if (actionItem) {
|
data: { ...dragItem, uuid: dragItem.uuid, id: dragItem.id }
|
||||||
const action = this.document.system.actions[actionItem.dataset.index];
|
|
||||||
if (!action) {
|
|
||||||
ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.actionIsMissing'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const actionData = {
|
|
||||||
type: 'Action',
|
|
||||||
data: { ...action.toObject(), id: action.id, itemUuid: this.document.uuid },
|
|
||||||
fromInternal: true
|
|
||||||
};
|
};
|
||||||
event.dataTransfer.setData('text/plain', JSON.stringify(actionData));
|
else dragData = { type: 'Item', uuid: dragItem.uuid, id: dragItem.id, fromInternal: this.document.id };
|
||||||
event.dataTransfer.setDragImage(actionItem.querySelector('img'), 60, 0);
|
|
||||||
} else {
|
event.dataTransfer.setData('text/plain', JSON.stringify(dragData));
|
||||||
super._onDragStart(event);
|
event.dataTransfer.setDragImage(dragItemData.querySelector('img'), 60, 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -284,7 +291,7 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) {
|
||||||
super._onDrop(event);
|
super._onDrop(event);
|
||||||
|
|
||||||
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event);
|
||||||
if (data.fromInternal) return;
|
if (data.fromInternal === this.document.id) return;
|
||||||
|
|
||||||
const target = event.target.closest('fieldset.drop-section');
|
const target = event.target.closest('fieldset.drop-section');
|
||||||
let item = await fromUuid(data.uuid);
|
let item = await fromUuid(data.uuid);
|
||||||
|
|
|
||||||
|
|
@ -125,8 +125,8 @@ export default class ClassSheet extends DHBaseItemSheet {
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const data = TextEditor.getDragEventData(event);
|
const data = TextEditor.getDragEventData(event);
|
||||||
const item = data.data ?? (await fromUuid(data.uuid));
|
const item = await fromUuid(data.uuid);
|
||||||
const itemType = data.data ? data.type : item.type;
|
const itemType = data.type === 'ActiveEffect' ? data.type : item.type;
|
||||||
const target = event.target.closest('fieldset.drop-section');
|
const target = event.target.closest('fieldset.drop-section');
|
||||||
if (itemType === 'subclass') {
|
if (itemType === 'subclass') {
|
||||||
if (item.system.linkedClass) {
|
if (item.system.linkedClass) {
|
||||||
|
|
|
||||||
|
|
@ -184,9 +184,9 @@ export default class DhCountdowns extends HandlebarsApplicationMixin(Application
|
||||||
const countdown = settings.countdowns[target.id];
|
const countdown = settings.countdowns[target.id];
|
||||||
const newMax =
|
const newMax =
|
||||||
countdown.progress.looping === CONFIG.DH.GENERAL.countdownLoopingTypes.increasing.id
|
countdown.progress.looping === CONFIG.DH.GENERAL.countdownLoopingTypes.increasing.id
|
||||||
? countdown.progress.max + 1
|
? Number(countdown.progress.max) + 1
|
||||||
: countdown.progress.looping === CONFIG.DH.GENERAL.countdownLoopingTypes.decreasing.id
|
: countdown.progress.looping === CONFIG.DH.GENERAL.countdownLoopingTypes.decreasing.id
|
||||||
? Math.max(countdown.progress.max - 1, 0)
|
? Math.max(Number(countdown.progress.max) - 1, 0)
|
||||||
: countdown.progress.max;
|
: countdown.progress.max;
|
||||||
await settings.updateSource({
|
await settings.updateSource({
|
||||||
[`countdowns.${target.id}.progress`]: {
|
[`countdowns.${target.id}.progress`]: {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ export default class DhTokenPlaceable extends foundry.canvas.placeables.Token {
|
||||||
acc.push({
|
acc.push({
|
||||||
name: game.i18n.localize(statusData.name),
|
name: game.i18n.localize(statusData.name),
|
||||||
statuses: [status],
|
statuses: [status],
|
||||||
img: statusData.icon,
|
img: statusData.icon ?? statusData.img,
|
||||||
tint: effect.tint
|
tint: effect.tint
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1519,6 +1519,10 @@ export const itemResourceTypes = {
|
||||||
diceValue: {
|
diceValue: {
|
||||||
id: 'diceValue',
|
id: 'diceValue',
|
||||||
label: 'DAGGERHEART.CONFIG.ItemResourceType.diceValue'
|
label: 'DAGGERHEART.CONFIG.ItemResourceType.diceValue'
|
||||||
|
},
|
||||||
|
die: {
|
||||||
|
id: 'die',
|
||||||
|
label: 'DAGGERHEART.CONFIG.ItemResourceType.die'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
||||||
_id: new fields.DocumentIdField({ initial: () => foundry.utils.randomID() }),
|
_id: new fields.DocumentIdField({ initial: () => foundry.utils.randomID() }),
|
||||||
systemPath: new fields.StringField({ required: true, initial: 'actions' }),
|
systemPath: new fields.StringField({ required: true, initial: 'actions' }),
|
||||||
type: new fields.StringField({ initial: undefined, readonly: true, required: true }),
|
type: new fields.StringField({ initial: undefined, readonly: true, required: true }),
|
||||||
|
baseAction: new fields.BooleanField({ initial: false }),
|
||||||
name: new fields.StringField({ initial: undefined }),
|
name: new fields.StringField({ initial: undefined }),
|
||||||
description: new fields.HTMLField(),
|
description: new fields.HTMLField(),
|
||||||
img: new fields.FilePathField({ initial: undefined, categories: ['IMAGE'], base64: false }),
|
img: new fields.FilePathField({ initial: undefined, categories: ['IMAGE'], base64: false }),
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,13 @@ export default class DhpAdversary extends BaseDataActor {
|
||||||
hitPoints: resourceField(0, 0, 'DAGGERHEART.GENERAL.HitPoints.plural', true),
|
hitPoints: resourceField(0, 0, 'DAGGERHEART.GENERAL.HitPoints.plural', true),
|
||||||
stress: resourceField(0, 0, 'DAGGERHEART.GENERAL.stress', true)
|
stress: resourceField(0, 0, 'DAGGERHEART.GENERAL.stress', true)
|
||||||
}),
|
}),
|
||||||
|
rules: new fields.SchemaField({
|
||||||
|
conditionImmunities: new fields.SchemaField({
|
||||||
|
hidden: new fields.BooleanField({ initial: false }),
|
||||||
|
restrained: new fields.BooleanField({ initial: false }),
|
||||||
|
vulnerable: new fields.BooleanField({ initial: false })
|
||||||
|
})
|
||||||
|
}),
|
||||||
attack: new ActionField({
|
attack: new ActionField({
|
||||||
initial: {
|
initial: {
|
||||||
name: 'Attack',
|
name: 'Attack',
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,10 @@ export default class DhCharacter extends BaseDataActor {
|
||||||
thresholdImmunities: new fields.SchemaField({
|
thresholdImmunities: new fields.SchemaField({
|
||||||
minor: new fields.BooleanField({ initial: false })
|
minor: new fields.BooleanField({ initial: false })
|
||||||
}),
|
}),
|
||||||
|
reduceSeverity: new fields.SchemaField({
|
||||||
|
magical: new fields.NumberField({ initial: 0, min: 0 }),
|
||||||
|
physical: new fields.NumberField({ initial: 0, min: 0 })
|
||||||
|
}),
|
||||||
disabledArmor: new fields.BooleanField({ intial: false })
|
disabledArmor: new fields.BooleanField({ intial: false })
|
||||||
}),
|
}),
|
||||||
attack: new fields.SchemaField({
|
attack: new fields.SchemaField({
|
||||||
|
|
@ -279,6 +283,11 @@ export default class DhCharacter extends BaseDataActor {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
|
conditionImmunities: new fields.SchemaField({
|
||||||
|
hidden: new fields.BooleanField({ initial: false }),
|
||||||
|
restrained: new fields.BooleanField({ initial: false }),
|
||||||
|
vulnerable: new fields.BooleanField({ initial: false })
|
||||||
|
}),
|
||||||
runeWard: new fields.BooleanField({ initial: false }),
|
runeWard: new fields.BooleanField({ initial: false }),
|
||||||
burden: new fields.SchemaField({
|
burden: new fields.SchemaField({
|
||||||
ignore: new fields.BooleanField()
|
ignore: new fields.BooleanField()
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,13 @@ export default class DhCompanion extends BaseDataActor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
rules: new fields.SchemaField({
|
||||||
|
conditionImmunities: new fields.SchemaField({
|
||||||
|
hidden: new fields.BooleanField({ initial: false }),
|
||||||
|
restrained: new fields.BooleanField({ initial: false }),
|
||||||
|
vulnerable: new fields.BooleanField({ initial: false })
|
||||||
|
})
|
||||||
|
}),
|
||||||
attack: new ActionField({
|
attack: new ActionField({
|
||||||
initial: {
|
initial: {
|
||||||
name: 'Attack',
|
name: 'Attack',
|
||||||
|
|
|
||||||
|
|
@ -47,15 +47,30 @@ export default class EffectsField extends fields.ArrayField {
|
||||||
static async applyEffects(targets) {
|
static async applyEffects(targets) {
|
||||||
if (!this.effects?.length || !targets?.length) return;
|
if (!this.effects?.length || !targets?.length) return;
|
||||||
|
|
||||||
|
const conditions = CONFIG.DH.GENERAL.conditions();
|
||||||
let effects = this.effects;
|
let effects = this.effects;
|
||||||
const messageTargets = [];
|
const messageTargets = [];
|
||||||
targets.forEach(async baseToken => {
|
targets.forEach(async baseToken => {
|
||||||
if (this.hasSave && token.saved.success === true) effects = this.effects.filter(e => e.onSave === true);
|
if (this.hasSave && token.saved.success === true) effects = this.effects.filter(e => e.onSave === true);
|
||||||
if (!effects.length) return;
|
if (!effects.length) return;
|
||||||
|
|
||||||
const token = canvas.tokens.get(baseToken.id);
|
const token =
|
||||||
|
canvas.tokens.get(baseToken.id) ?? foundry.utils.fromUuidSync(baseToken.actorId).prototypeToken;
|
||||||
if (!token) return;
|
if (!token) return;
|
||||||
messageTargets.push(token.document);
|
|
||||||
|
const messageToken = token.document ?? token;
|
||||||
|
const conditionImmunities = messageToken.actor.system.rules.conditionImmunities ?? {};
|
||||||
|
messageTargets.push({
|
||||||
|
token: messageToken,
|
||||||
|
conditionImmunities: Object.values(conditionImmunities).some(x => x)
|
||||||
|
? game.i18n.format('DAGGERHEART.UI.Chat.effectSummary.immunityTo', {
|
||||||
|
immunities: Object.keys(conditionImmunities)
|
||||||
|
.filter(x => conditionImmunities[x])
|
||||||
|
.map(x => game.i18n.localize(conditions[x].name))
|
||||||
|
.join(', ')
|
||||||
|
})
|
||||||
|
: null
|
||||||
|
});
|
||||||
|
|
||||||
effects.forEach(async e => {
|
effects.forEach(async e => {
|
||||||
const effect = this.item.effects.get(e._id);
|
const effect = this.item.effects.get(e._id);
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,11 @@ export function ActionMixin(Base) {
|
||||||
const systemData = {
|
const systemData = {
|
||||||
title: game.i18n.localize('DAGGERHEART.CONFIG.ActionType.action'),
|
title: game.i18n.localize('DAGGERHEART.CONFIG.ActionType.action'),
|
||||||
origin: origin,
|
origin: origin,
|
||||||
action: { name: this.name, img: this.img, tags: this.tags ? this.tags : ['Spell', 'Arcana', 'Lv 10'] },
|
action: {
|
||||||
|
name: this.name,
|
||||||
|
img: this.baseAction ? this.parent.parent.img : this.img,
|
||||||
|
tags: this.tags ? this.tags : ['Spell', 'Arcana', 'Lv 10']
|
||||||
|
},
|
||||||
itemOrigin: this.item,
|
itemOrigin: this.item,
|
||||||
description: this.description || (this.item instanceof Item ? this.item.system.description : '')
|
description: this.description || (this.item instanceof Item ? this.item.system.description : '')
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ export default class DHWeapon extends AttachableItem {
|
||||||
name: 'Attack',
|
name: 'Attack',
|
||||||
img: 'icons/skills/melee/blood-slash-foam-red.webp',
|
img: 'icons/skills/melee/blood-slash-foam-red.webp',
|
||||||
_id: foundry.utils.randomID(),
|
_id: foundry.utils.randomID(),
|
||||||
|
baseAction: true,
|
||||||
|
chatDisplay: false,
|
||||||
systemPath: 'attack',
|
systemPath: 'attack',
|
||||||
type: 'attack',
|
type: 'attack',
|
||||||
range: 'melee',
|
range: 'melee',
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ export default class DhAppearance extends foundry.abstract.DataModel {
|
||||||
texture: new StringField({ initial: 'astralsea', required: true, blank: false }),
|
texture: new StringField({ initial: 'astralsea', required: true, blank: false }),
|
||||||
colorset: new StringField({ initial: 'inspired', required: true, blank: false }),
|
colorset: new StringField({ initial: 'inspired', required: true, blank: false }),
|
||||||
material: new StringField({ initial: 'metal', required: true, blank: false }),
|
material: new StringField({ initial: 'metal', required: true, blank: false }),
|
||||||
system: new StringField({ initial: 'standard', required: true, blank: false })
|
system: new StringField({ initial: 'standard', required: true, blank: false }),
|
||||||
|
font: new StringField({ initial: 'auto', required: true, blank: false })
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,27 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
|
||||||
update.img = 'icons/magic/life/heart-cross-blue.webp';
|
update.img = 'icons/magic/life/heart-cross-blue.webp';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const immuneStatuses =
|
||||||
|
data.statuses?.filter(
|
||||||
|
status =>
|
||||||
|
this.parent.system.rules?.conditionImmunities &&
|
||||||
|
this.parent.system.rules.conditionImmunities[status]
|
||||||
|
) ?? [];
|
||||||
|
if (immuneStatuses.length > 0) {
|
||||||
|
update.statuses = data.statuses.filter(x => !immuneStatuses.includes(x));
|
||||||
|
const conditions = CONFIG.DH.GENERAL.conditions();
|
||||||
|
const scrollingTexts = immuneStatuses.map(status => ({
|
||||||
|
text: game.i18n.format('DAGGERHEART.ACTIVEEFFECT.immuneStatusText', {
|
||||||
|
status: game.i18n.localize(conditions[status].name)
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
if (update.statuses.length > 0) {
|
||||||
|
setTimeout(() => scrollingTexts, 500);
|
||||||
|
} else {
|
||||||
|
this.parent.queueScrollText(scrollingTexts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Object.keys(update).length > 0) {
|
if (Object.keys(update).length > 0) {
|
||||||
await this.updateSource(update);
|
await this.updateSource(update);
|
||||||
}
|
}
|
||||||
|
|
@ -76,7 +97,10 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect {
|
||||||
change.value = change.value.replaceAll(/origin\.@/gi, '@');
|
change.value = change.value.replaceAll(/origin\.@/gi, '@');
|
||||||
try {
|
try {
|
||||||
const effect = foundry.utils.fromUuidSync(change.effect.origin);
|
const effect = foundry.utils.fromUuidSync(change.effect.origin);
|
||||||
const doc = effect.parent?.parent;
|
const doc =
|
||||||
|
effect.parent?.parent instanceof game.system.api.documents.DhpActor
|
||||||
|
? effect.parent
|
||||||
|
: effect.parent.parent;
|
||||||
if (doc) parseModel = doc;
|
if (doc) parseModel = doc;
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -437,3 +437,11 @@ export function shuffleArray(array) {
|
||||||
|
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function itemIsIdentical(a, b) {
|
||||||
|
const compendiumSource = a._stats.compendiumSource === b._stats.compendiumSource;
|
||||||
|
const name = a.name === b.name;
|
||||||
|
const description = a.system.description === b.system.description;
|
||||||
|
|
||||||
|
return compendiumSource && name & description;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ export const preloadHandlebarsTemplates = async function () {
|
||||||
'systems/daggerheart/templates/sheets/global/partials/action-item.hbs',
|
'systems/daggerheart/templates/sheets/global/partials/action-item.hbs',
|
||||||
'systems/daggerheart/templates/sheets/global/partials/domain-card-item.hbs',
|
'systems/daggerheart/templates/sheets/global/partials/domain-card-item.hbs',
|
||||||
'systems/daggerheart/templates/sheets/global/partials/item-resource.hbs',
|
'systems/daggerheart/templates/sheets/global/partials/item-resource.hbs',
|
||||||
'systems/daggerheart/templates/sheets/global/partials/resource-section.hbs',
|
'systems/daggerheart/templates/sheets/global/partials/resource-section/resource-section.hbs',
|
||||||
|
'systems/daggerheart/templates/sheets/global/partials/resource-section/simple.hbs',
|
||||||
|
'systems/daggerheart/templates/sheets/global/partials/resource-section/dice-value.hbs',
|
||||||
|
'systems/daggerheart/templates/sheets/global/partials/resource-section/die.hbs',
|
||||||
'systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs',
|
'systems/daggerheart/templates/sheets/global/partials/resource-bar.hbs',
|
||||||
'systems/daggerheart/templates/components/card-preview.hbs',
|
'systems/daggerheart/templates/components/card-preview.hbs',
|
||||||
'systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs',
|
'systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs',
|
||||||
|
|
|
||||||
|
|
@ -401,7 +401,7 @@
|
||||||
"description": "<p>You are <em>Restrained</em> until you break free with a successful Strength Roll.</p>",
|
"description": "<p>You are <em>Restrained</em> until you break free with a successful Strength Roll.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,59 @@
|
||||||
},
|
},
|
||||||
"_id": "m6uPm4vujrUjSFPw",
|
"_id": "m6uPm4vujrUjSFPw",
|
||||||
"img": "icons/magic/air/fog-gas-smoke-blue-gray.webp",
|
"img": "icons/magic/air/fog-gas-smoke-blue-gray.webp",
|
||||||
"effects": [],
|
"effects": [
|
||||||
|
{
|
||||||
|
"name": "Levitation",
|
||||||
|
"type": "base",
|
||||||
|
"system": {
|
||||||
|
"rangeDependence": {
|
||||||
|
"enabled": false,
|
||||||
|
"type": "withinRange",
|
||||||
|
"target": "hostile",
|
||||||
|
"range": "melee"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"_id": "k6iaQVfMZhrpwYQj",
|
||||||
|
"img": "icons/magic/air/fog-gas-smoke-blue-gray.webp",
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"key": "system.rules.conditionImmunities.restrained",
|
||||||
|
"mode": 5,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"disabled": false,
|
||||||
|
"duration": {
|
||||||
|
"startTime": null,
|
||||||
|
"combat": null,
|
||||||
|
"seconds": null,
|
||||||
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
|
},
|
||||||
|
"description": "<p>The Skull levitates several feet off the ground and can’t be <em>Restrained</em>.</p>",
|
||||||
|
"origin": null,
|
||||||
|
"tint": "#ffffff",
|
||||||
|
"transfer": true,
|
||||||
|
"statuses": [],
|
||||||
|
"sort": 0,
|
||||||
|
"flags": {},
|
||||||
|
"_stats": {
|
||||||
|
"compendiumSource": null,
|
||||||
|
"duplicateSource": null,
|
||||||
|
"exportSource": null,
|
||||||
|
"coreVersion": "13.351",
|
||||||
|
"systemId": "daggerheart",
|
||||||
|
"systemVersion": "1.2.4",
|
||||||
|
"createdTime": 1763845938979,
|
||||||
|
"modifiedTime": 1763846023794,
|
||||||
|
"lastModifiedBy": "Q4RzhhaPfvLUzzbw"
|
||||||
|
},
|
||||||
|
"_key": "!actors.items.effects!jDmHqGvzg5wjgmxE.m6uPm4vujrUjSFPw.k6iaQVfMZhrpwYQj"
|
||||||
|
}
|
||||||
|
],
|
||||||
"folder": null,
|
"folder": null,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"ownership": {
|
"ownership": {
|
||||||
|
|
|
||||||
|
|
@ -580,7 +580,7 @@
|
||||||
"description": "<p>You are<em> Restrained</em> in smoky chains until you break free with a successful Strength or Instinct Roll. A target Restrained by this feature must spend a Hope to make an action roll.</p>",
|
"description": "<p>You are<em> Restrained</em> in smoky chains until you break free with a successful Strength or Instinct Roll. A target Restrained by this feature must spend a Hope to make an action roll.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -439,7 +439,7 @@
|
||||||
"description": "<p>You are <em>Restrained </em>until the Defender takes Severe damage.</p>",
|
"description": "<p>You are <em>Restrained </em>until the Defender takes Severe damage.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,7 @@
|
||||||
"description": "<p>You are <em>Restrained</em> until you break free with a successful Finesse or Strength Roll.</p>",
|
"description": "<p>You are <em>Restrained</em> until you break free with a successful Finesse or Strength Roll.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -624,7 +624,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -355,7 +355,14 @@
|
||||||
"range": "melee"
|
"range": "melee"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"changes": [],
|
"changes": [
|
||||||
|
{
|
||||||
|
"key": "system.rules.conditionImmunities.hidden",
|
||||||
|
"mode": 5,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
}
|
||||||
|
],
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"duration": {
|
"duration": {
|
||||||
"startTime": null,
|
"startTime": null,
|
||||||
|
|
@ -366,7 +373,7 @@
|
||||||
"startRound": null,
|
"startRound": null,
|
||||||
"startTurn": null
|
"startTurn": null
|
||||||
},
|
},
|
||||||
"description": "<p> You Glow until the end of the scene and can’t become <em>Hidden</em>. Attack rolls made against you have advantage.</p>",
|
"description": "<p>You Glow until the end of the scene and can’t become <em>Hidden</em>. Attack rolls made against you have advantage.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [],
|
"statuses": [],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|
@ -375,12 +382,12 @@
|
||||||
"compendiumSource": null,
|
"compendiumSource": null,
|
||||||
"duplicateSource": null,
|
"duplicateSource": null,
|
||||||
"exportSource": null,
|
"exportSource": null,
|
||||||
"coreVersion": "13.346",
|
"coreVersion": "13.351",
|
||||||
"systemId": "daggerheart",
|
"systemId": "daggerheart",
|
||||||
"systemVersion": "0.0.1",
|
"systemVersion": "0.0.1",
|
||||||
"createdTime": 1754079525282,
|
"createdTime": 1754079525282,
|
||||||
"modifiedTime": 1754079558712,
|
"modifiedTime": 1763847816177,
|
||||||
"lastModifiedBy": "MQSznptE5yLT7kj8"
|
"lastModifiedBy": "Q4RzhhaPfvLUzzbw"
|
||||||
},
|
},
|
||||||
"_key": "!actors.items.effects!8mJYMpbLTb8qIOrr.NepVGKOo1lHYjA1F.bYBrgiSwHwYfQyjn"
|
"_key": "!actors.items.effects!8mJYMpbLTb8qIOrr.NepVGKOo1lHYjA1F.bYBrgiSwHwYfQyjn"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -426,7 +426,7 @@
|
||||||
"description": "<p>You are <em>Restrained</em> and <em>Vulnerable</em> until you break free with a successful Strength Roll or the Kraken takes Major or greater damage. While <em>Restrained</em> and <em>Vulnerable</em> in this way, you must mark a Stress when you make an action roll.</p>",
|
"description": "<p>You are <em>Restrained</em> and <em>Vulnerable</em> until you break free with a successful Strength Roll or the Kraken takes Major or greater damage. While <em>Restrained</em> and <em>Vulnerable</em> in this way, you must mark a Stress when you make an action roll.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain",
|
"restrained",
|
||||||
"vulnerable"
|
"vulnerable"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|
|
||||||
|
|
@ -432,7 +432,7 @@
|
||||||
"description": "<p>You are <em>Restrained</em> and <em>Vulnerable</em> until you break free, ending both conditions, with a successful Finesse or Strength Roll (13).</p><p>[[/dr trait=finesse difficulty=13]]<br />[[/dr trait=strength difficulty=13]]</p>",
|
"description": "<p>You are <em>Restrained</em> and <em>Vulnerable</em> until you break free, ending both conditions, with a successful Finesse or Strength Roll (13).</p><p>[[/dr trait=finesse difficulty=13]]<br />[[/dr trait=strength difficulty=13]]</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain",
|
"restrained",
|
||||||
"vulnerable"
|
"vulnerable"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|
|
||||||
|
|
@ -361,7 +361,7 @@
|
||||||
"description": "<p>You are<strong> </strong><em>Restrained</em> within the Gaoler until freed with a successful Strength Roll (18). While <em>Restrained</em>, you can only attack the Gaoler. </p>",
|
"description": "<p>You are<strong> </strong><em>Restrained</em> within the Gaoler until freed with a successful Strength Roll (18). While <em>Restrained</em>, you can only attack the Gaoler. </p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -399,7 +399,7 @@
|
||||||
"description": "<p>You are <em>Restrained</em> until you're freed with a successful Strength Roll. When a creature makes an action roll against the cage, they must mark a Stress. </p>",
|
"description": "<p>You are <em>Restrained</em> until you're freed with a successful Strength Roll. When a creature makes an action roll against the cage, they must mark a Stress. </p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,46 @@
|
||||||
"_id": "PnD2UCgzIlwX6cY3",
|
"_id": "PnD2UCgzIlwX6cY3",
|
||||||
"img": "icons/magic/defensive/shield-barrier-glowing-blue.webp",
|
"img": "icons/magic/defensive/shield-barrier-glowing-blue.webp",
|
||||||
"system": {
|
"system": {
|
||||||
"description": "<p><strong>(Note: This needs to be manually implemented. Unstoppable die feature is not implemented as of this time)</strong><br /><br />Once per long rest, you can become Unstoppable. You gain an Unstoppable Die. At level 1, your Unstoppable Die is a d4. Place it on your character sheet in the space provided, starting with the 1 value facing up. After you make a damage roll that deals 1 or more Hit Points to a target, increase the Unstoppable Die value by one. When the die’s value would exceed its maximum value or when the scene ends, remove the die and drop out of Unstoppable. At level 5, your Unstoppable Die increases to a d6. While Unstoppable, you gain the following benefits:</p><ul><li><p>You reduce the severity of physical damage by one threshold (Severe to Major, Major to Minor, Minor to None).</p></li><li><p>You add the current value of the Unstoppable Die to your damage roll.</p></li><li><p>You can’t be Restrained or Vulnerable.</p></li></ul><blockquote><p>Tip: If your Unstoppable Die is a d4 and the 4 is currently facing up, you remove the die the next time you would increase it. However, if your Unstoppable Die has increased to a d6 and the 4 is currently facing up, you’ll turn it to 5 the next time you would increase it. In this case, you’ll remove the die after you would need to increase it higher than 6.</p></blockquote>",
|
"description": "<p>Once per long rest, you can become Unstoppable. You gain an Unstoppable Die. At level 1, your Unstoppable Die is a d4. Place it on your character sheet in the space provided, starting with the 1 value facing up. After you make a damage roll that deals 1 or more Hit Points to a target, increase the Unstoppable Die value by one. When the die’s value would exceed its maximum value or when the scene ends, remove the die and drop out of Unstoppable. At level 5, your Unstoppable Die increases to a d6. While Unstoppable, you gain the following benefits:</p><ul><li><p>You reduce the severity of physical damage by one threshold (Severe to Major, Major to Minor, Minor to None).</p></li><li><p>You add the current value of the Unstoppable Die to your damage roll.</p></li><li><p>You can’t be Restrained or Vulnerable.</p></li></ul><blockquote><p>Tip: If your Unstoppable Die is a d4 and the 4 is currently facing up, you remove the die the next time you would increase it. However, if your Unstoppable Die has increased to a d6 and the 4 is currently facing up, you’ll turn it to 5 the next time you would increase it. In this case, you’ll remove the die after you would need to increase it higher than 6.</p></blockquote>",
|
||||||
"resource": null,
|
"resource": {
|
||||||
"actions": {},
|
"type": "die",
|
||||||
|
"value": 0,
|
||||||
|
"max": "",
|
||||||
|
"icon": ""
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"KZiZ8m8uqH5iG96d": {
|
||||||
|
"type": "effect",
|
||||||
|
"_id": "KZiZ8m8uqH5iG96d",
|
||||||
|
"systemPath": "actions",
|
||||||
|
"description": "<p>Once per long rest, you can become Unstoppable. You gain an Unstoppable Die. At level 1, your Unstoppable Die is a d4. Place it on your character sheet in the space provided, starting with the 1 value facing up. After you make a damage roll that deals 1 or more Hit Points to a target, increase the Unstoppable Die value by one. When the die’s value would exceed its maximum value or when the scene ends, remove the die and drop out of Unstoppable. At level 5, your Unstoppable Die increases to a d6. While Unstoppable, you gain the following benefits:</p><ul><li><p>You reduce the severity of physical damage by one threshold (Severe to Major, Major to Minor, Minor to None).</p></li><li><p>You add the current value of the Unstoppable Die to your damage roll.</p></li><li><p>You can’t be Restrained or Vulnerable.</p></li></ul><blockquote><p>Tip: If your Unstoppable Die is a d4 and the 4 is currently facing up, you remove the die the next time you would increase it. However, if your Unstoppable Die has increased to a d6 and the 4 is currently facing up, you’ll turn it to 5 the next time you would increase it. In this case, you’ll remove the die after you would need to increase it higher than 6.</p></blockquote>",
|
||||||
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
|
"actionType": "action",
|
||||||
|
"cost": [],
|
||||||
|
"uses": {
|
||||||
|
"value": null,
|
||||||
|
"max": "1",
|
||||||
|
"recovery": "longRest",
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"effects": [
|
||||||
|
{
|
||||||
|
"_id": "xzQtFSuDS48kUdAZ",
|
||||||
|
"onSave": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"target": {
|
||||||
|
"type": "self",
|
||||||
|
"amount": null
|
||||||
|
},
|
||||||
|
"name": "Become Unstoppable",
|
||||||
|
"img": "icons/magic/defensive/shield-barrier-glowing-blue.webp",
|
||||||
|
"range": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
"originItemType": null,
|
"originItemType": null,
|
||||||
"originId": null,
|
"originId": null,
|
||||||
"attribution": {
|
"attribution": {
|
||||||
|
|
@ -16,7 +53,83 @@
|
||||||
"artist": ""
|
"artist": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"effects": [],
|
"effects": [
|
||||||
|
{
|
||||||
|
"name": "Unstoppable",
|
||||||
|
"img": "icons/magic/defensive/shield-barrier-glowing-blue.webp",
|
||||||
|
"origin": "Compendium.daggerheart.classes.Item.PnD2UCgzIlwX6cY3",
|
||||||
|
"transfer": false,
|
||||||
|
"_id": "xzQtFSuDS48kUdAZ",
|
||||||
|
"type": "base",
|
||||||
|
"system": {
|
||||||
|
"rangeDependence": {
|
||||||
|
"enabled": false,
|
||||||
|
"type": "withinRange",
|
||||||
|
"target": "hostile",
|
||||||
|
"range": "melee"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changes": [
|
||||||
|
{
|
||||||
|
"key": "system.bonuses.damage.physical.bonus",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "ORIGIN.@item.resource.value",
|
||||||
|
"priority": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.bonuses.damage.magical.bonus",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "ORIGIN.@item.resource.value",
|
||||||
|
"priority": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.rules.damageReduction.reduceSeverity.physical",
|
||||||
|
"mode": 2,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.rules.conditionImmunities.vulnerable",
|
||||||
|
"mode": 5,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.rules.conditionImmunities.restrained",
|
||||||
|
"mode": 5,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"disabled": false,
|
||||||
|
"duration": {
|
||||||
|
"startTime": null,
|
||||||
|
"combat": null,
|
||||||
|
"seconds": null,
|
||||||
|
"rounds": null,
|
||||||
|
"turns": null,
|
||||||
|
"startRound": null,
|
||||||
|
"startTurn": null
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
"tint": "#ffffff",
|
||||||
|
"statuses": [],
|
||||||
|
"sort": 0,
|
||||||
|
"flags": {},
|
||||||
|
"_stats": {
|
||||||
|
"compendiumSource": null,
|
||||||
|
"duplicateSource": null,
|
||||||
|
"exportSource": null,
|
||||||
|
"coreVersion": "13.351",
|
||||||
|
"systemId": "daggerheart",
|
||||||
|
"systemVersion": "1.2.4",
|
||||||
|
"createdTime": 1763835871799,
|
||||||
|
"modifiedTime": 1763843691784,
|
||||||
|
"lastModifiedBy": "Q4RzhhaPfvLUzzbw"
|
||||||
|
},
|
||||||
|
"_key": "!items.effects!PnD2UCgzIlwX6cY3.xzQtFSuDS48kUdAZ"
|
||||||
|
}
|
||||||
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"ownership": {
|
"ownership": {
|
||||||
"default": 0,
|
"default": 0,
|
||||||
|
|
@ -27,12 +140,12 @@
|
||||||
"compendiumSource": null,
|
"compendiumSource": null,
|
||||||
"duplicateSource": null,
|
"duplicateSource": null,
|
||||||
"exportSource": null,
|
"exportSource": null,
|
||||||
"coreVersion": "13.347",
|
"coreVersion": "13.351",
|
||||||
"systemId": "daggerheart",
|
"systemId": "daggerheart",
|
||||||
"systemVersion": "1.0.5",
|
"systemVersion": "1.2.4",
|
||||||
"createdTime": 1754246498657,
|
"createdTime": 1754246498657,
|
||||||
"modifiedTime": 1755391250586,
|
"modifiedTime": 1763839481783,
|
||||||
"lastModifiedBy": "VZIeX2YDvX338Zvr"
|
"lastModifiedBy": "Q4RzhhaPfvLUzzbw"
|
||||||
},
|
},
|
||||||
"_key": "!items!PnD2UCgzIlwX6cY3"
|
"_key": "!items!PnD2UCgzIlwX6cY3"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -267,7 +267,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
@ -313,7 +313,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
@ -359,7 +359,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,12 @@
|
||||||
"mode": 2,
|
"mode": 2,
|
||||||
"value": "10",
|
"value": "10",
|
||||||
"priority": null
|
"priority": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "system.rules.conditionImmunities.restrained",
|
||||||
|
"mode": 5,
|
||||||
|
"value": "1",
|
||||||
|
"priority": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
|
|
@ -134,7 +140,7 @@
|
||||||
"startRound": null,
|
"startRound": null,
|
||||||
"startTurn": null
|
"startTurn": null
|
||||||
},
|
},
|
||||||
"description": "<ul><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">When you succeed on an attack or Spellcast Roll, gain a +10 bonus to the damage roll.</p></li><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">When you deal enough damage to defeat a creature within Close range, you absorb them and clear an Armor Slot.</p></li><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">You can’t be <em style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0)\">Restrained</em>.</p></li><li><p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Before you make an action roll, you must </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">spend a Hope</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">. If you can’t, you revert to your normal form.</p></li></ul>",
|
"description": "<ul><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">When you succeed on an attack or Spellcast Roll, gain a +10 bonus to the damage roll.</span></p></li><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">When you deal enough damage to defeat a creature within Close range, you absorb them and clear an Armor Slot.</span></p></li><li><p><span class=\"vertical-card-list\" style=\"box-sizing:border-box;margin:0px 0px 0.25rem;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);font-family:Montserrat, sans-serif\">You can’t be <em style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0)\">Restrained</em>.</span></p></li><li><p><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">Before you make an action roll, you must </span><span style=\"box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgb(93, 20, 43) rgba(0, 0, 0, 0);color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial\">spend a Hope</span><span style=\"color:rgb(239, 230, 216);font-family:Montserrat, sans-serif;font-size:14px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;white-space:normal;background-color:rgba(24, 22, 46, 0.376);text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;display:inline !important;float:none\">. If you can’t, you revert to your normal form.</span></p></li></ul>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [],
|
"statuses": [],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|
@ -143,12 +149,12 @@
|
||||||
"compendiumSource": null,
|
"compendiumSource": null,
|
||||||
"duplicateSource": null,
|
"duplicateSource": null,
|
||||||
"exportSource": null,
|
"exportSource": null,
|
||||||
"coreVersion": "13.346",
|
"coreVersion": "13.351",
|
||||||
"systemId": "daggerheart",
|
"systemId": "daggerheart",
|
||||||
"systemVersion": "0.0.1",
|
"systemVersion": "0.0.1",
|
||||||
"createdTime": 1754120504134,
|
"createdTime": 1754120504134,
|
||||||
"modifiedTime": 1754340362524,
|
"modifiedTime": 1763846303087,
|
||||||
"lastModifiedBy": "Q9NoTaEarn3VMS6Z"
|
"lastModifiedBy": "Q4RzhhaPfvLUzzbw"
|
||||||
},
|
},
|
||||||
"_key": "!items.effects!LzVpMkD5I4QeaIHf.ptBC882plZW39Ld9"
|
"_key": "!items.effects!LzVpMkD5I4QeaIHf.ptBC882plZW39Ld9"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
@ -219,7 +219,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@
|
||||||
"description": "<p><em>Restrained</em> lasts until you’re freed with a successful Finesse or Strength roll or by dealing at least 6 damage to the vines.</p>",
|
"description": "<p><em>Restrained</em> lasts until you’re freed with a successful Finesse or Strength roll or by dealing at least 6 damage to the vines.</p>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain"
|
"restrained"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
"flags": {},
|
"flags": {},
|
||||||
|
|
|
||||||
|
|
@ -313,7 +313,7 @@
|
||||||
"description": "<p><em>Restrained</em> and <em>Vulnerable</em> until you break free, clearing both conditions, with a successful Finesse or Strength Roll or by dealing 10 damage to the vines. When the target makes a roll to escape, they take <strong>1d8+4</strong> physical damage and lose a Hope.</p><section class=\"secret\" id=\"secret-Eui1zx8GKoUhEXq6\"><p><em>What painful memories do the vines bring to the surface as they pierce flesh?</em></p></section>",
|
"description": "<p><em>Restrained</em> and <em>Vulnerable</em> until you break free, clearing both conditions, with a successful Finesse or Strength Roll or by dealing 10 damage to the vines. When the target makes a roll to escape, they take <strong>1d8+4</strong> physical damage and lose a Hope.</p><section class=\"secret\" id=\"secret-Eui1zx8GKoUhEXq6\"><p><em>What painful memories do the vines bring to the surface as they pierce flesh?</em></p></section>",
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"statuses": [
|
"statuses": [
|
||||||
"restrain",
|
"restrained",
|
||||||
"vulnerable"
|
"vulnerable"
|
||||||
],
|
],
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "31XEMDUyjpqFA7H9",
|
"_id": "31XEMDUyjpqFA7H9",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "fKTeCKjfyQauf5bA",
|
"_id": "fKTeCKjfyQauf5bA",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -78,7 +79,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "close",
|
"range": "close",
|
||||||
|
|
@ -101,7 +102,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryFar",
|
"range": "veryFar",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -73,7 +74,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "fKTeCKjfyQauf5bA",
|
"_id": "fKTeCKjfyQauf5bA",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -78,7 +79,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "fKTeCKjfyQauf5bA",
|
"_id": "fKTeCKjfyQauf5bA",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -107,7 +108,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryFar",
|
"range": "veryFar",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "close",
|
"range": "close",
|
||||||
|
|
@ -101,7 +102,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -145,7 +146,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "close",
|
"range": "close",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "fKTeCKjfyQauf5bA",
|
"_id": "fKTeCKjfyQauf5bA",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -101,7 +102,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "6lmY7PMkxI3kmkpb",
|
"_id": "6lmY7PMkxI3kmkpb",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "veryClose",
|
"range": "veryClose",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "8j3yjH0TiwwZsaBW",
|
"_id": "8j3yjH0TiwwZsaBW",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -147,7 +148,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "B2LewQYZb9Jhl4A6",
|
"_id": "B2LewQYZb9Jhl4A6",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "6lmY7PMkxI3kmkpb",
|
"_id": "6lmY7PMkxI3kmkpb",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "close",
|
"range": "close",
|
||||||
|
|
@ -101,7 +102,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -101,7 +102,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "tSwiEa50USNh6uEJ",
|
"_id": "tSwiEa50USNh6uEJ",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "qY9ylkwxFwRlPy6a",
|
"_id": "qY9ylkwxFwRlPy6a",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -117,7 +118,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "YHE291ruSIJAh44F",
|
"_id": "YHE291ruSIJAh44F",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -143,7 +144,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "far",
|
"range": "far",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "31XEMDUyjpqFA7H9",
|
"_id": "31XEMDUyjpqFA7H9",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -79,7 +80,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
"_id": "ZSdAawliPNsoA7nP",
|
"_id": "ZSdAawliPNsoA7nP",
|
||||||
|
"baseAction": true,
|
||||||
"systemPath": "attack",
|
"systemPath": "attack",
|
||||||
"type": "attack",
|
"type": "attack",
|
||||||
"range": "melee",
|
"range": "melee",
|
||||||
|
|
@ -71,7 +72,7 @@
|
||||||
"includeBase": false
|
"includeBase": false
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": false,
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
"cost": [],
|
"cost": [],
|
||||||
"uses": {
|
"uses": {
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue