mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 23:13:39 +02:00
Merged with main
This commit is contained in:
commit
9bea8d6a97
64 changed files with 1556 additions and 441 deletions
2
.github/workflows/deploy.yml
vendored
2
.github/workflows/deploy.yml
vendored
|
|
@ -35,7 +35,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
version: ${{steps.get_version.outputs.version-without-v}}
|
version: ${{steps.get_version.outputs.version-without-v}}
|
||||||
url: https://github.com/${{github.repository}}
|
url: https://github.com/${{github.repository}}
|
||||||
manifest: https://github.com/${{github.repository}}/releases/latest/download/system.json
|
manifest: https://raw.githubusercontent.com/${{github.repository}}/main/system.json
|
||||||
download: https://github.com/${{github.repository}}/releases/download/${{github.event.release.tag_name}}/system.zip
|
download: https://github.com/${{github.repository}}/releases/download/${{github.event.release.tag_name}}/system.zip
|
||||||
|
|
||||||
# Create a zip file with all files required by the module to add to the release
|
# Create a zip file with all files required by the module to add to the release
|
||||||
|
|
|
||||||
13
lang/en.json
13
lang/en.json
|
|
@ -113,7 +113,9 @@
|
||||||
},
|
},
|
||||||
"displayInChat": "Display in chat",
|
"displayInChat": "Display in chat",
|
||||||
"deleteTriggerTitle": "Delete Trigger",
|
"deleteTriggerTitle": "Delete Trigger",
|
||||||
"deleteTriggerContent": "Are you sure you want to delete the {trigger} trigger?"
|
"deleteTriggerContent": "Are you sure you want to delete the {trigger} trigger?",
|
||||||
|
"advantageState": "Advantage State",
|
||||||
|
"damageOnSave": "Damage on Save"
|
||||||
},
|
},
|
||||||
"RollField": {
|
"RollField": {
|
||||||
"diceRolling": {
|
"diceRolling": {
|
||||||
|
|
@ -125,10 +127,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"attackBonus": "Attack Bonus",
|
"attackModifier": "Attack Modifier",
|
||||||
"attackName": "Attack Name",
|
"attackName": "Attack Name",
|
||||||
"criticalThreshold": "Critical Threshold",
|
"criticalThreshold": "Critical Threshold",
|
||||||
"includeBase": { "label": "Include Item Damage" },
|
"includeBase": { "label": "Include Item Damage" },
|
||||||
|
"groupAttack": { "label": "Group Attack" },
|
||||||
"multiplier": "Multiplier",
|
"multiplier": "Multiplier",
|
||||||
"saveHint": "Set a default Trait to enable Reaction Roll. It can be changed later in Reaction Roll Dialog.",
|
"saveHint": "Set a default Trait to enable Reaction Roll. It can be changed later in Reaction Roll Dialog.",
|
||||||
"resultBased": {
|
"resultBased": {
|
||||||
|
|
@ -366,7 +369,7 @@
|
||||||
"selectSecondaryWeapon": "Select Secondary Weapon",
|
"selectSecondaryWeapon": "Select Secondary Weapon",
|
||||||
"selectSubclass": "Select Subclass",
|
"selectSubclass": "Select Subclass",
|
||||||
"setupSkipTitle": "Skipping Character Setup",
|
"setupSkipTitle": "Skipping Character Setup",
|
||||||
"setupSkipContent": "You are skipping the Character Setup by adding this manually. The character setup is the blinking arrows in the top-right. Are you sure you want to continue?",
|
"setupSkipContent": "You are skipping the Character Setup by adding this manually. The character setup is the blinking button in the top-right. Are you sure you want to continue?",
|
||||||
"startingItems": "Starting Items",
|
"startingItems": "Starting Items",
|
||||||
"story": "Story",
|
"story": "Story",
|
||||||
"storyExplanation": "Select which background and connection prompts you want to copy into your character's background.",
|
"storyExplanation": "Select which background and connection prompts you want to copy into your character's background.",
|
||||||
|
|
@ -2870,6 +2873,7 @@
|
||||||
"system": "Dice Preset",
|
"system": "Dice Preset",
|
||||||
"font": "Font",
|
"font": "Font",
|
||||||
"critical": "Duality Critical Animation",
|
"critical": "Duality Critical Animation",
|
||||||
|
"muted": "Muted",
|
||||||
"diceAppearance": "Dice Appearance",
|
"diceAppearance": "Dice Appearance",
|
||||||
"animations": "Animations",
|
"animations": "Animations",
|
||||||
"defaultAnimations": "Set Animations As Player Defaults",
|
"defaultAnimations": "Set Animations As Player Defaults",
|
||||||
|
|
@ -3155,7 +3159,8 @@
|
||||||
"tokenActorsMissing": "[{names}] missing Actors",
|
"tokenActorsMissing": "[{names}] missing Actors",
|
||||||
"domainTouchRequirement": "This domain card requires {nr} {domain} cards in the loadout to be used",
|
"domainTouchRequirement": "This domain card requires {nr} {domain} cards in the loadout to be used",
|
||||||
"knowTheTide": "Know The Tide gained a token",
|
"knowTheTide": "Know The Tide gained a token",
|
||||||
"lackingItemTransferPermission": "User {user} lacks owner permission needed to transfer items to {target}"
|
"lackingItemTransferPermission": "User {user} lacks owner permission needed to transfer items to {target}",
|
||||||
|
"noTokenTargeted": "No token is targeted"
|
||||||
},
|
},
|
||||||
"Progress": {
|
"Progress": {
|
||||||
"migrationLabel": "Performing system migration. Please wait and do not close Foundry."
|
"migrationLabel": "Performing system migration. Please wait and do not close Foundry."
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ export default class DamageDialog extends HandlebarsApplicationMixin(Application
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
toggleSelectedEffect: this.toggleSelectedEffect,
|
toggleSelectedEffect: this.toggleSelectedEffect,
|
||||||
|
updateGroupAttack: this.updateGroupAttack,
|
||||||
toggleCritical: this.toggleCritical,
|
toggleCritical: this.toggleCritical,
|
||||||
submitRoll: this.submitRoll
|
submitRoll: this.submitRoll
|
||||||
},
|
},
|
||||||
|
|
@ -64,15 +65,40 @@ export default class DamageDialog extends HandlebarsApplicationMixin(Application
|
||||||
context.hasSelectedEffects = Boolean(Object.keys(this.selectedEffects).length);
|
context.hasSelectedEffects = Boolean(Object.keys(this.selectedEffects).length);
|
||||||
context.selectedEffects = this.selectedEffects;
|
context.selectedEffects = this.selectedEffects;
|
||||||
|
|
||||||
|
context.damageOptions = this.config.damageOptions;
|
||||||
|
context.rangeOptions = CONFIG.DH.GENERAL.groupAttackRange;
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
static updateRollConfiguration(_event, _, formData) {
|
static updateRollConfiguration(_event, _, formData) {
|
||||||
const { ...rest } = foundry.utils.expandObject(formData.object);
|
const data = foundry.utils.expandObject(formData.object);
|
||||||
foundry.utils.mergeObject(this.config.roll, rest.roll);
|
foundry.utils.mergeObject(this.config.roll, data.roll);
|
||||||
foundry.utils.mergeObject(this.config.modifiers, rest.modifiers);
|
foundry.utils.mergeObject(this.config.modifiers, data.modifiers);
|
||||||
this.config.selectedMessageMode = rest.selectedMessageMode;
|
this.config.selectedMessageMode = data.selectedMessageMode;
|
||||||
|
|
||||||
|
if (data.damageOptions) {
|
||||||
|
const numAttackers = data.damageOptions.groupAttack?.numAttackers;
|
||||||
|
if (typeof numAttackers !== 'number' || numAttackers % 1 !== 0) {
|
||||||
|
data.damageOptions.groupAttack.numAttackers = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
foundry.utils.mergeObject(this.config.damageOptions, data.damageOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
static updateGroupAttack() {
|
||||||
|
const targets = Array.from(game.user.targets);
|
||||||
|
if (targets.length === 0)
|
||||||
|
return ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.noTokenTargeted'));
|
||||||
|
|
||||||
|
const actorId = this.roll.data.parent.id;
|
||||||
|
const range = this.config.damageOptions.groupAttack.range;
|
||||||
|
const groupAttackTokens = game.system.api.fields.ActionFields.DamageField.getGroupAttackTokens(actorId, range);
|
||||||
|
|
||||||
|
this.config.damageOptions.groupAttack.numAttackers = groupAttackTokens.length;
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,11 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
...member.toObject(),
|
...member.toObject(),
|
||||||
uuid: member.uuid,
|
uuid: member.uuid,
|
||||||
id: member.id,
|
id: member.id,
|
||||||
selected: false
|
selected: false,
|
||||||
|
owned: member.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER)
|
||||||
}));
|
}));
|
||||||
this.intiator = null;
|
|
||||||
|
this.initiator = null;
|
||||||
this.openForAllPlayers = true;
|
this.openForAllPlayers = true;
|
||||||
|
|
||||||
this.tabGroups.application = Object.keys(party.system.tagTeam.members).length
|
this.tabGroups.application = Object.keys(party.system.tagTeam.members).length
|
||||||
|
|
@ -80,6 +82,18 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
|
|
||||||
for (const element of htmlElement.querySelectorAll('.roll-type-select'))
|
for (const element of htmlElement.querySelectorAll('.roll-type-select'))
|
||||||
element.addEventListener('change', this.updateRollType.bind(this));
|
element.addEventListener('change', this.updateRollType.bind(this));
|
||||||
|
|
||||||
|
htmlElement
|
||||||
|
.querySelector('.initiator-member-field')
|
||||||
|
?.addEventListener('input', this.updateInitiatorMemberField.bind(this));
|
||||||
|
|
||||||
|
htmlElement
|
||||||
|
.querySelector('.initiator-cost-field')
|
||||||
|
?.addEventListener('input', this.updateInitiatorCostField.bind(this));
|
||||||
|
|
||||||
|
htmlElement
|
||||||
|
.querySelector('.openforall-field')
|
||||||
|
?.addEventListener('change', this.updateOpenForAllField.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
_configureRenderParts(options) {
|
_configureRenderParts(options) {
|
||||||
|
|
@ -135,9 +149,12 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
const selectedMembers = partContext.memberSelection.filter(x => x.selected);
|
const selectedMembers = partContext.memberSelection.filter(x => x.selected);
|
||||||
|
|
||||||
partContext.allSelected = selectedMembers.length === 2;
|
partContext.allSelected = selectedMembers.length === 2;
|
||||||
partContext.canStartTagTeam = partContext.allSelected && this.initiator;
|
partContext.canStartTagTeam =
|
||||||
|
partContext.allSelected && this.initiator?.memberId && typeof this.initiator?.cost === 'number';
|
||||||
partContext.initiator = this.initiator;
|
partContext.initiator = this.initiator;
|
||||||
partContext.initiatorOptions = selectedMembers.map(x => ({ value: x.id, label: x.name }));
|
partContext.initiatorOptions = selectedMembers
|
||||||
|
.filter(actor => actor.owned)
|
||||||
|
.map(x => ({ value: x.id, label: x.name }));
|
||||||
partContext.initiatorDisabled = !selectedMembers.length;
|
partContext.initiatorDisabled = !selectedMembers.length;
|
||||||
partContext.openForAllPlayers = this.openForAllPlayers;
|
partContext.openForAllPlayers = this.openForAllPlayers;
|
||||||
|
|
||||||
|
|
@ -230,14 +247,15 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
}
|
}
|
||||||
|
|
||||||
static async updateData(event, _, formData) {
|
static async updateData(event, _, formData) {
|
||||||
const { initiator, openForAllPlayers, ...partyData } = foundry.utils.expandObject(formData.object);
|
const partyData = foundry.utils.expandObject(formData.object);
|
||||||
this.initiator = initiator;
|
|
||||||
this.openForAllPlayers = openForAllPlayers !== undefined ? openForAllPlayers : this.openForAllPlayers;
|
|
||||||
|
|
||||||
this.updatePartyData(partyData, this.getUpdatingParts(event.target));
|
this.updatePartyData(partyData, this.getUpdatingParts(event.target));
|
||||||
}
|
}
|
||||||
|
|
||||||
async updatePartyData(update, updatingParts, options = { render: true }) {
|
async updatePartyData(update, updatingParts, options = { render: true }) {
|
||||||
|
if (!game.users.activeGM)
|
||||||
|
return ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.gmRequired'));
|
||||||
|
|
||||||
const gmUpdate = async update => {
|
const gmUpdate = async update => {
|
||||||
await this.party.update(update);
|
await this.party.update(update);
|
||||||
this.render({ parts: updatingParts });
|
this.render({ parts: updatingParts });
|
||||||
|
|
@ -348,8 +366,7 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
let rollIsSelected = false;
|
let rollIsSelected = false;
|
||||||
for (const member of Object.values(members)) {
|
for (const member of Object.values(members)) {
|
||||||
const rollFinished = Boolean(member.rollData);
|
const rollFinished = Boolean(member.rollData);
|
||||||
const damageFinished =
|
const damageFinished = member.rollData?.options?.hasDamage ? Boolean(member.rollData.options.damage) : true;
|
||||||
member.rollData?.options?.hasDamage !== undefined ? member.rollData.options.damage : true;
|
|
||||||
|
|
||||||
rollsAreFinished = rollsAreFinished && rollFinished && damageFinished;
|
rollsAreFinished = rollsAreFinished && rollFinished && damageFinished;
|
||||||
rollIsSelected = rollIsSelected || member.selected;
|
rollIsSelected = rollIsSelected || member.selected;
|
||||||
|
|
@ -374,6 +391,23 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateInitiatorMemberField(event) {
|
||||||
|
if (!this.initiator) this.initiator = {};
|
||||||
|
this.initiator.memberId = event.target.value;
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateInitiatorCostField(event) {
|
||||||
|
if (!this.initiator) this.initiator = {};
|
||||||
|
this.initiator.cost = event.target.value ? Number.parseInt(event.target.value) : null;
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateOpenForAllField(event) {
|
||||||
|
this.openForAllPlayers = event.target.checked;
|
||||||
|
this.render();
|
||||||
|
}
|
||||||
|
|
||||||
static async #removeRoll(_, button) {
|
static async #removeRoll(_, button) {
|
||||||
this.updatePartyData(
|
this.updatePartyData(
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ export default class DHActionConfig extends DHActionBaseConfig {
|
||||||
|
|
||||||
static async addEffect(_event) {
|
static async addEffect(_event) {
|
||||||
if (!this.action.effects) return;
|
if (!this.action.effects) return;
|
||||||
const effectData = this._addEffectData.bind(this)();
|
|
||||||
const data = this.action.toObject();
|
const data = this.action.toObject();
|
||||||
|
|
||||||
const created = await this.action.item.createEmbeddedDocuments('ActiveEffect', [
|
const created = await this.action.item.createEmbeddedDocuments('ActiveEffect', [
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur
|
||||||
|
|
||||||
static getRangeLabels(distanceValue, settings) {
|
static getRangeLabels(distanceValue, settings) {
|
||||||
let result = { distance: distanceValue, units: '' };
|
let result = { distance: distanceValue, units: '' };
|
||||||
if (!settings.enabled) return result;
|
if (!settings.enabled || !canvas.scene) return result;
|
||||||
|
|
||||||
const sceneRangeMeasurement = canvas.scene.flags.daggerheart?.rangeMeasurement;
|
const sceneRangeMeasurement = canvas.scene.flags.daggerheart?.rangeMeasurement;
|
||||||
const { disable, custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting;
|
const { disable, custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting;
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,14 @@ export const range = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const groupAttackRange = {
|
||||||
|
melee: range.melee,
|
||||||
|
veryClose: range.veryClose,
|
||||||
|
close: range.close,
|
||||||
|
far: range.far,
|
||||||
|
veryFar: range.veryFar
|
||||||
|
};
|
||||||
|
|
||||||
/* circle|cone|rect|ray used to be CONST.MEASURED_TEMPLATE_TYPES. Hardcoded for now */
|
/* circle|cone|rect|ray used to be CONST.MEASURED_TEMPLATE_TYPES. Hardcoded for now */
|
||||||
export const templateTypes = {
|
export const templateTypes = {
|
||||||
CIRCLE: 'circle',
|
CIRCLE: 'circle',
|
||||||
|
|
@ -484,7 +492,7 @@ export const defaultRestOptions = {
|
||||||
value: {
|
value: {
|
||||||
custom: {
|
custom: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
formula: '@system.armorScore'
|
formula: '@system.armorScore.max'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -708,14 +716,14 @@ const getDiceSoNiceSFX = sfxOptions => {
|
||||||
if (sfxOptions.critical && criticalAnimationData.class) {
|
if (sfxOptions.critical && criticalAnimationData.class) {
|
||||||
return {
|
return {
|
||||||
specialEffect: criticalAnimationData.class,
|
specialEffect: criticalAnimationData.class,
|
||||||
options: {}
|
options: { ...criticalAnimationData.options }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sfxOptions.higher && sfxOptions.data.higher) {
|
if (sfxOptions.higher && sfxOptions.data.higher) {
|
||||||
return {
|
return {
|
||||||
specialEffect: sfxOptions.data.higher.class,
|
specialEffect: sfxOptions.data.higher.class,
|
||||||
options: {}
|
options: { ...sfxOptions.data.higher.options }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -280,6 +280,26 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (this.damage) {
|
||||||
|
config.isDirect = this.damage.direct;
|
||||||
|
|
||||||
|
const groupAttackTokens = this.damage.groupAttack
|
||||||
|
? game.system.api.fields.ActionFields.DamageField.getGroupAttackTokens(
|
||||||
|
this.actor.id,
|
||||||
|
this.damage.groupAttack
|
||||||
|
)
|
||||||
|
: null;
|
||||||
|
|
||||||
|
config.damageOptions = {
|
||||||
|
groupAttack: this.damage.groupAttack
|
||||||
|
? {
|
||||||
|
numAttackers: Math.max(groupAttackTokens.length, 1),
|
||||||
|
range: this.damage.groupAttack
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
DHBaseAction.applyKeybindings(config);
|
DHBaseAction.applyKeybindings(config);
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@ export default class ArmorChange extends foundry.abstract.DataModel {
|
||||||
label: 'Armor',
|
label: 'Armor',
|
||||||
defaultPriority: 20,
|
defaultPriority: 20,
|
||||||
handler: (actor, change, _options, _field, replacementData) => {
|
handler: (actor, change, _options, _field, replacementData) => {
|
||||||
const parsedMax = itemAbleRollParse(change.value.max, actor, change.effect.parent);
|
const baseParsedMax = itemAbleRollParse(change.value.max, actor, change.effect.parent);
|
||||||
|
const parsedMax = new Roll(baseParsedMax).evaluateSync().total;
|
||||||
game.system.api.documents.DhActiveEffect.applyChange(
|
game.system.api.documents.DhActiveEffect.applyChange(
|
||||||
actor,
|
actor,
|
||||||
{
|
{
|
||||||
|
|
@ -110,6 +111,8 @@ export default class ArmorChange extends foundry.abstract.DataModel {
|
||||||
};
|
};
|
||||||
|
|
||||||
get isSuppressed() {
|
get isSuppressed() {
|
||||||
|
if (!this.parent.parent?.actor) return false;
|
||||||
|
|
||||||
switch (this.value.interaction) {
|
switch (this.value.interaction) {
|
||||||
case CONFIG.DH.GENERAL.activeEffectArmorInteraction.active.id:
|
case CONFIG.DH.GENERAL.activeEffectArmorInteraction.active.id:
|
||||||
return !this.parent.parent?.actor.system.armor;
|
return !this.parent.parent?.actor.system.armor;
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel {
|
||||||
action: new fields.StringField()
|
action: new fields.StringField()
|
||||||
}),
|
}),
|
||||||
damage: new fields.ObjectField(),
|
damage: new fields.ObjectField(),
|
||||||
|
damageOptions: new fields.ObjectField(),
|
||||||
costs: new fields.ArrayField(new fields.ObjectField()),
|
costs: new fields.ArrayField(new fields.ObjectField()),
|
||||||
successConsumed: new fields.BooleanField({ initial: false })
|
successConsumed: new fields.BooleanField({ initial: false })
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,12 @@ export default class DamageField extends fields.SchemaField {
|
||||||
initial: false,
|
initial: false,
|
||||||
label: 'DAGGERHEART.ACTIONS.Settings.includeBase.label'
|
label: 'DAGGERHEART.ACTIONS.Settings.includeBase.label'
|
||||||
}),
|
}),
|
||||||
direct: new fields.BooleanField({ initial: false, label: 'DAGGERHEART.CONFIG.DamageType.direct.name' })
|
direct: new fields.BooleanField({ initial: false, label: 'DAGGERHEART.CONFIG.DamageType.direct.name' }),
|
||||||
|
groupAttack: new fields.StringField({
|
||||||
|
choices: CONFIG.DH.GENERAL.groupAttackRange,
|
||||||
|
blank: true,
|
||||||
|
label: 'DAGGERHEART.ACTIONS.Settings.groupAttack.label'
|
||||||
|
})
|
||||||
};
|
};
|
||||||
super(damageFields, options, context);
|
super(damageFields, options, context);
|
||||||
}
|
}
|
||||||
|
|
@ -224,6 +229,22 @@ export default class DamageField extends fields.SchemaField {
|
||||||
game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damageApply.players)
|
game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation).roll.damageApply.players)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getGroupAttackTokens(actorId, range) {
|
||||||
|
if (!canvas.scene) return [];
|
||||||
|
|
||||||
|
const targets = Array.from(game.user.targets);
|
||||||
|
const rangeSettings = canvas.scene?.rangeSettings;
|
||||||
|
if (!rangeSettings) return [];
|
||||||
|
|
||||||
|
const maxDistance = rangeSettings[range];
|
||||||
|
return canvas.scene.tokens.filter(x => {
|
||||||
|
if (x.actor?.id !== actorId) return false;
|
||||||
|
if (targets.every(target => x.object.distanceTo(target) > maxDistance)) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DHActionDiceData extends foundry.abstract.DataModel {
|
export class DHActionDiceData extends foundry.abstract.DataModel {
|
||||||
|
|
@ -232,7 +253,7 @@ export class DHActionDiceData extends foundry.abstract.DataModel {
|
||||||
return {
|
return {
|
||||||
multiplier: new fields.StringField({
|
multiplier: new fields.StringField({
|
||||||
choices: CONFIG.DH.GENERAL.multiplierTypes,
|
choices: CONFIG.DH.GENERAL.multiplierTypes,
|
||||||
initial: 'prof',
|
initial: 'flat',
|
||||||
label: 'DAGGERHEART.ACTIONS.Config.damage.multiplier',
|
label: 'DAGGERHEART.ACTIONS.Config.damage.multiplier',
|
||||||
nullable: false,
|
nullable: false,
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -244,7 +265,7 @@ export class DHActionDiceData extends foundry.abstract.DataModel {
|
||||||
}),
|
}),
|
||||||
dice: new fields.StringField({
|
dice: new fields.StringField({
|
||||||
choices: CONFIG.DH.GENERAL.diceTypes,
|
choices: CONFIG.DH.GENERAL.diceTypes,
|
||||||
initial: 'd6',
|
initial: CONFIG.DH.GENERAL.diceTypes.d6,
|
||||||
label: 'DAGGERHEART.GENERAL.Dice.single',
|
label: 'DAGGERHEART.GENERAL.Dice.single',
|
||||||
nullable: false,
|
nullable: false,
|
||||||
required: true
|
required: true
|
||||||
|
|
|
||||||
|
|
@ -89,13 +89,13 @@ class ResourcesField extends fields.TypedObjectField {
|
||||||
*/
|
*/
|
||||||
_getField(path) {
|
_getField(path) {
|
||||||
if (path.length === 0) return this;
|
if (path.length === 0) return this;
|
||||||
const first = path.shift();
|
const name = path.pop();
|
||||||
if (first === this.element.name) return this.element_getField(path);
|
if (name === this.element.name) return this.element_getField(path);
|
||||||
|
|
||||||
const resources = CONFIG.DH.RESOURCE[this.actorType].all;
|
const resources = CONFIG.DH.RESOURCE[this.actorType].all;
|
||||||
if (first in resources) {
|
if (name in resources) {
|
||||||
const field = this.element._getField(path);
|
const field = this.element._getField(path);
|
||||||
field.label = resources[first].label;
|
field.label = resources[name].label;
|
||||||
return field;
|
return field;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@ export default class DhAppearance extends foundry.abstract.DataModel {
|
||||||
initial: null,
|
initial: null,
|
||||||
blank: true,
|
blank: true,
|
||||||
choices: CONFIG.DH.GENERAL.diceSoNiceSFXClasses
|
choices: CONFIG.DH.GENERAL.diceSoNiceSFXClasses
|
||||||
|
}),
|
||||||
|
options: new foundry.data.fields.SchemaField({
|
||||||
|
muteSound: new foundry.data.fields.BooleanField()
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ export default class DamageRoll extends DHRoll {
|
||||||
constructFormula(config) {
|
constructFormula(config) {
|
||||||
this.options.isCritical = config.isCritical;
|
this.options.isCritical = config.isCritical;
|
||||||
for (const [index, part] of this.options.roll.entries()) {
|
for (const [index, part] of this.options.roll.entries()) {
|
||||||
|
const isHitpointPart = part.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id;
|
||||||
part.roll = new Roll(Roll.replaceFormulaData(part.formula, config.data));
|
part.roll = new Roll(Roll.replaceFormulaData(part.formula, config.data));
|
||||||
part.roll.terms = Roll.parse(part.roll.formula, config.data);
|
part.roll.terms = Roll.parse(part.roll.formula, config.data);
|
||||||
if (part.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id) {
|
if (part.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id) {
|
||||||
|
|
@ -169,7 +170,16 @@ export default class DamageRoll extends DHRoll {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.isCritical && part.applyTo === CONFIG.DH.GENERAL.healingTypes.hitPoints.id) {
|
if (config.damageOptions.groupAttack?.numAttackers > 1 && isHitpointPart) {
|
||||||
|
const damageTypes = [foundry.dice.terms.Die, foundry.dice.terms.NumericTerm];
|
||||||
|
for (const term of part.roll.terms) {
|
||||||
|
if (damageTypes.some(type => term instanceof type)) {
|
||||||
|
term.number *= config.damageOptions.groupAttack.numAttackers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.isCritical && isHitpointPart) {
|
||||||
const total = part.roll.dice.reduce((acc, term) => acc + term._faces * term._number, 0);
|
const total = part.roll.dice.reduce((acc, term) => acc + term._faces * term._number, 0);
|
||||||
if (total > 0) {
|
if (total > 0) {
|
||||||
part.roll.terms.push(...this.formatModifier(total));
|
part.roll.terms.push(...this.formatModifier(total));
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,7 @@ export default class DHRoll extends Roll {
|
||||||
return (this._formula = this.constructor.getFormula(this.terms));
|
return (this._formula = this.constructor.getFormula(this.terms));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate total modifiers of any rolls, including non-dh rolls.
|
* Calculate total modifiers of any rolls, including non-dh rolls.
|
||||||
* This exists because damage rolls still may receive base roll classes
|
* This exists because damage rolls still may receive base roll classes
|
||||||
*/
|
*/
|
||||||
|
|
@ -256,7 +256,7 @@ export default class DHRoll extends Roll {
|
||||||
if (!roll.terms[i].isDeterministic) continue;
|
if (!roll.terms[i].isDeterministic) continue;
|
||||||
const termTotal = roll.terms[i].total;
|
const termTotal = roll.terms[i].total;
|
||||||
if (typeof termTotal === 'number') {
|
if (typeof termTotal === 'number') {
|
||||||
const multiplier = roll.terms[i - 1]?.operator === " - " ? -1 : 1;
|
const multiplier = roll.terms[i - 1]?.operator === ' - ' ? -1 : 1;
|
||||||
modifierTotal += multiplier * termTotal;
|
modifierTotal += multiplier * termTotal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -272,7 +272,7 @@ export default class DHRoll extends Roll {
|
||||||
const changeKeys = this.getActionChangeKeys();
|
const changeKeys = this.getActionChangeKeys();
|
||||||
return (
|
return (
|
||||||
this.options.effects?.reduce((acc, effect) => {
|
this.options.effects?.reduce((acc, effect) => {
|
||||||
if (effect.system.changes.some(x => changeKeys.some(key => x.key.includes(key)))) {
|
if (effect.system.changes.some(x => changeKeys.some(key => x.key?.includes(key)))) {
|
||||||
acc[effect.id] = {
|
acc[effect.id] = {
|
||||||
id: effect.id,
|
id: effect.id,
|
||||||
name: effect.name,
|
name: effect.name,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
import DualityDie from './dualityDie.mjs';
|
import DualityDie from './dualityDie.mjs';
|
||||||
|
import HopeDie from './hopeDie.mjs';
|
||||||
|
import FearDie from './fearDie.mjs';
|
||||||
import AdvantageDie from './advantageDie.mjs';
|
import AdvantageDie from './advantageDie.mjs';
|
||||||
import DisadvantageDie from './disadvantageDie.mjs';
|
import DisadvantageDie from './disadvantageDie.mjs';
|
||||||
|
|
||||||
export const diceTypes = {
|
export const diceTypes = {
|
||||||
DualityDie,
|
DualityDie,
|
||||||
|
HopeDie,
|
||||||
|
FearDie,
|
||||||
AdvantageDie,
|
AdvantageDie,
|
||||||
DisadvantageDie
|
DisadvantageDie
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,10 @@ export default class DualityDie extends foundry.dice.terms.Die {
|
||||||
options: { appearance: {} }
|
options: { appearance: {} }
|
||||||
};
|
};
|
||||||
|
|
||||||
const preset = await getDiceSoNicePreset(diceSoNice[key], faces);
|
const diceAppearance = await this.getDiceSoNiceAppearance(options.liveRoll.roll);
|
||||||
diceSoNiceRoll.dice[0].options.appearance = preset.appearance;
|
diceSoNiceRoll.dice[0].options.appearance = diceAppearance.appearance;
|
||||||
diceSoNiceRoll.dice[0].options.modelFile = preset.modelFile;
|
diceSoNiceRoll.dice[0].options.modelFile = diceAppearance.modelFile;
|
||||||
|
diceSoNiceRoll.dice[0].results = diceSoNiceRoll.dice[0].results.filter(x => x.active);
|
||||||
|
|
||||||
await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true);
|
await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -59,4 +60,11 @@ export default class DualityDie extends foundry.dice.terms.Die {
|
||||||
this.#updateResources(oldDuality, newDuality, options.liveRoll.actor);
|
this.#updateResources(oldDuality, newDuality, options.liveRoll.actor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overridden by extending classes HopeDie and FearDie
|
||||||
|
*/
|
||||||
|
async getDiceSoNiceAppearance() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
9
module/dice/die/fearDie.mjs
Normal file
9
module/dice/die/fearDie.mjs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { getDiceSoNicePresets } from '../../config/generalConfig.mjs';
|
||||||
|
import DualityDie from './dualityDie.mjs';
|
||||||
|
|
||||||
|
export default class FearDie extends DualityDie {
|
||||||
|
async getDiceSoNiceAppearance(roll) {
|
||||||
|
const { fear } = await getDiceSoNicePresets(roll, this.denomination, this.denomination);
|
||||||
|
return fear;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
module/dice/die/hopeDie.mjs
Normal file
9
module/dice/die/hopeDie.mjs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { getDiceSoNicePresets } from '../../config/generalConfig.mjs';
|
||||||
|
import DualityDie from './dualityDie.mjs';
|
||||||
|
|
||||||
|
export default class HopeDie extends DualityDie {
|
||||||
|
async getDiceSoNiceAppearance(roll) {
|
||||||
|
const { hope } = await getDiceSoNicePresets(roll, this.denomination, this.denomination);
|
||||||
|
return hope;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -24,7 +24,7 @@ export default class DualityRoll extends D20Roll {
|
||||||
}
|
}
|
||||||
|
|
||||||
get dHope() {
|
get dHope() {
|
||||||
if (!(this.dice[0] instanceof game.system.api.dice.diceTypes.DualityDie)) this.createBaseDice();
|
if (!(this.dice[0] instanceof game.system.api.dice.diceTypes.HopeDie)) this.createBaseDice();
|
||||||
return this.dice[0];
|
return this.dice[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ export default class DualityRoll extends D20Roll {
|
||||||
}
|
}
|
||||||
|
|
||||||
get dFear() {
|
get dFear() {
|
||||||
if (!(this.dice[1] instanceof game.system.api.dice.diceTypes.DualityDie)) this.createBaseDice();
|
if (!(this.dice[1] instanceof game.system.api.dice.diceTypes.FearDie)) this.createBaseDice();
|
||||||
return this.dice[1];
|
return this.dice[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,8 +68,8 @@ export default class DualityRoll extends D20Roll {
|
||||||
}
|
}
|
||||||
|
|
||||||
get extraDice() {
|
get extraDice() {
|
||||||
const { DualityDie, AdvantageDie, DisadvantageDie } = game.system.api.dice.diceTypes;
|
const { HopeDie, FearDie, AdvantageDie, DisadvantageDie } = game.system.api.dice.diceTypes;
|
||||||
return this.dice.filter(x => ![DualityDie, AdvantageDie, DisadvantageDie].some(die => x instanceof die));
|
return this.dice.filter(x => ![HopeDie, FearDie, AdvantageDie, DisadvantageDie].some(die => x instanceof die));
|
||||||
}
|
}
|
||||||
|
|
||||||
setRallyChoices() {
|
setRallyChoices() {
|
||||||
|
|
@ -125,8 +125,8 @@ export default class DualityRoll extends D20Roll {
|
||||||
|
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
static fromData(data) {
|
static fromData(data) {
|
||||||
data.terms[0].class = 'DualityDie';
|
data.terms[0].class = 'HopeDie';
|
||||||
data.terms[2].class = 'DualityDie';
|
data.terms[2].class = 'FearDie';
|
||||||
if (data.options.roll.advantage?.type && data.terms[4]?.faces) {
|
if (data.options.roll.advantage?.type && data.terms[4]?.faces) {
|
||||||
data.terms[4].class = data.options.roll.advantage.type === 1 ? 'AdvantageDie' : 'DisadvantageDie';
|
data.terms[4].class = data.options.roll.advantage.type === 1 ? 'AdvantageDie' : 'DisadvantageDie';
|
||||||
}
|
}
|
||||||
|
|
@ -135,18 +135,18 @@ export default class DualityRoll extends D20Roll {
|
||||||
|
|
||||||
createBaseDice() {
|
createBaseDice() {
|
||||||
if (
|
if (
|
||||||
this.dice[0] instanceof game.system.api.dice.diceTypes.DualityDie &&
|
this.dice[0] instanceof game.system.api.dice.diceTypes.HopeDie &&
|
||||||
this.dice[1] instanceof game.system.api.dice.diceTypes.DualityDie
|
this.dice[1] instanceof game.system.api.dice.diceTypes.FearDie
|
||||||
) {
|
) {
|
||||||
this.terms = [this.terms[0], this.terms[1], this.terms[2]];
|
this.terms = [this.terms[0], this.terms[1], this.terms[2]];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.terms[0] = new game.system.api.dice.diceTypes.DualityDie({
|
this.terms[0] = new game.system.api.dice.diceTypes.HopeDie({
|
||||||
faces: this.data.rules.dualityRoll?.defaultHopeDice ?? 12
|
faces: this.data.rules.dualityRoll?.defaultHopeDice ?? 12
|
||||||
});
|
});
|
||||||
this.terms[1] = new foundry.dice.terms.OperatorTerm({ operator: '+' });
|
this.terms[1] = new foundry.dice.terms.OperatorTerm({ operator: '+' });
|
||||||
this.terms[2] = new game.system.api.dice.diceTypes.DualityDie({
|
this.terms[2] = new game.system.api.dice.diceTypes.FearDie({
|
||||||
faces: this.data.rules.dualityRoll?.defaultFearDice ?? 12
|
faces: this.data.rules.dualityRoll?.defaultFearDice ?? 12
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,16 @@
|
||||||
import DHToken from './token.mjs';
|
import DHToken from './token.mjs';
|
||||||
|
|
||||||
export default class DhScene extends Scene {
|
export default class DhScene extends Scene {
|
||||||
|
get rangeSettings() {
|
||||||
|
const { custom } = CONFIG.DH.GENERAL.sceneRangeMeasurementSetting;
|
||||||
|
const sceneMeasurements = this.flags.daggerheart?.rangeMeasurement;
|
||||||
|
const globalMeasurements = game.settings.get(
|
||||||
|
CONFIG.DH.id,
|
||||||
|
CONFIG.DH.SETTINGS.gameSettings.variantRules
|
||||||
|
).rangeMeasurement;
|
||||||
|
return sceneMeasurements?.setting === custom.id ? sceneMeasurements : globalMeasurements;
|
||||||
|
}
|
||||||
|
|
||||||
/** A map of `TokenDocument` IDs embedded in this scene long with new dimensions from actor size-category changes */
|
/** A map of `TokenDocument` IDs embedded in this scene long with new dimensions from actor size-category changes */
|
||||||
#sizeSyncBatch = new Map();
|
#sizeSyncBatch = new Map();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ export default class DhTokenManager {
|
||||||
: this.#actor;
|
: this.#actor;
|
||||||
const tokenData = await actor.getTokenDocument();
|
const tokenData = await actor.getTokenDocument();
|
||||||
const result = await canvas.scene.createEmbeddedDocuments('Token', [
|
const result = await canvas.scene.createEmbeddedDocuments('Token', [
|
||||||
{ ...tokenData, x: this.#activePreview.document.x, y: this.#activePreview.document.y }
|
{ ...tokenData.toObject(), x: this.#activePreview.document.x, y: this.#activePreview.document.y }
|
||||||
]);
|
]);
|
||||||
|
|
||||||
this.#activePreview = undefined;
|
this.#activePreview = undefined;
|
||||||
|
|
|
||||||
|
|
@ -63,14 +63,12 @@ export const renderMeasuredTemplate = async event => {
|
||||||
const usedAngle =
|
const usedAngle =
|
||||||
type === CONE ? (angle ?? CONFIG.MeasuredTemplate.defaults.angle) : type === INFRONT ? '180' : undefined;
|
type === CONE ? (angle ?? CONFIG.MeasuredTemplate.defaults.angle) : type === INFRONT ? '180' : undefined;
|
||||||
|
|
||||||
let baseDistance = range;
|
let baseDistance = getTemplateDistance(range);
|
||||||
if (Number.isNaN(Number(range))) {
|
|
||||||
baseDistance = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement[
|
|
||||||
range
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
const dimensionConstant = game.scenes.active.grid.size / game.scenes.active.grid.distance;
|
const { grid, distance } = CONFIG.Scene.documentClass.schema.fields.grid.fields;
|
||||||
|
const sceneGridSize = canvas.scene?.grid.size ?? grid.size.initial;
|
||||||
|
const sceneGridDistance = canvas.scene?.grid.distance ?? distance.getInitialValue();
|
||||||
|
const dimensionConstant = sceneGridSize / sceneGridDistance;
|
||||||
|
|
||||||
baseDistance *= dimensionConstant;
|
baseDistance *= dimensionConstant;
|
||||||
|
|
||||||
|
|
@ -115,3 +113,11 @@ export const renderMeasuredTemplate = async event => {
|
||||||
{ create: true }
|
{ create: true }
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getTemplateDistance = range => {
|
||||||
|
const rangeNumber = Number(range);
|
||||||
|
if (!Number.isNaN(rangeNumber)) return rangeNumber;
|
||||||
|
|
||||||
|
const settings = canvas.scene?.rangeSettings;
|
||||||
|
return settings ? settings[range] : 0;
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { defaultRestOptions } from '../config/generalConfig.mjs';
|
||||||
import { RefreshType, socketEvent } from './socket.mjs';
|
import { RefreshType, socketEvent } from './socket.mjs';
|
||||||
|
|
||||||
export async function runMigrations() {
|
export async function runMigrations() {
|
||||||
|
|
@ -341,6 +342,18 @@ export async function runMigrations() {
|
||||||
|
|
||||||
lastMigrationVersion = '2.0.0';
|
lastMigrationVersion = '2.0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (foundry.utils.isNewerVersion('2.0.4', lastMigrationVersion)) {
|
||||||
|
const downtimeMoves = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew);
|
||||||
|
if (downtimeMoves.restMoves.longRest.moves.repairArmor) {
|
||||||
|
await downtimeMoves.updateSource({
|
||||||
|
'restMoves.longRest.moves.repairArmor': defaultRestOptions.longRest().repairArmor
|
||||||
|
});
|
||||||
|
game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew, downtimeMoves.toObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
lastMigrationVersion = '2.0.4';
|
||||||
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion);
|
await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.LastMigrationVersion, lastMigrationVersion);
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -187,7 +184,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -213,7 +210,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -249,33 +247,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"vgguNWz8vG8aoLXR": {
|
"SrNyZgPvCXMpbCLG": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "vgguNWz8vG8aoLXR",
|
"_id": "SrNyZgPvCXMpbCLG",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "any",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/magic/unholy/orb-hands-pink.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,33 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"cbAvPSIhwBMBTI3D": {
|
"FCeTuf71gCzRiO5N": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "cbAvPSIhwBMBTI3D",
|
"_id": "FCeTuf71gCzRiO5N",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "any",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,33 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all Cult @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all Cult @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"EH1preaTWBD4rOvx": {
|
"4M2MvVzEgIQEQHBS": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "EH1preaTWBD4rOvx",
|
"_id": "4M2MvVzEgIQEQHBS",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": null,
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,33 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"vXHZVb0Y7Hqu3uso": {
|
"S3dYxRclyhYINRi8": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "vXHZVb0Y7Hqu3uso",
|
"_id": "S3dYxRclyhYINRi8",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/magic/unholy/orb-hands-pink.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -320,33 +318,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"QHNRSEQmqOcaoXq4": {
|
"G0DVft7h55pBnwJA": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "QHNRSEQmqOcaoXq4",
|
"_id": "G0DVft7h55pBnwJA",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/magic/unholy/orb-hands-pink.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -187,7 +184,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -213,7 +210,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -272,8 +270,38 @@
|
||||||
"recovery": null
|
"recovery": null
|
||||||
},
|
},
|
||||||
"damage": {
|
"damage": {
|
||||||
"parts": {},
|
"parts": {
|
||||||
"includeBase": false
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"target": {
|
"target": {
|
||||||
"type": "any",
|
"type": "any",
|
||||||
|
|
@ -300,7 +328,7 @@
|
||||||
"difficulty": null,
|
"difficulty": null,
|
||||||
"damageMod": "none"
|
"damageMod": "none"
|
||||||
},
|
},
|
||||||
"name": "Attack",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,35 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"DjbPQowW1OdBD9Zn": {
|
"wez1xgy9vScux9wi": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "DjbPQowW1OdBD9Zn",
|
"_id": "wez1xgy9vScux9wi",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
|
"consumeOnSuccess": false,
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"keyIsID": false,
|
"itemId": null,
|
||||||
"step": null,
|
"step": null
|
||||||
"consumeOnSuccess": false
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -297,33 +295,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"eo7J0v1B5zPHul1M": {
|
"irZGPKPpGLA6sP2y": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "eo7J0v1B5zPHul1M",
|
"_id": "irZGPKPpGLA6sP2y",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -187,7 +184,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -213,7 +210,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -251,33 +249,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name] within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name] within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"aoQDb2m32NDxE6ZP": {
|
"ferZO3BuiP9zU46m": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "aoQDb2m32NDxE6ZP",
|
"_id": "ferZO3BuiP9zU46m",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
|
"consumeOnSuccess": false,
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
|
"itemId": null,
|
||||||
"step": null
|
"step": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "any",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -245,33 +243,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"xTMNAHcoErKuR6TZ": {
|
"xFlhxnQWmVvDqQ55": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "xTMNAHcoErKuR6TZ",
|
"_id": "xFlhxnQWmVvDqQ55",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,33 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"tvQetauskZoHDR5y": {
|
"6VKv71tPUIGGIfkZ": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "tvQetauskZoHDR5y",
|
"_id": "6VKv71tPUIGGIfkZ",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
|
"consumeOnSuccess": false,
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
|
"itemId": null,
|
||||||
"step": null
|
"step": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -245,33 +243,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"DJBNtd3hWjwsjPwq": {
|
"8wRrAWHU0xHW4zuE": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "DJBNtd3hWjwsjPwq",
|
"_id": "8wRrAWHU0xHW4zuE",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -245,33 +243,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"ghgFZskDiizJDjcn": {
|
"K3pF2DBnR9zJ90W8": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "ghgFZskDiizJDjcn",
|
"_id": "K3pF2DBnR9zJ90W8",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
|
"consumeOnSuccess": false,
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
|
"itemId": null,
|
||||||
"step": null
|
"step": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -245,33 +243,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"Sz55uB8xkoNytLwJ": {
|
"6rdwJKwsSCO4R0Ty": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "Sz55uB8xkoNytLwJ",
|
"_id": "6rdwJKwsSCO4R0Ty",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -164,12 +164,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -220,7 +217,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -246,7 +243,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -284,33 +282,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"ZC5pKIb9N82vgMWu": {
|
"V58Ry90tvIjvfDTZ": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "ZC5pKIb9N82vgMWu",
|
"_id": "V58Ry90tvIjvfDTZ",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
|
"consumeOnSuccess": false,
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
|
"itemId": null,
|
||||||
"step": null
|
"step": null
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/creatures/abilities/tail-strike-bone-orange.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,9 @@
|
||||||
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
"src": "systems/daggerheart/assets/icons/documents/actors/dragon-head.svg",
|
||||||
"anchorX": 0.5,
|
"anchorX": 0.5,
|
||||||
"anchorY": 0.5,
|
"anchorY": 0.5,
|
||||||
"offsetX": 0,
|
|
||||||
"offsetY": 0,
|
|
||||||
"fit": "contain",
|
"fit": "contain",
|
||||||
"scaleX": 1,
|
"scaleX": 1,
|
||||||
"scaleY": 1,
|
"scaleY": 1,
|
||||||
"rotation": 0,
|
|
||||||
"tint": "#ffffff",
|
"tint": "#ffffff",
|
||||||
"alphaThreshold": 0.75
|
"alphaThreshold": 0.75
|
||||||
},
|
},
|
||||||
|
|
@ -181,7 +178,7 @@
|
||||||
"saturation": 0,
|
"saturation": 0,
|
||||||
"contrast": 0
|
"contrast": 0
|
||||||
},
|
},
|
||||||
"detectionModes": [],
|
"detectionModes": {},
|
||||||
"occludable": {
|
"occludable": {
|
||||||
"radius": 0
|
"radius": 0
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +204,8 @@
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"randomImg": false,
|
"randomImg": false,
|
||||||
"appendNumber": false,
|
"appendNumber": false,
|
||||||
"prependAdjective": false
|
"prependAdjective": false,
|
||||||
|
"depth": 1
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -242,33 +240,95 @@
|
||||||
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
"description": "<p><strong>Spend a Fear</strong> to choose a target and spotlight all @Lookup[@name]s within Close range of them. Those Minions move into Melee range of the target and make one shared attack roll. On a success, they deal @Lookup[@system.attack.damageFormula] physical damage each. Combine this damage.</p>",
|
||||||
"resource": null,
|
"resource": null,
|
||||||
"actions": {
|
"actions": {
|
||||||
"euP8VA4wvfsCpwN1": {
|
"Itubbr63irPJcbXG": {
|
||||||
"type": "effect",
|
"type": "attack",
|
||||||
"_id": "euP8VA4wvfsCpwN1",
|
"_id": "Itubbr63irPJcbXG",
|
||||||
"systemPath": "actions",
|
"systemPath": "actions",
|
||||||
|
"baseAction": false,
|
||||||
"description": "",
|
"description": "",
|
||||||
"chatDisplay": true,
|
"chatDisplay": true,
|
||||||
|
"originItem": {
|
||||||
|
"type": "itemCollection"
|
||||||
|
},
|
||||||
"actionType": "action",
|
"actionType": "action",
|
||||||
|
"triggers": [],
|
||||||
"cost": [
|
"cost": [
|
||||||
{
|
{
|
||||||
"scalable": false,
|
"scalable": false,
|
||||||
"key": "fear",
|
"key": "fear",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"step": null
|
"itemId": null,
|
||||||
|
"step": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"uses": {
|
"uses": {
|
||||||
"value": null,
|
"value": null,
|
||||||
"max": "",
|
"max": "",
|
||||||
"recovery": null
|
"recovery": null,
|
||||||
|
"consumeOnSuccess": false
|
||||||
|
},
|
||||||
|
"damage": {
|
||||||
|
"parts": {
|
||||||
|
"hitPoints": {
|
||||||
|
"applyTo": "hitPoints",
|
||||||
|
"resultBased": false,
|
||||||
|
"value": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": true,
|
||||||
|
"formula": "8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAlt": {
|
||||||
|
"multiplier": "flat",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"bonus": null,
|
||||||
|
"custom": {
|
||||||
|
"enabled": false,
|
||||||
|
"formula": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base": false,
|
||||||
|
"type": [
|
||||||
|
"physical"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"includeBase": false,
|
||||||
|
"direct": false,
|
||||||
|
"groupAttack": "close"
|
||||||
},
|
},
|
||||||
"effects": [],
|
|
||||||
"target": {
|
"target": {
|
||||||
"type": "self",
|
"type": "any",
|
||||||
"amount": null
|
"amount": null
|
||||||
},
|
},
|
||||||
|
"effects": [],
|
||||||
|
"roll": {
|
||||||
|
"type": "attack",
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"bonus": null,
|
||||||
|
"advState": "neutral",
|
||||||
|
"diceRolling": {
|
||||||
|
"multiplier": "prof",
|
||||||
|
"flatMultiplier": 1,
|
||||||
|
"dice": "d6",
|
||||||
|
"compare": null,
|
||||||
|
"treshold": null
|
||||||
|
},
|
||||||
|
"useDefault": false
|
||||||
|
},
|
||||||
|
"save": {
|
||||||
|
"trait": null,
|
||||||
|
"difficulty": null,
|
||||||
|
"damageMod": "none"
|
||||||
|
},
|
||||||
"name": "Spend Fear",
|
"name": "Spend Fear",
|
||||||
"img": "icons/magic/unholy/orb-hands-pink.webp",
|
|
||||||
"range": ""
|
"range": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"flatMultiplier": 1
|
"flatMultiplier": 1
|
||||||
},
|
},
|
||||||
"applyTo": "hitPoints",
|
"applyTo": "hitPoints",
|
||||||
"type": [],
|
"type": [
|
||||||
|
"magical"
|
||||||
|
],
|
||||||
"base": false,
|
"base": false,
|
||||||
"valueAlt": {
|
"valueAlt": {
|
||||||
"multiplier": "prof",
|
"multiplier": "prof",
|
||||||
|
|
@ -87,57 +89,6 @@
|
||||||
"name": "Cast",
|
"name": "Cast",
|
||||||
"img": "icons/skills/melee/spear-tips-three-green.webp",
|
"img": "icons/skills/melee/spear-tips-three-green.webp",
|
||||||
"range": "veryClose"
|
"range": "veryClose"
|
||||||
},
|
|
||||||
"CUKoYyDxQhNc0pLs": {
|
|
||||||
"type": "damage",
|
|
||||||
"_id": "CUKoYyDxQhNc0pLs",
|
|
||||||
"systemPath": "actions",
|
|
||||||
"description": "<p>If a target you hit is <em>Vulnerable</em>, they take an extra <strong>1d8</strong> damage.</p>",
|
|
||||||
"chatDisplay": true,
|
|
||||||
"actionType": "action",
|
|
||||||
"cost": [],
|
|
||||||
"uses": {
|
|
||||||
"value": null,
|
|
||||||
"max": "",
|
|
||||||
"recovery": null
|
|
||||||
},
|
|
||||||
"damage": {
|
|
||||||
"parts": {
|
|
||||||
"hitPoints": {
|
|
||||||
"value": {
|
|
||||||
"custom": {
|
|
||||||
"enabled": false
|
|
||||||
},
|
|
||||||
"multiplier": "flat",
|
|
||||||
"flatMultiplier": 1,
|
|
||||||
"dice": "d8",
|
|
||||||
"bonus": null
|
|
||||||
},
|
|
||||||
"applyTo": "hitPoints",
|
|
||||||
"type": [],
|
|
||||||
"base": false,
|
|
||||||
"resultBased": false,
|
|
||||||
"valueAlt": {
|
|
||||||
"multiplier": "prof",
|
|
||||||
"flatMultiplier": 1,
|
|
||||||
"dice": "d6",
|
|
||||||
"bonus": null,
|
|
||||||
"custom": {
|
|
||||||
"enabled": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"includeBase": false
|
|
||||||
},
|
|
||||||
"target": {
|
|
||||||
"type": "any",
|
|
||||||
"amount": null
|
|
||||||
},
|
|
||||||
"effects": [],
|
|
||||||
"name": "Damage Against Vulnerable",
|
|
||||||
"img": "icons/skills/melee/spear-tips-three-purple.webp",
|
|
||||||
"range": ""
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"attribution": {
|
"attribution": {
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,14 @@
|
||||||
"_id": "ijWppQzSOqVCb3rE",
|
"_id": "ijWppQzSOqVCb3rE",
|
||||||
"img": "icons/weapons/axes/axe-battle-jagged.webp",
|
"img": "icons/weapons/axes/axe-battle-jagged.webp",
|
||||||
"system": {
|
"system": {
|
||||||
"description": "",
|
"description": "<strong>Protective:</strong> +1 to Armor Score",
|
||||||
"actions": {},
|
"actions": {},
|
||||||
"attached": [],
|
"attached": [],
|
||||||
"tier": 3,
|
"tier": 3,
|
||||||
"equipped": false,
|
"equipped": false,
|
||||||
"secondary": false,
|
"secondary": false,
|
||||||
"burden": "twoHanded",
|
"burden": "twoHanded",
|
||||||
"weaponFeatures": [
|
"weaponFeatures": [],
|
||||||
{
|
|
||||||
"value": "protective",
|
|
||||||
"effectIds": [
|
|
||||||
"qTxADRsQnKiYfOiQ"
|
|
||||||
],
|
|
||||||
"actionIds": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"attack": {
|
"attack": {
|
||||||
"name": "Attack",
|
"name": "Attack",
|
||||||
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
"img": "icons/skills/melee/blood-slash-foam-red.webp",
|
||||||
|
|
@ -111,8 +103,8 @@
|
||||||
"effects": [
|
"effects": [
|
||||||
{
|
{
|
||||||
"name": "Protective",
|
"name": "Protective",
|
||||||
"description": "Add your character's Tier to your Armor Score",
|
"description": "+1 to Armor Score",
|
||||||
"img": "icons/skills/melee/shield-block-gray-orange.webp",
|
"img": "icons/magic/defensive/shield-barrier-deflect-teal.webp",
|
||||||
"_id": "vnR4Zhnb0rOqwrFw",
|
"_id": "vnR4Zhnb0rOqwrFw",
|
||||||
"type": "base",
|
"type": "base",
|
||||||
"system": {
|
"system": {
|
||||||
|
|
@ -122,7 +114,7 @@
|
||||||
"phase": "initial",
|
"phase": "initial",
|
||||||
"priority": 20,
|
"priority": 20,
|
||||||
"value": {
|
"value": {
|
||||||
"max": "ITEM.@system.tier"
|
"max": "1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.critical-chip {
|
.critical-chip {
|
||||||
flex: 0;
|
flex: 0;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
@ -41,6 +41,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.group-attack-container {
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
.group-attack-inner-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group-attack-tools {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.damage-section-controls {
|
.damage-section-controls {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
||||||
|
|
@ -419,11 +419,19 @@
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.form-fields {
|
.form-fields {
|
||||||
height: 32px;
|
height: 32px;
|
||||||
align-content: center;
|
align-content: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.select {
|
||||||
|
width: fit-content;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.scalable-input {
|
.scalable-input {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
.application.daggerheart {
|
.application.daggerheart {
|
||||||
prose-mirror {
|
prose-mirror {
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
.editor-menu {
|
.editor-menu {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
|
||||||
|
|
@ -68,5 +68,29 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
color-picker {
|
||||||
|
gap: 4px;
|
||||||
|
background: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animation-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.animation-inner-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: right;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
.animation-control {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "daggerheart",
|
"id": "daggerheart",
|
||||||
"title": "Daggerheart",
|
"title": "Daggerheart",
|
||||||
"description": "An unofficial implementation of the Daggerheart system",
|
"description": "An unofficial implementation of the Daggerheart system",
|
||||||
"version": "2.0.0",
|
"version": "2.0.3",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "14.359",
|
"minimum": "14.359",
|
||||||
"verified": "14.359",
|
"verified": "14.359",
|
||||||
|
|
@ -297,7 +297,7 @@
|
||||||
"background": "systems/daggerheart/assets/logos/FoundrybornBackgroundLogo.png",
|
"background": "systems/daggerheart/assets/logos/FoundrybornBackgroundLogo.png",
|
||||||
"primaryTokenAttribute": "resources.hitPoints",
|
"primaryTokenAttribute": "resources.hitPoints",
|
||||||
"secondaryTokenAttribute": "resources.stress",
|
"secondaryTokenAttribute": "resources.stress",
|
||||||
"url": "https://your/hosted/system/repo/",
|
"url": "https://github.com/Foundryborne/daggerheart",
|
||||||
"manifest": "https://your/hosted/system/repo/system.json",
|
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/main/system.json",
|
||||||
"download": "https://your/packaged/download/archive.zip"
|
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.0.3/system.zip"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,16 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless (eq path 'system.attack.')}}<a data-action="addDamage" {{#if @root.allDamageTypesUsed}}disabled{{/if}}><i class="fa-solid fa-plus icon-button"></i></a>{{/unless}}
|
{{#unless (eq path 'system.attack.')}}<a data-action="addDamage" {{#if @root.allDamageTypesUsed}}disabled{{/if}}><i class="fa-solid fa-plus icon-button"></i></a>{{/unless}}
|
||||||
</legend>
|
</legend>
|
||||||
<div class="nest-inputs space-between">
|
<div class="nest-inputs">
|
||||||
{{#if @root.hasBaseDamage}}
|
{{#if @root.hasBaseDamage}}
|
||||||
{{formField @root.fields.damage.fields.includeBase value=@root.source.damage.includeBase name="damage.includeBase" classes="checkbox" localize=true }}
|
{{formField @root.fields.damage.fields.includeBase value=@root.source.damage.includeBase name="damage.includeBase" classes="checkbox" localize=true }}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#unless (eq @root.source.type 'healing')}}
|
{{#unless (eq @root.source.type 'healing')}}
|
||||||
{{formField directField value=source.direct name=(concat path "damage.direct") localize=true classes="checkbox"}}
|
{{formField baseFields.direct value=source.direct name=(concat path "damage.direct") localize=true classes="checkbox"}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
|
{{#if (and @root.isNPC (not (eq path 'system.attack.')))}}
|
||||||
|
{{formField baseFields.groupAttack value=source.groupAttack name=(concat path "damage.groupAttack") localize=true classes="select"}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{!-- Handlebars uses Symbol.Iterator to produce index|key. This isn't compatible with our parts object, so we instead use applyTo, which is the same value --}}
|
{{!-- Handlebars uses Symbol.Iterator to produce index|key. This isn't compatible with our parts object, so we instead use applyTo, which is the same value --}}
|
||||||
|
|
|
||||||
|
|
@ -4,21 +4,6 @@
|
||||||
<a><i class="fa-solid fa-plus icon-button" data-action="addEffect"></i></a>
|
<a><i class="fa-solid fa-plus icon-button" data-action="addEffect"></i></a>
|
||||||
</legend>
|
</legend>
|
||||||
<ul class="items-list">
|
<ul class="items-list">
|
||||||
{{!-- {{#each source as | effect index |}}
|
|
||||||
<div class="inventory-item" data-effect-id="{{effect._id}}" data-action="editEffect">
|
|
||||||
{{#with (@root.getEffectDetails effect._id) as | details |}}
|
|
||||||
<img class="item-img" src="{{img}}">
|
|
||||||
<div class="item-label">
|
|
||||||
<span class="item-name">{{name}}</span>
|
|
||||||
</div>
|
|
||||||
{{/with}}
|
|
||||||
<input type="hidden" name="effects.{{index}}._id" value="{{effect._id}}">
|
|
||||||
{{#if @root.source.save.trait}}{{formInput ../fields.onSave value=effect.onSave name=(concat "effects." index ".onSave") dataset=(object tooltip=(localize "DAGGERHEART.UI.Tooltip.appliedEvenIfSuccessful") tooltipDirection="UP")}}{{/if}}
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize "CONTROLS.CommonDelete"}}" data-action="removeEffect" data-index="{{index}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}} --}}
|
|
||||||
{{#each source as | effect index |}}
|
{{#each source as | effect index |}}
|
||||||
<div class="inventory-item single-img" data-effect-id="{{effect._id}}" data-action="editEffect">
|
<div class="inventory-item single-img" data-effect-id="{{effect._id}}" data-action="editEffect">
|
||||||
<div class="inventory-item-header">
|
<div class="inventory-item-header">
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
<fieldset class="one-column">
|
<fieldset class="one-column">
|
||||||
<legend>{{localize "DAGGERHEART.GENERAL.range"}}{{#if fields.target}} & {{localize "DAGGERHEART.GENERAL.Target.single"}}{{/if}}</legend>
|
<legend>{{localize "DAGGERHEART.GENERAL.range"}}{{#if fields.target}} & {{localize "DAGGERHEART.GENERAL.Target.single"}}{{/if}}</legend>
|
||||||
{{formField fields.range value=source.range label="DAGGERHEART.GENERAL.range" name=(concat path "range") localize=true}}
|
{{formField fields.range value=source.range label=(localize "DAGGERHEART.GENERAL.range") name=(concat path "range") localize=true}}
|
||||||
{{#if fields.target}}
|
{{#if fields.target}}
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{#if (and source.target.type (not (eq source.target.type 'self')))}}
|
{{#if (and source.target.type (not (eq source.target.type 'self')))}}
|
||||||
{{ formField fields.target.amount value=source.target.amount label="DAGGERHEART.GENERAL.amount" name=(concat path "target.amount") localize=true}}
|
{{ formField fields.target.amount value=source.target.amount label=(localize "DAGGERHEART.GENERAL.amount") name=(concat path "target.amount") localize=true}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{ formField fields.target.type value=source.target.type label="DAGGERHEART.GENERAL.Target.single" name=(concat path "target.type") localize=true }}
|
{{ formField fields.target.type value=source.target.type label=(localize "DAGGERHEART.GENERAL.Target.single") name=(concat path "target.type") localize=true }}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
{{#if @root.hasBaseDamage}}{{formInput fields.useDefault name="roll.useDefault" value=source.useDefault dataset=(object tooltip="Use default Item values" tooltipDirection="UP")}}{{/if}}
|
{{#if @root.hasBaseDamage}}{{formInput fields.useDefault name="roll.useDefault" value=source.useDefault dataset=(object tooltip="Use default Item values" tooltipDirection="UP")}}{{/if}}
|
||||||
</legend>
|
</legend>
|
||||||
|
|
||||||
{{formField fields.type label="Type" name="roll.type" value=source.type localize=true choices=@root.getRollTypeOptions}}
|
{{formField fields.type label="DAGGERHEART.GENERAL.type" name="roll.type" value=source.type localize=true choices=@root.getRollTypeOptions localize=true}}
|
||||||
{{#if (eq source.type "diceSet")}}
|
{{#if (eq source.type "diceSet")}}
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{formField fields.diceRolling.fields.multiplier name="roll.diceRolling.multiplier" value=source.diceRolling.multiplier localize=true}}
|
{{formField fields.diceRolling.fields.multiplier name="roll.diceRolling.multiplier" value=source.diceRolling.multiplier localize=true}}
|
||||||
|
|
@ -17,13 +17,13 @@
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{#unless (eq source.type 'spellcast')}}
|
{{#unless (eq source.type 'spellcast')}}
|
||||||
{{#if @root.isNPC}}
|
{{#if @root.isNPC}}
|
||||||
{{formField fields.bonus label="Bonus" name="roll.bonus" value=source.bonus placeholder=@root.baseAttackBonus disabled=(not source.type)}}
|
{{formField fields.bonus label="DAGGERHEART.GENERAL.Modifier.single" name="roll.bonus" value=source.bonus placeholder=@root.baseAttackBonus disabled=(not source.type) localize=true}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{formField fields.trait label="Trait" name="roll.trait" value=source.trait localize=true disabled=(not source.type)}}
|
{{formField fields.trait label="DAGGERHEART.GENERAL.Trait.single" name="roll.trait" value=source.trait localize=true disabled=(not source.type)}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/unless}}
|
{{/unless}}
|
||||||
{{formField fields.difficulty label="Difficulty" name="roll.difficulty" value=source.difficulty disabled=(not source.type)}}
|
{{formField fields.difficulty label="DAGGERHEART.GENERAL.difficulty" name="roll.difficulty" value=source.difficulty localize=true disabled=(not source.type)}}
|
||||||
{{formField fields.advState label= "Advantage State" name="roll.advState" value=source.advState localize=true disabled=(not source.type)}}
|
{{formField fields.advState label="DAGGERHEART.ACTIONS.Config.advantageState" name="roll.advState" value=source.advState localize=true localize=true disabled=(not source.type)}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
<legend>{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}</legend>
|
<legend>{{localize "DAGGERHEART.GENERAL.Roll.reaction"}}</legend>
|
||||||
<p class="hint">{{localize "DAGGERHEART.ACTIONS.Settings.saveHint"}}</p>
|
<p class="hint">{{localize "DAGGERHEART.ACTIONS.Settings.saveHint"}}</p>
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{formField fields.trait label="Trait" name="save.trait" value=source.trait localize=true}}
|
{{formField fields.trait label="DAGGERHEART.GENERAL.Trait.single" name="save.trait" value=source.trait localize=true}}
|
||||||
{{formField fields.difficulty label="Difficulty" name="save.difficulty" value=source.difficulty disabled=(not source.trait) placeholder=@root.baseSaveDifficulty}}
|
{{formField fields.difficulty label="DAGGERHEART.GENERAL.difficulty" name="save.difficulty" value=source.difficulty disabled=(not source.trait) placeholder=@root.baseSaveDifficulty localize=true}}
|
||||||
{{formField fields.damageMod label="Damage on Save" name="save.damageMod" value=source.damageMod localize=true disabled=(not source.trait)}}
|
{{formField fields.damageMod label="DAGGERHEART.ACTIONS.Config.damageOnSave" name="save.damageMod" value=source.damageMod localize=true localize=true disabled=(not source.trait)}}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
@ -42,6 +42,24 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
|
{{#if damageOptions.groupAttack}}
|
||||||
|
<fieldset class="group-attack-container">
|
||||||
|
<legend>{{localize "DAGGERHEART.ACTIONS.Settings.groupAttack.label"}}</legend>
|
||||||
|
|
||||||
|
<div class="group-attack-inner-container">
|
||||||
|
<input type="text" data-dtype="Number" name="damageOptions.groupAttack.numAttackers" value="{{damageOptions.groupAttack.numAttackers}}" />
|
||||||
|
|
||||||
|
<div class="group-attack-tools">
|
||||||
|
<select name="damageOptions.groupAttack.range">
|
||||||
|
{{selectOptions rangeOptions selected=damageOptions.groupAttack.range localize=true}}
|
||||||
|
</select>
|
||||||
|
<button data-action="updateGroupAttack"><i class="fa-solid fa-crosshairs"></i></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#unless (empty @root.modifiers)}}
|
{{#unless (empty @root.modifiers)}}
|
||||||
<fieldset class="modifier-container two-columns">
|
<fieldset class="modifier-container two-columns">
|
||||||
<legend>{{localize "DAGGERHEART.GENERAL.Modifier.plural"}}</legend>
|
<legend>{{localize "DAGGERHEART.GENERAL.Modifier.plural"}}</legend>
|
||||||
|
|
|
||||||
|
|
@ -17,19 +17,24 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.FIELDS.initiator.memberId.label"}}</label>
|
<label>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.FIELDS.initiator.memberId.label"}}</label>
|
||||||
<div class="form-fields">
|
<div class="form-fields">
|
||||||
<select name="initiator.memberId" {{#if initiatorDisabled}}disabled{{/if}}>
|
<select class="initiator-member-field" {{#if initiatorDisabled}}disabled{{/if}}>
|
||||||
{{selectOptions initiatorOptions selected=initiator.memberId blank="" }}
|
{{selectOptions initiatorOptions selected=initiator.memberId blank="" }}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{formGroup tagTeamFields.initiator.fields.cost name="initiator.cost" value=initiator.cost disabled=initiatorDisabled localize=true }}
|
<div class="form-group">
|
||||||
|
<label>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.FIELDS.initiator.cost.label"}}</label>
|
||||||
|
<div class="form-fields">
|
||||||
|
<input type="text" data-dtype="Number" value="{{initiator.cost}}" class="initiator-cost-field" {{#if initiatorDisabled}}disabled{{/if}} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<button type="button" data-action="startTagTeamRoll" {{#unless canStartTagTeam}}disabled{{/unless}}>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.startTagTeamRoll"}} <i class="fa-solid fa-arrow-right-long"></i></button>
|
<button type="button" data-action="startTagTeamRoll" {{#unless canStartTagTeam}}disabled{{/unless}}>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.startTagTeamRoll"}} <i class="fa-solid fa-arrow-right-long"></i></button>
|
||||||
<div class="finish-tools {{#unless canStartTagTeam}}inactive{{/unless}}">
|
<div class="finish-tools {{#unless canStartTagTeam}}inactive{{/unless}}">
|
||||||
<span>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.openDialogForAll"}}</span>
|
<span>{{localize "DAGGERHEART.APPLICATIONS.TagTeamSelect.openDialogForAll"}}</span>
|
||||||
<input type="checkbox" name="openForAllPlayers" {{#unless canStartTagTeam}}disabled{{/unless}} {{checked openForAllPlayers}} />
|
<input type="checkbox" class="openforall-field" {{#unless canStartTagTeam}}disabled{{/unless}} {{checked openForAllPlayers}} />
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -9,9 +9,16 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.critical"}}</label>
|
<label>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.critical"}}</label>
|
||||||
|
|
||||||
<div class="form-fields">
|
<div class="form-fields">
|
||||||
{{formInput fields.diceSoNice.fields.sfx.fields.critical.fields.class value=setting.diceSoNice.sfx.critical.class blank="" localize=true}}
|
<div class="form-fields">
|
||||||
</div>
|
{{formInput fields.diceSoNice.fields.sfx.fields.critical.fields.class value=setting.diceSoNice.sfx.critical.class blank="" localize=true}}
|
||||||
|
</div>
|
||||||
|
<label>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.muted"}}</label>
|
||||||
|
<div class="form-fields">
|
||||||
|
{{formInput fields.diceSoNice.fields.sfx.fields.critical.fields.options.fields.muteSound value=setting.diceSoNice.sfx.critical.options.muteSound localize=true}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<section class='tab-navigation'>
|
<section class='tab-navigation'>
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,15 @@
|
||||||
|
|
||||||
{{#if animations}}
|
{{#if animations}}
|
||||||
<h3>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.animations"}}</h3>
|
<h3>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.animations"}}</h3>
|
||||||
<div class="label-container full-width">
|
<div class="animation-container">
|
||||||
<label>{{localize "DAGGERHEART.CONFIG.DaggerheartDiceAnimationEvents.higher.name"}}</label>
|
<label>{{localize "DAGGERHEART.CONFIG.DaggerheartDiceAnimationEvents.higher.name"}}</label>
|
||||||
{{formInput fields.sfx.fields.higher.fields.class value=values.sfx.higher.class blank="" localize=true}}
|
<div class="animation-inner-container">
|
||||||
|
{{formInput fields.sfx.fields.higher.fields.class value=values.sfx.higher.class blank="" localize=true}}
|
||||||
|
<div class="animation-control">
|
||||||
|
<label>{{localize "DAGGERHEART.SETTINGS.Menu.appearance.diceSoNice.muted"}}</label>
|
||||||
|
{{formInput fields.sfx.fields.higher.fields.options.fields.muteSound value=values.sfx.higher.options.muteSound localize=true}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
>
|
>
|
||||||
{{#if fields.roll}}{{> 'systems/daggerheart/templates/actionTypes/roll.hbs' fields=fields.roll.fields source=source.roll}}{{/if}}
|
{{#if fields.roll}}{{> 'systems/daggerheart/templates/actionTypes/roll.hbs' fields=fields.roll.fields source=source.roll}}{{/if}}
|
||||||
{{#if fields.save}}{{> 'systems/daggerheart/templates/actionTypes/save.hbs' fields=fields.save.fields source=source.save}}{{/if}}
|
{{#if fields.save}}{{> 'systems/daggerheart/templates/actionTypes/save.hbs' fields=fields.save.fields source=source.save}}{{/if}}
|
||||||
{{#if fields.damage}}{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=fields.damage.fields.parts.element.fields source=source.damage directField=fields.damage.fields.direct }}{{/if}}
|
{{#if fields.damage}}{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=fields.damage.fields.parts.element.fields source=source.damage baseFields=fields.damage.fields }}{{/if}}
|
||||||
{{#if fields.macro}}{{> 'systems/daggerheart/templates/actionTypes/macro.hbs' fields=fields.macro source=source.macro}}{{/if}}
|
{{#if fields.macro}}{{> 'systems/daggerheart/templates/actionTypes/macro.hbs' fields=fields.macro source=source.macro}}{{/if}}
|
||||||
{{#if fields.effects}}{{> 'systems/daggerheart/templates/actionTypes/effect.hbs' fields=fields.effects.element.fields source=source.effects}}{{/if}}
|
{{#if fields.effects}}{{> 'systems/daggerheart/templates/actionTypes/effect.hbs' fields=fields.effects.element.fields source=source.effects}}{{/if}}
|
||||||
{{#if fields.beastform}}{{> 'systems/daggerheart/templates/actionTypes/beastform.hbs' fields=fields.beastform.fields source=source.beastform}}{{/if}}
|
{{#if fields.beastform}}{{> 'systems/daggerheart/templates/actionTypes/beastform.hbs' fields=fields.beastform.fields source=source.beastform}}{{/if}}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<fieldset class="one-column">
|
<fieldset class="one-column">
|
||||||
<legend>{{localize "DAGGERHEART.GENERAL.attack"}}</legend>
|
<legend>{{localize "DAGGERHEART.GENERAL.attack"}}</legend>
|
||||||
<div class="nest-inputs">
|
<div class="nest-inputs">
|
||||||
{{formField systemFields.attack.fields.roll.fields.bonus value=document._source.system.attack.roll.bonus label="DAGGERHEART.ACTIONS.Settings.attackBonus" name="system.attack.roll.bonus" localize=true}}
|
{{formField systemFields.attack.fields.roll.fields.bonus value=document._source.system.attack.roll.bonus label="DAGGERHEART.ACTIONS.Settings.attackModifier" name="system.attack.roll.bonus" localize=true}}
|
||||||
{{formField systemFields.attack.fields.range value=document._source.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
|
{{formField systemFields.attack.fields.range value=document._source.system.attack.range label="DAGGERHEART.GENERAL.range" name="system.attack.range" localize=true}}
|
||||||
{{#if systemFields.attack.fields.target.fields}}
|
{{#if systemFields.attack.fields.target.fields}}
|
||||||
{{ formField systemFields.attack.fields.target.fields.type value=document._source.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true }}
|
{{ formField systemFields.attack.fields.target.fields.type value=document._source.system.attack.target.type label="DAGGERHEART.GENERAL.Target.single" name="system.attack.target.type" localize=true }}
|
||||||
|
|
@ -22,5 +22,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{formGroup systemFields.criticalThreshold value=document._source.system.criticalThreshold label="DAGGERHEART.ACTIONS.Settings.criticalThreshold" name="system.criticalThreshold" localize=true}}
|
{{formGroup systemFields.criticalThreshold value=document._source.system.criticalThreshold label="DAGGERHEART.ACTIONS.Settings.criticalThreshold" name="system.criticalThreshold" localize=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." directField=systemFields.attack.fields.damage.fields.direct horde=(eq document._source.system.type 'horde')}}
|
{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." baseFields=systemFields.attack.fields.damage.fields horde=(eq document._source.system.type 'horde')}}
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -18,5 +18,5 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." directField=systemFields.attack.fields.damage.fields.direct}}
|
{{> 'systems/daggerheart/templates/actionTypes/damage.hbs' fields=systemFields.attack.fields.damage.fields.parts.element.fields source=document.system.attack.damage path="system.attack." baseFields=systemFields.attack.fields.damage.fields}}
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -4,17 +4,27 @@
|
||||||
<h1 class="actor-name input" contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1>
|
<h1 class="actor-name input" contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1>
|
||||||
<div class='level-div'>
|
<div class='level-div'>
|
||||||
<h3 class='label'>
|
<h3 class='label'>
|
||||||
{{#if (or document.system.needsCharacterSetup document.system.levelData.canLevelUp)}}
|
{{#if document.system.needsCharacterSetup}}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="level-button glow" data-tooltip="{{#if document.system.needsCharacterSetup}}{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.buttonTitle"}}{{else}}{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}{{/if}}"
|
class="level-button glow"
|
||||||
|
data-action="levelManagement"
|
||||||
|
>
|
||||||
|
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.buttonTitle"}}
|
||||||
|
</button>
|
||||||
|
{{else if document.system.levelData.canLevelUp}}
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="level-button glow" data-tooltip="{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}"
|
||||||
data-action="levelManagement"
|
data-action="levelManagement"
|
||||||
>
|
>
|
||||||
<i class="fa-solid fa-angles-up"></i>
|
<i class="fa-solid fa-angles-up"></i>
|
||||||
</button>
|
</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{localize 'DAGGERHEART.GENERAL.level'}}
|
{{#unless document.system.needsCharacterSetup}}
|
||||||
<input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} />
|
{{localize 'DAGGERHEART.GENERAL.level'}}
|
||||||
|
<input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} />
|
||||||
|
{{/unless}}
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="item-description-outer-container">
|
{{#if features.length}}
|
||||||
{{#if features.length}}
|
<div class="item-description-outer-container">
|
||||||
<div class="item-description-container">
|
<div class="item-description-container">
|
||||||
{{#each features as | feature |}}
|
{{#each features as | feature |}}
|
||||||
<div><strong>{{localize feature.label}}</strong>: {{{localize feature.description}}}</div>
|
<div><strong>{{localize feature.label}}</strong>: {{{localize feature.description}}}</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<div class="item-description-outer-container">
|
{{#if features.length}}
|
||||||
{{#if features.length}}
|
<div class="item-description-outer-container">
|
||||||
<div class="item-description-container">
|
<div class="item-description-container">
|
||||||
{{#each features as | feature |}}
|
{{#each features as | feature |}}
|
||||||
<div><strong>{{localize feature.label}}</strong>: {{{localize feature.description}}}</div>
|
<div><strong>{{localize feature.label}}</strong>: {{{localize feature.description}}}</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
|
|
@ -33,31 +33,32 @@
|
||||||
<div class="roll-formula">{{total}}</div></span></label>
|
<div class="roll-formula">{{total}}</div></span></label>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="roll-dice">
|
<div class="roll-dice">
|
||||||
{{#each dice}}
|
{{#if dice.length}}
|
||||||
{{#each results}}
|
{{#each dice}}
|
||||||
{{#unless discarded}}
|
{{#each results}}
|
||||||
<div class="roll-die{{#unless @../first}} has-plus{{/unless}}">
|
{{#unless discarded}}
|
||||||
<div
|
<div class="roll-die{{#unless @../first}} has-plus{{/unless}}">
|
||||||
class="dice reroll-button {{../dice}}"
|
<div
|
||||||
data-die-index="0" data-type="damage" data-damage-type="{{@../../../key}}" data-part="{{@../../key}}" data-dice="{{@../key}}" data-result="{{@key}}"
|
class="dice reroll-button {{../dice}}"
|
||||||
>
|
data-die-index="0" data-type="damage" data-damage-type="{{@../../../key}}" data-part="{{@../../key}}" data-dice="{{@../key}}" data-result="{{@key}}"
|
||||||
{{#if hasRerolls}}<i class="fa-solid fa-dice dice-rerolled" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerolled"}}"></i>{{/if}}
|
>
|
||||||
{{result}}
|
{{#if hasRerolls}}<i class="fa-solid fa-dice dice-rerolled" data-tooltip="{{localize "DAGGERHEART.GENERAL.rerolled"}}"></i>{{/if}}
|
||||||
|
{{result}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{/unless}}
|
||||||
{{/unless}}
|
{{/each}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{/each}}
|
{{#if modifierTotal}}
|
||||||
{{#if modifierTotal}}
|
<div class="roll-die{{#if (gt modifierTotal 0)}} has-plus{{/if}}">
|
||||||
<div class="roll-die{{#if (gt modifierTotal 0)}} has-plus{{/if}}">
|
<div class="font-20">{{modifierTotal}}</div>
|
||||||
<div class="font-20">{{modifierTotal}}</div>
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
{{/if}}
|
{{else}}
|
||||||
{{#unless dice.length}}
|
|
||||||
<div class="roll-die">
|
<div class="roll-die">
|
||||||
<div class="font-20">{{total}}</div>
|
<div class="font-20">{{total}}</div>
|
||||||
</div>
|
</div>
|
||||||
{{/unless}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,21 @@
|
||||||
{{> ".scene" }}
|
{{> ".scene" }}
|
||||||
</menu>
|
</menu>
|
||||||
{{/with}}
|
{{/with}}
|
||||||
<menu id="scene-navigation-levels" class="scene-levels scene-navigation-menu flexcol levels-{{ scenes.levels.length }}">
|
{{#if scenes.levels}}
|
||||||
{{#each scenes.levels}}
|
<menu id="scene-navigation-levels" class="scene-levels scene-navigation-menu flexcol" style="--max-levels: {{ scenes.levels.length }}">
|
||||||
<li class="level-row">
|
{{#each scenes.levels}}
|
||||||
{{#with button}}
|
<li class="level-row">
|
||||||
<button type="button" class="ui-control icon fa-solid {{ css }}" data-action="cycleLevel"
|
{{#with button}}
|
||||||
data-direction="{{ direction }}" aria-label="{{ label }}"></button>
|
<button type="button" class="ui-control icon fa-solid {{ css }}" data-action="cycleLevel"
|
||||||
{{/with}}
|
data-direction="{{ direction }}" aria-label="{{ label }}"></button>
|
||||||
<div class="ui-control scene scene-level {{ css }}" data-scene-id="{{ sceneId }}" data-level-id="{{ id }}" data-action="viewLevel">
|
{{/with}}
|
||||||
<span class="ellipsis">{{ name }}</span>
|
<div class="ui-control scene scene-level {{ css }}" data-scene-id="{{ sceneId }}" data-level-id="{{ id }}" data-action="viewLevel">
|
||||||
</div>
|
<span class="ellipsis">{{ name }}</span>
|
||||||
</li>
|
</div>
|
||||||
{{/each}}
|
</li>
|
||||||
</menu>
|
{{/each}}
|
||||||
|
</menu>
|
||||||
|
{{/if}}
|
||||||
<menu id="scene-navigation-active" class="scene-navigation-menu flexcol">
|
<menu id="scene-navigation-active" class="scene-navigation-menu flexcol">
|
||||||
{{#each scenes.active}}
|
{{#each scenes.active}}
|
||||||
{{> ".scene" }}
|
{{> ".scene" }}
|
||||||
|
|
@ -34,39 +36,6 @@
|
||||||
{{> ".scene" }}
|
{{> ".scene" }}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</menu>
|
</menu>
|
||||||
{{!-- <menu id="scene-navigation-active" class="scene-navigation-menu flexcol">
|
|
||||||
{{#each scenes.active as |scene|}}
|
|
||||||
<li class="scene-wrapper">
|
|
||||||
<ul>
|
|
||||||
<li class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene" {{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
|
||||||
<span class="scene-name ellipsis">{{scene.name}}</span>
|
|
||||||
{{#if scene.users}}
|
|
||||||
<ul class="scene-players">
|
|
||||||
{{#each scene.users as |user|}}
|
|
||||||
<li class="scene-player" style="--color-bg:{{user.color}}; --color-border:{{user.border}}"
|
|
||||||
data-tooltip aria-label="{{user.name}}">{{user.letter}}</li>
|
|
||||||
{{/each}}
|
|
||||||
</ul>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{{#if scene.hasEnvironments}}
|
|
||||||
<button class="ui-control scene-environment {{#if (gt scene.environments.length 1)}}many-environments{{/if}}" data-action="openSceneEnvironment" data-scene-id="{{scene.id}}"><img src="{{scene.environmentImage}}" /> </button>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
|
||||||
</menu>
|
|
||||||
<menu id="scene-navigation-inactive" class="scene-navigation-menu flexcol">
|
|
||||||
{{#each scenes.inactive as |scene|}}
|
|
||||||
<li class="scene-wrapper">
|
|
||||||
<ul>
|
|
||||||
<li class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene" {{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
|
||||||
<span class="scene-name ellipsis">{{scene.name}}</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
|
||||||
</menu> --}}
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
{{#*inline ".scene"}}
|
{{#*inline ".scene"}}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue