|
|
@ -180,6 +180,7 @@ export interface M5CharacterCalculatedData {
|
|||
pa: M5AttributeCalculated;
|
||||
wk: M5AttributeCalculated;
|
||||
};
|
||||
|
||||
stats: {
|
||||
lp: M5ModResult;
|
||||
ap: M5ModResult;
|
||||
|
|
|
|||
|
|
@ -314,7 +314,7 @@ export class M5Roll {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
interface FormulaParseResult {
|
||||
sides: number;
|
||||
type: string;
|
||||
|
|
|
|||
|
|
@ -77,7 +77,17 @@ export default class M5CharacterSheet extends ActorSheet {
|
|||
let target = event.target.closest("[data-attribute]") as HTMLElement;
|
||||
let attributeValue = target ? parseInt(target.dataset.value) : null;
|
||||
let attributeStr = target ? target.dataset.attribute : null;
|
||||
|
||||
let hasFortune: boolean;
|
||||
let taskType: string;
|
||||
let useFortune: boolean;
|
||||
let modifier: number;
|
||||
let difficulty: number;
|
||||
let closedRoll: boolean;
|
||||
let checkOptions = await GetRollOptions({ hasFortune, taskType, useFortune, modifier, difficulty, closedRoll });
|
||||
console.log("Check Options", checkOptions);
|
||||
if (checkOptions["cancelled"]) {
|
||||
return;
|
||||
}
|
||||
const roll = M5Roll.fromAttributeValue(this.actor, attributeStr, attributeValue);
|
||||
await roll.toMessage();
|
||||
});
|
||||
|
|
@ -517,3 +527,43 @@ export default class M5CharacterSheet extends ActorSheet {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
async function GetRollOptions({
|
||||
hasFortune = true,
|
||||
taskType = null,
|
||||
useFortune = false,
|
||||
difficulty = 0,
|
||||
modifier = 0,
|
||||
closedRoll = false,
|
||||
template = "systems/midgard5/templates/chat/task-check-dialog.hbs" } = {}) {
|
||||
const html = await renderTemplate(template, { hasFortune, useFortune, difficulty, modifier, closedRoll });
|
||||
|
||||
return new Promise(resolve => {
|
||||
const data = {
|
||||
title: (game as Game).i18n.format("midgard5.chat.taskCheck.title", { type: taskType }),
|
||||
content: html,
|
||||
buttons: {
|
||||
normal: {
|
||||
label: (game as Game).i18n.localize("midgard5.chat.actions.roll"),
|
||||
callback: html => resolve(_processTaskCheckOptions(html[0].querySelector("form")))
|
||||
},
|
||||
cancel: {
|
||||
label: (game as Game).i18n.localize("midgard5.chat.actions.cancel"),
|
||||
callback: html => resolve({ cancelled: true })
|
||||
}
|
||||
},
|
||||
default: "normal",
|
||||
close: () => resolve({ cancelled: true })
|
||||
};
|
||||
|
||||
new Dialog(data, null).render(true);
|
||||
});
|
||||
}
|
||||
|
||||
function _processTaskCheckOptions(form) {
|
||||
return {
|
||||
difficulty: parseInt(form.difficulty?.value),
|
||||
modifier: parseInt(form.modifier?.value),
|
||||
useFortune: form.useFortune?.checked,
|
||||
closedRoll: form.closedRoll?.checked
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
<form>
|
||||
<div class="form-group">
|
||||
<label>{{localize "midgard5.chat.taskCheck.options.modifier"}}</label>
|
||||
<input type="text" name="modifier" value="{{modifier}}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{localize "midgard5.chat.taskCheck.options.closedRoll"}}</label>
|
||||
<input type="checkbox" name="closedRoll" {{#if closedRoll}} checked {{/if}} />
|
||||
</div>
|
||||
{{#if hasFortune}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "midgard5.chat.taskCheck.options.useFortune"}}</label>
|
||||
<input type="checkbox" name="useFortune" {{#if useFortune}} checked {{/if}} />
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "midgard5.chat.taskCheck.options.difficulty"}}</label>
|
||||
<input type="text" name="difficulty" value="{{difficulty}}" />
|
||||
</div>
|
||||
</form>
|
||||
Loading…
Reference in New Issue