diff --git a/module/rdd-combat.js b/module/rdd-combat.js
index c3fb55e0..57a56a64 100644
--- a/module/rdd-combat.js
+++ b/module/rdd-combat.js
@@ -296,7 +296,7 @@ export class RdDCombat {
message += "
Parer à mains nues";
}
// esquive
- if (rollData.competence.data.categorie == 'melee' || rollData.competence.data.categorie == "lancer" || rollData.competence.data.categorie == 'competencecreature') {
+ if (rollData.competence.data.categorie != 'tir') {
message += "
Esquiver";
}
}
diff --git a/module/rdd-roll-resolution.js b/module/rdd-roll-resolution.js
new file mode 100644
index 00000000..da37e502
--- /dev/null
+++ b/module/rdd-roll-resolution.js
@@ -0,0 +1,125 @@
+import { ChatUtility } from "./chat-utility.js";
+import { Misc } from "./misc.js";
+import { RdDResolutionTable } from "./rdd-resolution-table.js";
+
+/**
+ * Extend the base Dialog entity to select roll parameters
+ * @extends {Dialog}
+ */
+/* -------------------------------------------- */
+export class RdDRollResolution extends Dialog {
+
+ /* -------------------------------------------- */
+ static async open() {
+ let rollData = RdDRollResolution._prepareDefaultOptions();
+ let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html', rollData);
+ const dialog = new RdDRollResolution(rollData, html);
+ dialog.render(true);
+ }
+
+ /* -------------------------------------------- */
+ static _prepareDefaultOptions() {
+ let rollData = {
+ ajustementsConditions: CONFIG.RDD.ajustementsConditions,
+ difficultesLibres: CONFIG.RDD.difficultesLibres,
+ etat: 0,
+ moral: 0,
+ carac: {},
+ finalLevel: 0,
+ diffConditions: 0,
+ diffLibre: 0
+ }
+ for (let i = 1; i < 21; i++) {
+ rollData.carac[i] = { type: "number", value: i, label: i }
+ }
+ rollData.selectedCarac = rollData.carac[10];
+ return rollData;
+ }
+
+ /* -------------------------------------------- */
+ constructor(rollData, html) {
+
+ let conf = {
+ title: 'Lancer les dés',
+ content: html,
+ buttons: {
+ 'lancer': { label: 'Lancer les dés', callback: html => this.onAction(html) }
+ }
+ };
+ super(conf, { classes: ["rdddialog"], width: 800, height: 800, 'z-index': 99999 });
+
+ this.rollData = rollData;
+ }
+
+ /* -------------------------------------------- */
+ async onAction(html) {
+ await RdDResolutionTable.rollData(this.rollData);
+ console.log("RdDRollResolution -=>", this.rollData, this.rollData.rolled);
+ const message = {
+ content: "Table de résolution: " + RdDResolutionTable.explainRollData(this.rollData)
+ };
+ ChatUtility.chatWithRollMode(message, game.user.name)
+ }
+
+ /* -------------------------------------------- */
+ activateListeners(html) {
+ super.activateListeners(html);
+
+ this.bringToTop();
+
+ var rollData = this.rollData;
+ var dialog = this;
+
+ function updateRollResult(rollData) {
+ rollData.caracValue = parseInt(rollData.selectedCarac.value)
+ rollData.finalLevel = dialog._computeFinalLevel(rollData);
+
+ // Mise à jour valeurs
+ $("#carac").val(rollData.caracValue);
+ $("#roll-param").text(rollData.selectedCarac.value + " / " + Misc.toSignedString(rollData.finalLevel));
+ $(".table-resolution").remove();
+ $("#resolutionTable").append(RdDResolutionTable.buildHTMLTable(rollData.caracValue, rollData.finalLevel, 1, 20, -10, 10));
+ $(".span-valeur").remove();
+ $("#resolutionValeurs").append(RdDResolutionTable.buildHTMLResults(rollData.caracValue, rollData.finalLevel));
+ }
+
+ // Setup everything onload
+ $(function () {
+ $("#diffLibre").val(Misc.toInt(rollData.diffLibre));
+ $("#diffConditions").val(Misc.toInt(rollData.diffConditions));
+ updateRollResult(rollData);
+ });
+
+ // Update !
+ html.find('#diffLibre').change((event) => {
+ rollData.diffLibre = Misc.toInt(event.currentTarget.value);
+ updateRollResult(rollData);
+ });
+ html.find('#diffConditions').change((event) => {
+ rollData.diffConditions = Misc.toInt(event.currentTarget.value);
+ updateRollResult(rollData);
+ });
+ html.find('#carac').change((event) => {
+ let caracKey = event.currentTarget.value;
+ this.rollData.selectedCarac = rollData.carac[caracKey];
+ updateRollResult(rollData);
+ });
+ }
+
+ /* -------------------------------------------- */
+ _computeFinalLevel(rollData) {
+ const diffConditions = Misc.toInt(rollData.diffConditions);
+ const diffLibre = this._computeDiffLibre(rollData);
+
+ return diffLibre + diffConditions;
+ }
+
+ _computeDiffLibre(rollData) {
+ return Misc.toInt(rollData.diffLibre);
+ }
+
+ /* -------------------------------------------- */
+ _getTitle(rollData) {
+ return 'Table de résolution';
+ }
+}
diff --git a/module/rdd-token-hud.js b/module/rdd-token-hud.js
index b2554eb1..490caba3 100644
--- a/module/rdd-token-hud.js
+++ b/module/rdd-token-hud.js
@@ -17,9 +17,9 @@ export class RdDTokenHud {
if (!token.inCombat) return;
if (!combatant) return;
- const hudData = { combatant: combatant, armes: RdDTokenHud.buildListeActionsCombat(combatant) };
+ let armesList = RdDTokenHud.buildListeActionsCombat(combatant) ;
+ const hudData = { combatant: combatant, armes: armesList };
- let armesList = RdDUtility.buildArmeList(combatant);
// initiative
await RdDTokenHud._configureSubMenu(html.find('.control-icon.combat'), 'systems/foundryvtt-reve-de-dragon/templates/hud-actor-init.html', hudData,
(event) => {
@@ -54,6 +54,7 @@ export class RdDTokenHud {
const imgHud = hud.find('img.rdd-hud-togglebutton');
const list = hud.find('div.rdd-hud-list');
+ hud.toggleClass('active');
HtmlUtility._showControlWhen(list, hud.hasClass('active'));
imgHud.click(event => {
diff --git a/module/rdd-utility.js b/module/rdd-utility.js
index b24746fd..e558795f 100644
--- a/module/rdd-utility.js
+++ b/module/rdd-utility.js
@@ -5,6 +5,7 @@ import { RdDRollTables } from "./rdd-rolltables.js";
import { ChatUtility } from "./chat-utility.js";
import { RdDItemCompetence } from "./item-competence.js";
import { RdDCombat } from "./rdd-combat.js";
+import { RdDRollResolution } from "./rdd-roll-resolution.js";
/* -------------------------------------------- */
const level_category = {
@@ -91,9 +92,10 @@ const fatigueMarche = { "aise": { "4":1, "6":2, "8":3, "10":4, "12":6 },
/* -------------------------------------------- */
/* Static tables for commands /table */
-const table2func = { "queues": {descr: "queues : Tire une queue de Dragon", func: RdDRollTables.getQueue},
+const table2func = { "rdd": { descr: "rdd: Ouvre la table de résolution", func: RdDRollResolution.open },
+ "queues": { descr: "queues: Tire une queue de Dragon", func: RdDRollTables.getQueue},
"ombre": { descr: "ombre: Tire une Ombre de Dragon", func: RdDRollTables.getOmbre },
- "tetehr": {descr: "tetehr: Tire une Tête de Dragon pour Hauts Revants", fund: RdDRollTables.getTeteHR},
+ "tetehr": { descr: "tetehr: Tire une Tête de Dragon pour Hauts Revants", fund: RdDRollTables.getTeteHR},
"tete" : { descr: "tete: Tire une Tête de Dragon", func: RdDRollTables.getTete},
"souffle": { descr: "souffle: Tire un Souffle de Dragon", func: RdDRollTables.getSouffle},
"tarot" : { descr: "tarot: Tire une carte de Tarot Dracnique", func: RdDRollTables.getTarot} };
@@ -173,6 +175,7 @@ export class RdDUtility {
'systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html',
'systems/foundryvtt-reve-de-dragon/templates/niveau-ethylisme.html',
// Dialogs
+ 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html',
'systems/foundryvtt-reve-de-dragon/templates/dialog-competence.html',
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-carac.html',
'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-sort.html',
diff --git a/styles/simple.css b/styles/simple.css
index f6789956..6df502b9 100644
--- a/styles/simple.css
+++ b/styles/simple.css
@@ -679,7 +679,7 @@ ul, li {
flex-direction: column;
position: absolute;
top: 2.75rem;
- right: -6rem;
+ left: 4rem;
}
.control-icon.tokenhudicon {
width: fit-content;
diff --git a/templates/dialog-roll-resolution.html b/templates/dialog-roll-resolution.html
new file mode 100644
index 00000000..203d2a54
--- /dev/null
+++ b/templates/dialog-roll-resolution.html
@@ -0,0 +1,36 @@
+