diff --git a/module/actor.js b/module/actor.js
index 232d4235..4c5dc80f 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -275,7 +275,7 @@ export class RdDActor extends Actor {
getBestDraconic() {
const list = this.getDraconicList().sort((a, b) => b.data.niveau - a.data.niveau);
if (list.length == 0) {
- return { name: "none", niveau: -11 };
+ return { name: "none", data: { niveau: -11 } };
}
return duplicate(list[0]);
}
@@ -926,7 +926,7 @@ export class RdDActor extends Actor {
if (item.data.quantite == undefined) item.data.quantite = 1; // Auto-fix
if (item.data.cout < 0) item.data.cout = 0; // Auto-fix
prixTotalEquipement += Number(item.data.cout) * Number(item.data.quantite);
- console.log("cout équipement : ", item.name, item.data.cout, item.data.quantite, prixTotalEquipement);
+ //console.log("cout équipement : ", item.name, item.data.cout, item.data.quantite, prixTotalEquipement);
}
}
// Mise à jour valeur totale de l'équipement
@@ -1627,6 +1627,46 @@ export class RdDActor extends Actor {
}
}
+ /* -------------------------------------------- */
+ filterSortList(sortList, coord) {
+ let tmr = TMRUtility.getTMRDescription( coord);
+ let letfilteredList = []
+ for ( let sort of sortList) {
+ if (sort.data.caseTMR.toLowerCase().includes('variable') ) {
+ letfilteredList.push( sort);
+ } else if (sort.data.caseTMRspeciale.toLowerCase().includes('variable') ) {
+ letfilteredList.push( sort);
+ } else if (sort.data.caseTMR.toLowerCase() == tmr.type ) {
+ letfilteredList.push( sort);
+ } else if ( sort.data.caseTMR.toLowerCase().includes('spéciale') && sort.data.caseTMRspeciale.toLowerCase().includes( coord.toLowerCase() ) ) {
+ letfilteredList.push( sort);
+ }
+ }
+
+ return letfilteredList;
+ }
+
+ /* -------------------------------------------- */
+ filterDraconicList(sortList ) {
+ let draconicDone = {};
+ let newDraconicList = [];
+ let draconicList = this.getDraconicList();
+ let bestDraconic = this.getBestDraconic();
+ for ( let sort of sortList) {
+ let voie = sort.data.draconic.toLowerCase();
+ let competenceVoie = draconicList.find(item => item.data.categorie == 'draconic' && item.name.toLowerCase().includes( voie ) );
+ if ( sort.name.toLowerCase().includes('aura') ) {
+ competenceVoie = bestDraconic;
+ }
+ if (!draconicDone[competenceVoie.name]) {
+ newDraconicList.push( competenceVoie );
+ draconicDone[competenceVoie.name] = newDraconicList.length-1; // Patch local pour relier facilement voie/compétence
+ }
+ sort.data.listIndex = draconicDone[competenceVoie.name] || 0;
+ }
+ return newDraconicList;
+ }
+
/* -------------------------------------------- */
async rollUnSort(coord) {
let sortList = duplicate(this.getSortList()); // Duplication car les pts de reve sont modifiés dans le sort
@@ -1634,11 +1674,17 @@ export class RdDActor extends Actor {
ui.notifications.info("Aucun sort disponible!");
return;
}
+ sortList = this.filterSortList(sortList, coord);
+ if (!sortList || sortList.length == 0) {
+ ui.notifications.info("Aucun sort disponible pour cette case !");
+ return;
+ }
if (this.currentTMR) this.currentTMR.minimize(); // Hide
+ let draconicList = this.filterDraconicList(sortList);
let rollData = {
selectedCarac: this.data.data.carac.reve,
- draconicList: this.getDraconicList(),
+ draconicList: draconicList,
sortList: sortList,
competence: this.getBestDraconic(),
selectedSort: sortList[0],
diff --git a/module/rdd-roll.js b/module/rdd-roll.js
index 6a931db8..4c81ad17 100644
--- a/module/rdd-roll.js
+++ b/module/rdd-roll.js
@@ -120,6 +120,9 @@ export class RdDRoll extends Dialog {
rollData.selectedCarac = rollData.carac[rollData.competence.data.defaut_carac];
$("#carac").val(rollData.competence.data.defaut_carac);
}
+ if (rollData.selectedSort) {
+ $("#draconic").val( rollData.selectedSort.data.listIndex ); // Uniquement a la selection du sort, pour permettre de changer
+ }
RdDItemSort.setCoutReveReel(rollData.selectedSort);
$("#diffLibre").val(Misc.toInt(rollData.diffLibre));
$("#diffConditions").val(Misc.toInt(rollData.diffConditions));
@@ -153,6 +156,7 @@ export class RdDRoll extends Dialog {
this.rollData.selectedSort = this.rollData.sortList[sortKey]; // Update the selectedCarac
this.rollData.bonus = RdDItemSort.getCaseBonus(this.rollData.selectedSort, this.rollData.coord);
RdDItemSort.setCoutReveReel(this.rollData.selectedSort);
+ $("#draconic").val( this.rollData.selectedSort.data.listIndex ); // Uniquement a la selection du sort, pour permettre de changer
this.updateRollResult();
});
html.find('#ptreve-variable').change((event) => {
diff --git a/system.json b/system.json
index a14eeb1f..a7986cd8 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"name": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon",
"description": "Rêve de Dragon RPG for FoundryVTT",
- "version": "1.3.7",
+ "version": "1.3.8",
"manifestPlusVersion": "1.0.0",
"minimumCoreVersion": "0.7.5",
"compatibleCoreVersion": "0.7.9",
diff --git a/templates/dialog-roll-sort.html b/templates/dialog-roll-sort.html
index f247e9a6..3879df15 100644
--- a/templates/dialog-roll-sort.html
+++ b/templates/dialog-roll-sort.html
@@ -13,7 +13,7 @@
{{/each}}
{{/select}}
-
+