forked from public/foundryvtt-reve-de-dragon
Amélioration Tchat Sort #42
This commit is contained in:
@ -517,7 +517,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async sortMisEnReserve(rollData, sort) {
|
||||
let reserve = duplicate(this.data.data.reve.reserve);
|
||||
reserve.list.push({ coord: rollData.coord, sort: sort, draconic: duplicate(rollData.selectedDraconic) });
|
||||
reserve.list.push({ coord: rollData.coord, sort: sort, draconic: duplicate(rollData.competence) });
|
||||
await this.update({ "data.reve.reserve": reserve });
|
||||
this.currentTMR.updateSortReserve();
|
||||
}
|
||||
@ -1319,7 +1319,7 @@ export class RdDActor extends Actor {
|
||||
selectedCarac: this.data.data.carac.reve,
|
||||
draconicList: this.getDraconicList(),
|
||||
sortList: sortList,
|
||||
selectedDraconic: this.getBestDraconic(),
|
||||
competence: this.getBestDraconic(),
|
||||
selectedSort: sortList[0],
|
||||
coord: coord,
|
||||
coordLabel: TMRUtility.getTMRDescription( coord).label,
|
||||
@ -1447,82 +1447,67 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _rollUnSortResult(rollData, isSortReserve = false) {
|
||||
rollData.isSortReserve = isSortReserve;
|
||||
let rolled = rollData.rolled;
|
||||
let sort = rollData.selectedSort;
|
||||
let closeTMR = !rollData.isSortReserve;
|
||||
if (sort.data.isrituel && isSortReserve) {
|
||||
ui.notifications.error("Impossible de mettre le rituel '" + sort.name + "' en réserve");
|
||||
let selectedSort = rollData.selectedSort;
|
||||
let closeTMR = !isSortReserve;
|
||||
if (selectedSort.data.isrituel && isSortReserve) {
|
||||
ui.notifications.error("Impossible de mettre le rituel '" + selectedSort.name + "' en réserve");
|
||||
this.currentTMR.close(); // Close TMR !
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
rollData.isSortReserve = isSortReserve;
|
||||
rollData.show = {}
|
||||
rollData.depenseReve = Number(selectedSort.data.ptreve_reel);
|
||||
|
||||
let explications = rollData.isSortReserve
|
||||
? ("<br>Mise en réserve du sort en " + rollData.coordLabel + "(" + rollData.coord + ")<strong>")
|
||||
: "<br>Lancement du sort <strong>";
|
||||
explications += sort.name + "</strong> : " + Misc.upperFirst(sort.data.draconic)
|
||||
+ " pour " + sort.data.ptreve_reel + " points de Rêve"
|
||||
+ "<br>Depuis la case " + rollData.coord + " (" + TMRUtility.getTMRDescription(rollData.coord).label + ")";
|
||||
|
||||
let depenseReve = Number(sort.data.ptreve_reel);
|
||||
let myReve = duplicate(this.data.data.reve.reve);
|
||||
if (rolled.isSuccess) { // Réussite du sort !
|
||||
//sort.ptreve_reel = coutReve;
|
||||
if (rolled.isPart) {
|
||||
depenseReve = Math.max(Math.floor(depenseReve / 2), 1);
|
||||
rollData.depenseReve = Math.max(Math.floor(rollData.depenseReve / 2), 1);
|
||||
}
|
||||
if (rollData.isSortReserve) {
|
||||
depenseReve++;
|
||||
rollData.depenseReve++;
|
||||
}
|
||||
|
||||
if (myReve.value > depenseReve) {
|
||||
explications += "<br>Réussite du sort: " + depenseReve + " points de Rêve sont dépensés (Bonus de case en " + rollData.coord + ": +" + rolled.bonus + "%)";
|
||||
|
||||
if (myReve.value > rollData.depenseReve) {
|
||||
// Incrémenter/gére le bonus de case
|
||||
RdDItemSort.incrementBonusCase(this, sort, rollData.coord);
|
||||
|
||||
RdDItemSort.incrementBonusCase(this, selectedSort, rollData.coord);
|
||||
|
||||
if (rollData.isSortReserve) {
|
||||
await this.sortMisEnReserve(rollData, sort);
|
||||
await this.sortMisEnReserve(rollData, selectedSort);
|
||||
closeTMR = false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Todo 0 pts de reve !!!!
|
||||
depenseReve = 0;
|
||||
explications += "<br>Pas assez de rêve";
|
||||
mergeObject(rollData, RdDResolutionTable.getResultat("echec"));
|
||||
rollData.depenseReve = 0;
|
||||
rollData.show.reveInsuffisant = true;
|
||||
mergeObject(rollData.rolled, RdDResolutionTable.getResultat("echec"), {overwrite:true});
|
||||
}
|
||||
} else {
|
||||
if (rolled.isETotal) { // Echec total !
|
||||
depenseReve = Math.min(myReve.value, Math.floor(depenseReve * 1.5));
|
||||
explications += "<br><strong>Echec TOTAL</strong> du sort : " + depenseReve + " Points de Rêve";
|
||||
rollData.depenseReve = Math.min(myReve.value, Math.floor(rollData.depenseReve * 1.5))
|
||||
// TODO: mise en réserve d'un échec total...
|
||||
} else {
|
||||
depenseReve = 0
|
||||
explications += "<br>Echec du sort !";
|
||||
rollData.depenseReve = 0
|
||||
}
|
||||
}
|
||||
|
||||
myReve.value = Math.max(myReve.value - depenseReve, 0);
|
||||
myReve.value = Math.max(myReve.value - rollData.depenseReve, 0);
|
||||
await this.update({ "data.reve.reve": myReve });
|
||||
|
||||
if (myReve.value == 0) { // 0 points de reve
|
||||
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" });
|
||||
closeTMR = true;
|
||||
}
|
||||
if (closeTMR) {
|
||||
this.currentTMR.close(); // Close TMR !
|
||||
} else {
|
||||
this.currentTMR.maximize(); // Re-display TMR
|
||||
}
|
||||
// Final chat message
|
||||
let chatOptions = {
|
||||
content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.selectedDraconic.name + " / " + rollData.selectedSort.name + "</strong>"
|
||||
+ RdDResolutionTable.explainRollData(rollData)
|
||||
+ explications
|
||||
}
|
||||
|
||||
let chatOptions = { content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-sort.html') }
|
||||
ChatUtility.chatWithRollMode(chatOptions, this.name)
|
||||
|
||||
if (myReve.value == 0) { // 0 points de reve
|
||||
ChatMessage.create({ content: this.name + " est réduit à 0 Points de Rêve, et tombe endormi !" });
|
||||
closeTMR = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
Reference in New Issue
Block a user