44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
async function rollTable(characteristics, formula, name) {
|
|
const roll = new Roll(formula);
|
|
await roll.toMessage({flavor: name});
|
|
|
|
const values = roll.dice[0].values;
|
|
|
|
for (const value of values) {
|
|
let characteristic;
|
|
switch (value) {
|
|
case 1: case 2: characteristic = "ws"; break;
|
|
case 3: case 4: characteristic = "i"; break;
|
|
case 5: case 6: characteristic = "int"; break;
|
|
case 7: case 8: characteristic = "fel"; break;
|
|
case 9: case 10: characteristic = "*"; break;
|
|
default: continue;
|
|
}
|
|
|
|
if (characteristics.has(characteristic)) {
|
|
await rollTable(characteristics, "1d10", name);
|
|
} else {
|
|
characteristics.add(characteristic);
|
|
}
|
|
}
|
|
}
|
|
|
|
const characteristics = new Set();
|
|
await rollTable(characteristics, "2d10", this.effet.name)
|
|
|
|
if (characteristics.has("*")) {
|
|
characteristics.delete("*");
|
|
const availableChoices = foundry.utils.duplicate(game.wfrp4e.config.characteristics);
|
|
|
|
for (const ch of characteristics) delete availableChoices[ch];
|
|
|
|
const result = warhammer.apps.ValueDialog.create({
|
|
text: "Choisissez une caractéristique",
|
|
}, "", availableChoices);
|
|
|
|
if (!result) return;
|
|
|
|
characteristics.add(result);
|
|
}
|
|
|
|
this.effet.setFlag("wfrp4e", "characteristicsToSwap", Array.from(characteristics)); |