This commit is contained in:
Dapoolp 2025-06-29 21:44:33 +02:00
parent f9377ec409
commit f92ee042e6
3 changed files with 19 additions and 17 deletions

View file

@ -29,16 +29,15 @@ export class DHRoll extends Roll {
for (const hook of config.hooks) { for (const hook of config.hooks) {
if (Hooks.call(`${SYSTEM.id}.preRoll${hook.capitalize()}`, config, message) === false) return null; if (Hooks.call(`${SYSTEM.id}.preRoll${hook.capitalize()}`, config, message) === false) return null;
} }
console.log(config)
this.applyKeybindings(config); this.applyKeybindings(config);
let roll = new this(config.roll.formula, config.data, config); let roll = new this(config.roll.formula, config.data, config);
if (config.dialog.configure !== false) { if (config.dialog.configure !== false) {
// Open Roll Dialog // Open Roll Dialog
const DialogClass = config.dialog?.class ?? this.DefaultDialog; const DialogClass = config.dialog?.class ?? this.DefaultDialog;
config = await DialogClass.configure(roll, config, message); const configDialog = await DialogClass.configure(roll, config, message);
if (!config) return; if (!configDialog) return;
roll.terms = Roll.parse(roll._formula);
} }
for (const hook of config.hooks) { for (const hook of config.hooks) {
@ -66,7 +65,7 @@ export class DHRoll extends Roll {
} }
} }
static async postEvaluate(roll, config = {}) { static postEvaluate(roll, config = {}) {
if(!config.roll) config.roll = {}; if(!config.roll) config.roll = {};
config.roll.total = roll.total; config.roll.total = roll.total;
config.roll.formula = roll.formula; config.roll.formula = roll.formula;
@ -94,11 +93,13 @@ export class DHRoll extends Roll {
} }
static applyKeybindings(config) { static applyKeybindings(config) {
config.dialog.configure ??= true; config.dialog.configure ??= !(config.event.shiftKey || config.event.altKey || config.event.ctrlKey);
} }
constructFormula(config) { constructFormula(config) {
return (this._formula = Roll.replaceFormulaData(this.options.roll.formula, config.data)); // const formula = Roll.replaceFormulaData(this.options.roll.formula, config.data);
this.terms = Roll.parse(this.options.roll.formula, config.data)
return (this._formula = this.constructor.getFormula(this.terms));
} }
} }
@ -230,7 +231,7 @@ export class D20Roll extends DHRoll {
}]; }];
} }
static async postEvaluate(roll, config = {}) { static postEvaluate(roll, config = {}) {
super.postEvaluate(roll, config); super.postEvaluate(roll, config);
if (config.targets?.length) { if (config.targets?.length) {
config.targets.forEach(target => { config.targets.forEach(target => {
@ -372,7 +373,7 @@ export class DualityRoll extends D20Roll {
}]; }];
} }
static async postEvaluate(roll, config = {}) { static postEvaluate(roll, config = {}) {
super.postEvaluate(roll, config); super.postEvaluate(roll, config);
config.roll.hope = { config.roll.hope = {
dice: roll.dHope.denomination, dice: roll.dHope.denomination,
@ -387,6 +388,7 @@ export class DualityRoll extends D20Roll {
total: roll.dHope.total + roll.dFear.total, total: roll.dHope.total + roll.dFear.total,
label: roll.totalLabel label: roll.totalLabel
}; };
console.log(roll, config)
} }
} }

View file

@ -214,7 +214,7 @@ export class DHBaseAction extends foundry.abstract.DataModel {
if ( Hooks.call(`${SYSTEM.id}.preUseAction`, this, config) === false ) return; if ( Hooks.call(`${SYSTEM.id}.preUseAction`, this, config) === false ) return;
// Display configuration window if necessary // Display configuration window if necessary
if ( config.dialog.configure && this.requireConfigurationDialog(config) ) { if ( config.dialog?.configure && this.requireConfigurationDialog(config) ) {
config = await D20RollDialog.configure(config); config = await D20RollDialog.configure(config);
if (!config) return; if (!config) return;
} }
@ -280,11 +280,8 @@ export class DHBaseAction extends foundry.abstract.DataModel {
source: { source: {
item: this.item._id, item: this.item._id,
action: this._id action: this._id
// action: this
},
dialog: {
configure: true
}, },
dialog: {},
type: this.type, type: this.type,
hasDamage: !!this.damage?.parts?.length, hasDamage: !!this.damage?.parts?.length,
hasHealing: !!this.healing, hasHealing: !!this.healing,
@ -294,7 +291,7 @@ export class DHBaseAction extends foundry.abstract.DataModel {
} }
requireConfigurationDialog(config) { requireConfigurationDialog(config) {
return !config.event.shiftkey && !this.hasRoll && (config.costs?.length || config.uses); return !config.event.shiftKey && !this.hasRoll && (config.costs?.length || config.uses);
} }
prepareCost() { prepareCost() {
@ -348,8 +345,9 @@ export class DHBaseAction extends foundry.abstract.DataModel {
async consume(config) { async consume(config) {
const resources = config.costs.filter(c => c.enabled !== false).map(c => { const resources = config.costs.filter(c => c.enabled !== false).map(c => {
return { type: c.type, value: c.total * -1 }; return { type: c.type, value: (c.total ?? c.value) * -1 };
}); });
await this.actor.modifyResource(resources); await this.actor.modifyResource(resources);
if(config.uses?.enabled) { if(config.uses?.enabled) {
const newActions = foundry.utils.getProperty(this.item.system, this.systemPath).map(x => x.toObject()); const newActions = foundry.utils.getProperty(this.item.system, this.systemPath).map(x => x.toObject());

View file

@ -2570,7 +2570,6 @@ div.daggerheart.views.multiclass {
opacity: 1; opacity: 1;
} }
.theme-light .daggerheart.dh-style.dialog.character-creation .tab-navigation nav a .descriptor { .theme-light .daggerheart.dh-style.dialog.character-creation .tab-navigation nav a .descriptor {
background: red;
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
} }
.theme-light .daggerheart.dh-style.dialog.character-creation .main-selections-container .traits-container .suggested-traits-container .suggested-trait-container, .theme-light .daggerheart.dh-style.dialog.character-creation .main-selections-container .traits-container .suggested-traits-container .suggested-trait-container,
@ -2581,6 +2580,9 @@ div.daggerheart.views.multiclass {
.daggerheart.dh-style.dialog.character-creation .window-content { .daggerheart.dh-style.dialog.character-creation .window-content {
gap: 16px; gap: 16px;
} }
.daggerheart.dh-style.dialog.character-creation .window-content .tab {
overflow-y: auto;
}
.daggerheart.dh-style.dialog.character-creation .tab-navigation nav { .daggerheart.dh-style.dialog.character-creation .tab-navigation nav {
flex: 1; flex: 1;
} }