Added some check on 20Q, and now rolls fill the form

This commit is contained in:
Vlyan
2020-12-31 19:06:49 +01:00
parent 7eff620955
commit dcf2f23aa0
2 changed files with 76 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
import { HelpersL5r5e } from "../helpers.js";
import { TwentyQuestions } from "./twenty-questions.js";
import { RollL5r5e } from "../dice/roll.js";
/**
* L5R Twenty Questions form
@@ -141,8 +142,18 @@ export class TwentyQuestionsDialog extends FormApplication {
return;
}
// Heritage Roll (step 18)
html.find(".inline-roll").on("click", (event) => {
event.stopPropagation();
const diceRoll = $(event.currentTarget);
const stepKey = diceRoll.data("step");
const formula = diceRoll.data("formula");
const flavor = diceRoll.data("flavor");
this._rollHeritage(stepKey, formula, flavor).then(() => this.render(false));
});
// Delete a dnd element
html.find(`.property-delete`).on("click", (event) => {
html.find(".property-delete").on("click", (event) => {
const stepKey = $(event.currentTarget).parents(".tq-drag-n-drop").data("step");
const itemId = $(event.currentTarget).parents(".property").data("propertyId");
this._deleteOwnedItem(stepKey, itemId);
@@ -181,6 +192,55 @@ export class TwentyQuestionsDialog extends FormApplication {
console.warn("forbidden item for this drop zone", type, item.data.type);
return;
}
// TODO Check if this item id already exist ?
// Specific entry
switch (type) {
case "technique":
// Tech not allowed
if (!this.actor.data.data.techniques[item.data.data.technique_type]) {
console.warn("This technique is not allowed for your character", type, item.data.type);
return;
}
break;
case "peculiarity":
switch (stepKey) {
case "step9.distinction":
if (item.data.data.peculiarity_type !== "distinction") {
return;
}
break;
case "step10.adversity":
if (item.data.data.peculiarity_type !== "adversity") {
return;
}
break;
case "step11.passion":
if (item.data.data.peculiarity_type !== "passion") {
return;
}
break;
case "step12.anxiety":
if (item.data.data.peculiarity_type !== "anxiety") {
return;
}
break;
case "step13.advantage":
if (!["distinction", "passion"].includes(item.data.data.peculiarity_type)) {
return;
}
break;
case "step13.disadvantage":
if (!["adversity", "anxiety"].includes(item.data.data.peculiarity_type)) {
return;
}
break;
}
break;
}
// Add the item (step and cache)
this._addOwnedItem(item, stepKey);
@@ -257,6 +317,19 @@ export class TwentyQuestionsDialog extends FormApplication {
}
}
/**
* Roll Heritage dice and fill the form with the result
* @private
*/
async _rollHeritage(stepName, formula, flavor) {
const roll = new RollL5r5e(formula);
roll.actor = this._actor;
await roll.roll();
setProperty(this.object.data, stepName, roll.result);
return roll.toMessage({ flavor: flavor });
}
/**
* Add a owned item reference in step and cache
* @private

View File

@@ -578,7 +578,7 @@
<label>
{{localize 'l5r5e.twenty_questions.d10r1'}}
<a class="inline-roll roll" title="1d10" data-mode="roll"
data-flavor="{{localize 'l5r5e.twenty_questions.d10r1'}}" data-formula="1d10">
data-flavor="{{localize 'l5r5e.twenty_questions.d10r1'}}" data-formula="1d10" data-step="step18.heritage_1">
<i class="fas fa-dice-d20"></i> 1d10
</a>
<br>
@@ -589,7 +589,7 @@
<label>
{{localize 'l5r5e.twenty_questions.d10r2'}}
<a class="inline-roll roll" title="1d10" data-mode="roll"
data-flavor="{{localize 'l5r5e.twenty_questions.d10r2'}}" data-formula="1d10">
data-flavor="{{localize 'l5r5e.twenty_questions.d10r2'}}" data-formula="1d10" data-step="step18.heritage_2">
<i class="fas fa-dice-d20"></i> 1d10
</a>
<br>