mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 23:13:39 +02:00
Merge branch 'main' into release
This commit is contained in:
commit
3a4b66f487
13 changed files with 87 additions and 9 deletions
|
|
@ -3,6 +3,7 @@ import * as applications from './module/applications/_module.mjs';
|
||||||
import * as data from './module/data/_module.mjs';
|
import * as data from './module/data/_module.mjs';
|
||||||
import * as models from './module/data/_module.mjs';
|
import * as models from './module/data/_module.mjs';
|
||||||
import * as documents from './module/documents/_module.mjs';
|
import * as documents from './module/documents/_module.mjs';
|
||||||
|
import { macros } from './module/_module.mjs';
|
||||||
import * as collections from './module/documents/collections/_module.mjs';
|
import * as collections from './module/documents/collections/_module.mjs';
|
||||||
import * as dice from './module/dice/_module.mjs';
|
import * as dice from './module/dice/_module.mjs';
|
||||||
import * as fields from './module/data/fields/_module.mjs';
|
import * as fields from './module/data/fields/_module.mjs';
|
||||||
|
|
@ -93,6 +94,7 @@ Hooks.once('init', () => {
|
||||||
data,
|
data,
|
||||||
models,
|
models,
|
||||||
documents,
|
documents,
|
||||||
|
macros,
|
||||||
dice,
|
dice,
|
||||||
fields
|
fields
|
||||||
};
|
};
|
||||||
|
|
|
||||||
14
lang/en.json
14
lang/en.json
|
|
@ -2486,6 +2486,14 @@
|
||||||
"secondaryWeapon": "Secondary Weapon"
|
"secondaryWeapon": "Secondary Weapon"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"MACROS": {
|
||||||
|
"Spotlight": {
|
||||||
|
"errors": {
|
||||||
|
"noActiveCombat": "There is no active encounter",
|
||||||
|
"noCombatantSelected": "A combatant token must be either selected or hovered to spotlight it"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"ROLLTABLES": {
|
"ROLLTABLES": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"formulaName": { "label": "Formula Name" }
|
"formulaName": { "label": "Formula Name" }
|
||||||
|
|
@ -2725,6 +2733,12 @@
|
||||||
"setResourceIdentifier": "Set Resource Identifier"
|
"setResourceIdentifier": "Set Resource Identifier"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Keybindings": {
|
||||||
|
"spotlight": {
|
||||||
|
"name": "Spotlight Combatant",
|
||||||
|
"hint": "Move the spotlight to a hovered or selected token that's present in an active encounter"
|
||||||
|
}
|
||||||
|
},
|
||||||
"Menu": {
|
"Menu": {
|
||||||
"title": "Daggerheart Game Settings",
|
"title": "Daggerheart Game Settings",
|
||||||
"automation": {
|
"automation": {
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,4 @@ export * as documents from './documents/_module.mjs';
|
||||||
export * as enrichers from './enrichers/_module.mjs';
|
export * as enrichers from './enrichers/_module.mjs';
|
||||||
export * as helpers from './helpers/_module.mjs';
|
export * as helpers from './helpers/_module.mjs';
|
||||||
export * as systemRegistration from './systemRegistration/_module.mjs';
|
export * as systemRegistration from './systemRegistration/_module.mjs';
|
||||||
|
export * as macros from './macros/_modules.mjs';
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,6 @@ export default class DhEffectsDisplay extends HandlebarsApplicationMixin(Applica
|
||||||
const effects = DhEffectsDisplay.getTokenEffects();
|
const effects = DhEffectsDisplay.getTokenEffects();
|
||||||
const effect = effects.find(x => x.id === element.dataset.effectId);
|
const effect = effects.find(x => x.id === element.dataset.effectId);
|
||||||
await effect.delete();
|
await effect.delete();
|
||||||
this.render();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setupHooks() {
|
setupHooks() {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
export const keybindings = {
|
||||||
|
spotlight: 'DHSpotlight'
|
||||||
|
};
|
||||||
|
|
||||||
export const menu = {
|
export const menu = {
|
||||||
Automation: {
|
Automation: {
|
||||||
Name: 'GameSettingsAutomation',
|
Name: 'GameSettingsAutomation',
|
||||||
|
|
|
||||||
|
|
@ -660,7 +660,6 @@ export default class DhCharacter extends DhCreature {
|
||||||
|
|
||||||
prepareDerivedData() {
|
prepareDerivedData() {
|
||||||
super.prepareDerivedData();
|
super.prepareDerivedData();
|
||||||
let baseHope = this.resources.hope.value;
|
|
||||||
if (this.companion) {
|
if (this.companion) {
|
||||||
for (let levelKey in this.companion.system.levelData.levelups) {
|
for (let levelKey in this.companion.system.levelData.levelups) {
|
||||||
const level = this.companion.system.levelData.levelups[levelKey];
|
const level = this.companion.system.levelData.levelups[levelKey];
|
||||||
|
|
@ -675,7 +674,6 @@ export default class DhCharacter extends DhCreature {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.resources.hope.max -= this.scars;
|
this.resources.hope.max -= this.scars;
|
||||||
this.resources.hope.value = Math.min(baseHope, this.resources.hope.max);
|
|
||||||
this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait;
|
this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait;
|
||||||
|
|
||||||
this.resources.armor = {
|
this.resources.armor = {
|
||||||
|
|
|
||||||
|
|
@ -60,4 +60,14 @@ export default class DhCreature extends BaseDataActor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepareDerivedData() {
|
||||||
|
const minLimitResource = resource => {
|
||||||
|
if (resource) resource.value = Math.min(resource.value, resource.max);
|
||||||
|
};
|
||||||
|
|
||||||
|
minLimitResource(this.resources.stress);
|
||||||
|
minLimitResource(this.resources.hitPoints);
|
||||||
|
minLimitResource(this.resources.hope);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,9 @@ class ResourcesField extends fields.TypedObjectField {
|
||||||
|
|
||||||
const resources = CONFIG.DH.RESOURCE[this.actorType].all;
|
const resources = CONFIG.DH.RESOURCE[this.actorType].all;
|
||||||
if (first in resources) {
|
if (first in resources) {
|
||||||
this.element.label = resources[first].label;
|
const field = this.element._getField(path);
|
||||||
return this.element._getField(path);
|
field.label = resources[first].label;
|
||||||
|
return field;
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,18 @@ export default class DhpActor extends Actor {
|
||||||
return this.system.metadata.isNPC;
|
return this.system.metadata.isNPC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepareData() {
|
||||||
|
super.prepareData();
|
||||||
|
|
||||||
|
// Update effects if it is the user's character or is controlled
|
||||||
|
if (canvas.ready) {
|
||||||
|
const controlled = canvas.tokens.controlled.some((t) => t.actor === this);
|
||||||
|
if (game.user.character === this || controlled) {
|
||||||
|
ui.effectsDisplay.render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
|
|
|
||||||
1
module/macros/_modules.mjs
Normal file
1
module/macros/_modules.mjs
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
export { default as spotlightCombatant } from './spotlightCombatant.mjs';
|
||||||
21
module/macros/spotlightCombatant.mjs
Normal file
21
module/macros/spotlightCombatant.mjs
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
/**
|
||||||
|
* Spotlights a combatant.
|
||||||
|
* The combatant can be selected in a number of ways. If many are applied at the same time, the following order is used:
|
||||||
|
* 1) SelectedCombatant
|
||||||
|
* 2) HoveredCombatant
|
||||||
|
*/
|
||||||
|
const spotlightCombatant = () => {
|
||||||
|
if (!game.combat)
|
||||||
|
return ui.notifications.error(game.i18n.localize('DAGGERHEART.MACROS.Spotlight.errors.noActiveCombat'));
|
||||||
|
|
||||||
|
const selectedCombatant = canvas.tokens.controlled.length > 0 ? canvas.tokens.controlled[0].combatant : null;
|
||||||
|
const hoveredCombatant = game.canvas.tokens.hover?.combatant;
|
||||||
|
|
||||||
|
const combatant = selectedCombatant ?? hoveredCombatant;
|
||||||
|
if (!combatant)
|
||||||
|
return ui.notifications.error(game.i18n.localize('DAGGERHEART.MACROS.Spotlight.errors.noCombatantSelected'));
|
||||||
|
|
||||||
|
ui.combat.setCombatantSpotlight(combatant.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default spotlightCombatant;
|
||||||
|
|
@ -18,6 +18,7 @@ import {
|
||||||
import { CompendiumBrowserSettings, DhTagTeamRoll } from '../data/_module.mjs';
|
import { CompendiumBrowserSettings, DhTagTeamRoll } from '../data/_module.mjs';
|
||||||
|
|
||||||
export const registerDHSettings = () => {
|
export const registerDHSettings = () => {
|
||||||
|
registerKeyBindings();
|
||||||
registerMenuSettings();
|
registerMenuSettings();
|
||||||
registerMenus();
|
registerMenus();
|
||||||
registerNonConfigSettings();
|
registerNonConfigSettings();
|
||||||
|
|
@ -33,6 +34,20 @@ export const registerDHSettings = () => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const registerKeyBindings = () => {
|
||||||
|
game.keybindings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.keybindings.spotlight, {
|
||||||
|
name: game.i18n.localize('DAGGERHEART.SETTINGS.Keybindings.spotlight.name'),
|
||||||
|
hint: game.i18n.localize('DAGGERHEART.SETTINGS.Keybindings.spotlight.hint'),
|
||||||
|
uneditable: [],
|
||||||
|
editable: [],
|
||||||
|
onDown: game.system.api.macros.spotlightCombatant,
|
||||||
|
onUp: () => {},
|
||||||
|
restricted: true,
|
||||||
|
reservedModifiers: [],
|
||||||
|
precedence: CONST.KEYBINDING_PRECEDENCE.NORMAL
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const registerMenuSettings = () => {
|
const registerMenuSettings = () => {
|
||||||
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules, {
|
game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules, {
|
||||||
scope: 'world',
|
scope: 'world',
|
||||||
|
|
|
||||||
|
|
@ -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": "1.9.5",
|
"version": "1.9.6",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "13.346",
|
"minimum": "13.346",
|
||||||
"verified": "13.351",
|
"verified": "13.351",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue