Cleanup: réduction de duplicates

This commit is contained in:
Vincent Vandemeulebrouck 2021-03-20 00:09:29 +01:00
parent 441259efb6
commit 218f38e044
5 changed files with 104 additions and 137 deletions

View File

@ -266,7 +266,7 @@ export class RdDActor extends Actor {
getBestDraconic() { getBestDraconic() {
const list = this.getDraconicList().sort((a, b) => b.data.niveau - a.data.niveau); const list = this.getDraconicList().sort((a, b) => b.data.niveau - a.data.niveau);
if (list.length == 0) { if (list.length == 0) {
return { name: "none", data: { niveau: -11 } }; return { name: "Aucun", data: { niveau: -11 } };
} }
return duplicate(list[0]); return duplicate(list[0]);
} }
@ -309,27 +309,30 @@ export class RdDActor extends Actor {
}; };
const blessures = duplicate(this.data.data.blessures); const blessures = duplicate(this.data.data.blessures);
console.log("dormirChateauDormant", blessures)
await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []); await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []);
await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste); await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste);
await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste); await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste);
await this.update({ "data.blessures": blessures }); await this.update({ "data.blessures": blessures });
await this._recupererVie(message); await this._recupererVie(message);
await this.jetDeMoral('neutre'); await this.jetDeMoral('neutre');
await this._recupereChance();
// On ne récupère un point de chance que si aucun appel à la chance dans la journée await this.transformerStress();
let utilisationChance = duplicate(this.getFlag('foundryvtt-reve-de-dragon', 'utilisationChance') ?? false);
if (!utilisationChance) {
await this.chanceActuelleIncDec(1);
}
await this.unsetFlag('foundryvtt-reve-de-dragon', 'utilisationChance'); // Nouveau jour, suppression du flag
this.transformerStress();
await this.retourSeuilDeReve(message); await this.retourSeuilDeReve(message);
message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`; message.content = `A la fin Chateau Dormant, ${message.content}<br>Un nouveau jour se lève`;
ChatMessage.create(message); ChatMessage.create(message);
} }
async _recupereChance() {
// On ne récupère un point de chance que si aucun appel à la chance dans la journée
if (this.getFlag('foundryvtt-reve-de-dragon', 'utilisationChance')) {
// Nouveau jour, suppression du flag
await this.unsetFlag('foundryvtt-reve-de-dragon', 'utilisationChance');
}
else {
await this.chanceActuelleIncDec(1);
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async _recupererBlessures(message, type, liste, moindres) { async _recupererBlessures(message, type, liste, moindres) {
let count = 0; let count = 0;
@ -439,9 +442,7 @@ export class RdDActor extends Actor {
await this.santeIncDec("vie", this.data.data.sante.vie.max - this.data.data.sante.vie.value); await this.santeIncDec("vie", this.data.data.sante.vie.max - this.data.data.sante.vie.value);
await this.santeIncDec("endurance", this.data.data.sante.endurance.max - this.data.data.sante.endurance.value); await this.santeIncDec("endurance", this.data.data.sante.endurance.max - this.data.data.sante.endurance.value);
if (this.data.data.sante.fatigue) { if (this.data.data.sante.fatigue) {
let fatigue = duplicate(this.data.data.sante.fatigue) await this.update({ "data.sante.fatigue.value": 0 });
fatigue.value = 0;
await this.update({ "data.sante.fatigue": fatigue });
} }
} }
ChatMessage.create(message); ChatMessage.create(message);
@ -491,16 +492,16 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async recupererFatigue(message) { async recupererFatigue(message) {
let fatigue = duplicate(this.data.data.sante.fatigue) let fatigue = this.data.data.sante.fatigue.value;
const fatigueMin = this._computeFatigueMin(); const fatigueMin = this._computeFatigueMin();
if (fatigue.value <= fatigueMin) { if (fatigue <= fatigueMin) {
message.content += "Vous êtes déjà reposé. "; message.content += "Vous êtes déjà reposé. ";
return; return;
} }
fatigue.value = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue.value)); fatigue = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue));
console.log("recupererFatigue", fatigue) console.log("recupererFatigue", fatigue)
await this.update({ "data.sante.fatigue": fatigue }); await this.update({ "data.sante.fatigue.value": fatigue });
if (fatigue.value == 0) { if (fatigue == 0) {
message.content += "Vous êtes complêtement reposé. "; message.content += "Vous êtes complêtement reposé. ";
} }
} }
@ -639,9 +640,9 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async sortMisEnReserve(rollData, sort) { async sortMisEnReserve(rollData, sort) {
let reserve = duplicate(this.data.data.reve.reserve); let reserve = duplicate(this.data.data.reve.reserve.list);
reserve.list.push({ coord: rollData.tmr.coord, sort: sort, draconic: duplicate(rollData.competence) }); reserve.push({ coord: rollData.tmr.coord, sort: sort, draconic: duplicate(rollData.competence) });
await this.update({ "data.reve.reserve": reserve }); await this.update({ "data.reve.reserve.list": reserve });
this.currentTMR.updateTokens(); this.currentTMR.updateTokens();
} }
@ -711,7 +712,7 @@ export class RdDActor extends Actor {
}); });
} }
const update = { _id: comp._id, 'data.niveau': nouveauNiveau }; const update = { _id: comp._id, 'data.niveau': nouveauNiveau };
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
} else { } else {
console.log("Competence not found", compName); console.log("Competence not found", compName);
} }
@ -724,7 +725,7 @@ export class RdDActor extends Actor {
compValue = compValue ?? 0; compValue = compValue ?? 0;
this.checkCompetenceXP(compName, compValue); this.checkCompetenceXP(compName, compValue);
const update = { _id: comp._id, 'data.xp': compValue }; const update = { _id: comp._id, 'data.xp': compValue };
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
} else { } else {
console.log("Competence not found", compName); console.log("Competence not found", compName);
} }
@ -737,7 +738,7 @@ export class RdDActor extends Actor {
if (comp) { if (comp) {
compValue = compValue ?? 0; compValue = compValue ?? 0;
const update = { _id: comp._id, 'data.xp_sort': compValue }; const update = { _id: comp._id, 'data.xp_sort': compValue };
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
} else { } else {
console.log("Competence not found", compName); console.log("Competence not found", compName);
} }
@ -749,7 +750,7 @@ export class RdDActor extends Actor {
if (comp) { if (comp) {
compValue = compValue ?? 0; compValue = compValue ?? 0;
const update = { _id: comp._id, 'data.niveau_archetype': compValue }; const update = { _id: comp._id, 'data.niveau_archetype': compValue };
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
} else { } else {
console.log("Competence not found", compName); console.log("Competence not found", compName);
} }
@ -757,7 +758,6 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async updateCompteurValue(fieldName, fieldValue) { async updateCompteurValue(fieldName, fieldValue) {
//console.log("Update", fieldName, fieldValue);
let compteurs = duplicate(this.data.data.compteurs); let compteurs = duplicate(this.data.data.compteurs);
compteurs[fieldName].value = fieldValue; compteurs[fieldName].value = fieldValue;
await this.update({ "data.compteurs": compteurs }); await this.update({ "data.compteurs": compteurs });
@ -951,8 +951,6 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async computeEncombrementTotalEtMalusArmure() { async computeEncombrementTotalEtMalusArmure() {
let encTotal = 0; let encTotal = 0;
let malusArmureData = (this.data.data.attributs && this.data.data.attributs.malusarmure) ? duplicate(this.data.data.attributs.malusarmure) : {};
let newMalusArmure = 0; let newMalusArmure = 0;
for (const item of this.data.items) { for (const item of this.data.items) {
if (item.type == 'armure' && item.data.equipe) { // Armure équipée, intégration du malus armure total if (item.type == 'armure' && item.data.equipe) { // Armure équipée, intégration du malus armure total
@ -973,10 +971,10 @@ export class RdDActor extends Actor {
// Mise à jour valeur totale et états // Mise à jour valeur totale et états
this.encTotal = encTotal; this.encTotal = encTotal;
this.detectSurEncombrement(); this.detectSurEncombrement();
// Mise à jour éventuelle du malus armure // Mise à jour éventuelle du malus armure
if (this.data.data.attributs && this.data.data.attributs.malusarmure && newMalusArmure != malusArmureData.value) { if (this.data.data.attributs?.malusarmure && newMalusArmure != this.data.data.attributs.malusarmure.value) {
malusArmureData.value = newMalusArmure; await this.update({ "data.attributs.malusarmure.value ": newMalusArmure });
await this.update({ "data.attributs.malusarmure": malusArmureData });
} }
return this.encTotal; return this.encTotal;
} }
@ -1008,12 +1006,12 @@ export class RdDActor extends Actor {
let resume = "Blessures:"; let resume = "Blessures:";
if (nbCritiques > 0 || nbGraves > 0 || nbLegeres > 0) { if (nbCritiques > 0 || nbGraves > 0 || nbLegeres > 0) {
if (nbLegeres > 0) { if (nbLegeres > 0) {
resume += " " + nbLegeres + " légères"; resume += " " + nbLegeres + " légère" + (nbLegeres > 1 ? "s" : "");
} }
if (nbGraves > 0) { if (nbGraves > 0) {
if (nbLegeres > 0) if (nbLegeres > 0)
resume += ","; resume += ",";
resume += " " + nbGraves + " graves"; resume += " " + nbGraves + " grave" + (nbGraves > 1 ? "s" : "");
} }
if (nbCritiques > 0) { if (nbCritiques > 0) {
if (nbGraves > 0 || nbLegeres > 0) if (nbGraves > 0 || nbLegeres > 0)
@ -1022,7 +1020,7 @@ export class RdDActor extends Actor {
} }
} }
else { else {
resume += " aucune"; resume = "Aucune blessure";
} }
return resume; return resume;
} }
@ -1052,20 +1050,14 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async ajouterRefoulement(value = 1) { async ajouterRefoulement(value = 1) {
let ret = "none"; let refoulement = this.data.data.reve.refoulement.value + value;
let refoulement = duplicate(this.data.data.reve.refoulement);
refoulement.value = refoulement.value + value;
let total = new Roll("1d20").roll().total; let total = new Roll("1d20").roll().total;
if (total <= refoulement.value) { if (total <= refoulement) {
refoulement.value = 0; refoulement = 0;
this.ajouterSouffle({ chat: true }); await this.ajouterSouffle({ chat: true });
ret = "souffle";
} }
await this.update({ "data.reve.refoulement.value": refoulement });
await this.update({ "data.reve.refoulement": refoulement }); return refoulement == 0 ? "souffle" : "none";
return ret;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1078,7 +1070,6 @@ export class RdDActor extends Actor {
content: this.name + " subit un Souffle de Dragon : " + souffle.name content: this.name + " subit un Souffle de Dragon : " + souffle.name
}); });
} }
// TODO: fermeture cité
return souffle; return souffle;
} }
@ -1087,9 +1078,7 @@ export class RdDActor extends Actor {
let queue; let queue;
if (this.data.data.reve.reve.thanatosused) { if (this.data.data.reve.reve.thanatosused) {
queue = await RdDRollTables.getOmbre(); queue = await RdDRollTables.getOmbre();
let myReve = duplicate(this.data.data.reve.reve); await this.update({ "data.reve.reve.thanatosused": false });
myReve.thanatosused = false;
await this.update({ "data.reve.reve": myReve });
} }
else { else {
queue = await RdDRollTables.getQueue(); queue = await RdDRollTables.getQueue();
@ -1124,40 +1113,25 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
getTMRRencontres() { getTMRRencontres() {
return this.data.data.reve.rencontre; return this.data.data.reve.rencontre.list;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async deleteTMRRencontreAtPosition() { async deleteTMRRencontreAtPosition() {
let rencontres = duplicate(this.getTMRRencontres()); let rencontres = this.getTMRRencontres();
let len = rencontres.list.length; let newRencontres = rencontres.filter(it => it.coord != this.getDemiReve());
let i = 0; if (newRencontres.length != rencontres.length) {
//console.log("List", rencontres, len); await this.update({ "data.reve.rencontre.list": newRencontres });
let newTable = [];
for (i = 0; i < len; i++) {
if (rencontres.list[i].coord != this.getDemiReve())
newTable.push(rencontres.list[i]);
}
if (newTable.length != len) {
rencontres.list = newTable;
//console.log("Result: ", rencontres);
await this.update({ "data.reve.rencontre": rencontres });
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async addTMRRencontre(currentRencontre) { async addTMRRencontre(currentRencontre) {
let rencontres = duplicate(this.getTMRRencontres()); let rencontres = this.getTMRRencontres();
let len = rencontres.list.length; let newRencontres = rencontres.filter(it => it.coord != this.getDemiReve());
let i = 0; if (newRencontres.length == rencontres.length) {
let already = false; newRencontres.push(currentRencontre);
for (i = 0; i < len; i++) { await this.update({ "data.reve.rencontre": newRencontres });
if (rencontres.list[i].coord == this.getDemiReve())
already = true;
}
if (!already) {
rencontres.list.push(currentRencontre);
await this.update({ "data.reve.rencontre": rencontres });
} }
} }
@ -1179,9 +1153,8 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async reveActuelIncDec(value) { async reveActuelIncDec(value) {
let reve = duplicate(this.data.data.reve.reve); let reve = Math.max(this.data.data.reve.reve.value + value, 0);
reve.value = Math.max(reve.value + value, 0); await this.update({ "data.reve.reve.value": reve });
await this.update({ "data.reve.reve": reve });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1194,17 +1167,13 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async setPointsDeSeuil(value) { async setPointsDeSeuil(seuil) {
let seuil = duplicate(this.data.data.reve.seuil); await this.update({ "data.reve.seuil.value": seuil });
seuil.value = value;
await this.update({ "data.reve.seuil": seuil });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async setPointsDeChance(value) { async setPointsDeChance(chance) {
let chance = duplicate(this.data.data.compteurs.chance); await this.update({ "data.compteurs.chance.value": chance });
chance.value = value;
await this.update({ "data.compteurs.chance": chance });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1258,7 +1227,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async testSiSonne(sante, endurance) { async testSiSonne(sante, endurance) {
const roll = new Roll("1d20").roll(); const roll = new Roll("1d20").evaluate();
roll.showDice = true; roll.showDice = true;
RdDDice.show(roll); RdDDice.show(roll);
let result = { let result = {
@ -1266,18 +1235,20 @@ export class RdDActor extends Actor {
sonne: roll.total > endurance || roll.total == 20 // 20 is always a failure sonne: roll.total > endurance || roll.total == 20 // 20 is always a failure
} }
if (roll.total == 1) { if (roll.total == 1) {
let xp = Misc.toInt(this.data.data.carac.constitution.xp) + 1; await this.ajoutXpConstitution(1); // +1 XP !
this.update({ "data.carac.constitution.xp": xp }); // +1 XP !
ChatMessage.create({ content: `${this.name} a obenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement).` }); ChatMessage.create({ content: `${this.name} a obenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement).` });
} }
if (result.sonne) { if (result.sonne) {
await this.setSonne(); await this.setSonne();
sante.sonne.value = true; sante.sonne.value = true;
} }
return result; return result;
} }
async ajoutXpConstitution(xp) {
await this.update({ "data.carac.constitution.xp": Misc.toInt(this.data.data.carac.constitution.xp) + xp });
}
/* -------------------------------------------- */ /* -------------------------------------------- */
countBlessures(blessuresListe) { countBlessures(blessuresListe) {
return blessuresListe.filter(b => b.active).length return blessuresListe.filter(b => b.active).length
@ -1297,14 +1268,12 @@ export class RdDActor extends Actor {
if (myRoll.total == 1 || (myRoll.total != 20 && myRoll.total <= this.data.data.sante.endurance.value)) { if (myRoll.total == 1 || (myRoll.total != 20 && myRoll.total <= this.data.data.sante.endurance.value)) {
msgText += `${this.name} a réussi son Jet d'Endurance !`; msgText += `${this.name} a réussi son Jet d'Endurance !`;
if (myRoll.total == 1) { if (myRoll.total == 1) {
await this.ajoutXpConstitution();
msgText += `et gagne 1 Point d'Experience en Constitution`; msgText += `et gagne 1 Point d'Experience en Constitution`;
let constit = duplicate(this.data.data.carac.constitution)
constit.xp += 1;
await this.update({ "data.carac.constitution": constit });
} }
} else { } else {
msgText += `${this.name} a échoué son Jet d'Endurance et devient Sonné`;
await this.setSonne(); await this.setSonne();
msgText += `${this.name} a échoué son Jet d'Endurance et devient Sonné`;
} }
const message = { const message = {
content: msgText, content: msgText,
@ -1413,29 +1382,25 @@ export class RdDActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async manageBlessureFromSheet(bType, index, active) { async manageBlessureFromSheet(gravite, index) {
let bList = duplicate(this.data.data.blessures); let listBlessures = duplicate(this.data.data.blessures);
let blessure = bList[bType + "s"].liste[index]; let blessure = listBlessures[gravite + "s"].liste[index];
blessure.active = !blessure.active; blessure.active = !blessure.active;
if (!blessure.active) { if (!blessure.active) {
blessure.premiers_soins = 0; this._supprimerBlessure(blessure);
blessure.soins_complets = 0;
blessure.jours = 0;
blessure.loc = "";
} }
//console.log("Blessure update", bType, index, blessure, bList ); await this.update({ 'data.blessures': listBlessures });
await this.update({ 'data.blessures': bList });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async setDataBlessureFromSheet(bType, index, psoins, pcomplets, jours, loc) { async setDataBlessureFromSheet(gravite, index, psoins, pcomplets, jours, loc) {
let bList = duplicate(this.data.data.blessures); let listBlessures = duplicate(this.data.data.blessures);
let blessure = bList[bType + "s"].liste[index]; let blessure = listBlessures[gravite + "s"].liste[index];
blessure.premiers_soins = psoins; blessure.premiers_soins = psoins;
blessure.soins_complets = pcomplets; blessure.soins_complets = pcomplets;
blessure.jours = jours; blessure.jours = jours;
blessure.loc = loc; blessure.loc = loc;
await this.update({ 'data.blessures': bList }); await this.update({ 'data.blessures': listBlessures });
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1458,24 +1423,21 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
async moralIncDec(ajustementMoral) { async moralIncDec(ajustementMoral) {
let compteurs = duplicate(this.data.data.compteurs);
compteurs.moral.value = Misc.toInt(compteurs.moral.value);;
if (ajustementMoral != 0) { if (ajustementMoral != 0) {
compteurs.moral.value += ajustementMoral; let moral = Misc.toInt(this.data.data.compteurs.moral.value) + ajustementMoral
if (compteurs.moral.value > 3) { if (moral > 3) { // exaltation
// exaltation const exaltation = Misc.toInt(this.data.data.compteurs.exaltation.value) + moral - 3;
compteurs.moral.value--; await this.update({ 'data.compteurs.exaltation.value': exaltation });
compteurs.exaltation.value = Misc.toInt(compteurs.exaltation.value) + 1;
} }
if (compteurs.moral.value < -3) { if (moral < -3) { // dissolution
// dissolution const dissolution = Misc.toInt(this.data.data.compteurs.dissolution.value) + 3 - moral;
compteurs.moral.value++; await this.update({ 'data.compteurs.dissolution.value': dissolution });
compteurs.dissolution.value = Misc.toInt(compteurs.dissolution.value) + 1;
} }
await this.update({ 'data.compteurs': compteurs }); moral = Math.max(-3, Math.min(moral, 3));
await this.update({ 'data.compteurs.moral.value': moral });
} }
return compteurs.moral.value; return this.data.data.compteurs.moral.value;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -1535,11 +1497,14 @@ export class RdDActor extends Actor {
const ajustementEthylique = ethylisme.value; const ajustementEthylique = ethylisme.value;
// Qui a bu boira (p 164) // Qui a bu boira (p 164)
let rollVolonte = await RdDResolutionTable.roll(this.data.data.carac.volonte.value, Math.min(ajustementEthylique, 0) + this.data.data.compteurs.moral.value); let rollVolonte = await RdDResolutionTable.roll(this.data.data.carac.volonte.value, Math.min(ajustementEthylique, 0) + this.data.data.compteurs.moral.value);
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes maintenant ${RdDUtility.getNomEthylisme(ajustementEthylique)} (${ajustementEthylique}).` const quiABuBoira = (rollVolonte.isSuccess
msgText += "<br>" + RdDResolutionTable.explain(rollVolonte) + "<br>";
msgText += "Qui a bu boira : " + (rollVolonte.isSuccess
? "vous êtes libre de continuer à boire ou pas." ? "vous êtes libre de continuer à boire ou pas."
: "vous avez une envie irrépréssible de reprendre un verre."); : "vous avez une envie irrépréssible de reprendre un verre.");
msgText += `Vous avez échoué à votre jet d'éthylisme, vous êtes
maintenant ${RdDUtility.getNomEthylisme(ajustementEthylique)} (${ajustementEthylique}).
<br> ${RdDResolutionTable.explain(rollVolonte)}
<br>Qui a bu boira : ${quiABuBoira}`;
} }
ChatMessage.create({ ChatMessage.create({

View File

@ -1,5 +1,4 @@
import { Grammar } from "./grammar.js"; import { Grammar } from "./grammar.js";
import { RdDUtility } from "./rdd-utility.js";
const tableCaracDerivee = { const tableCaracDerivee = {
// xp: coût pour passer du niveau inférieur à ce niveau // xp: coût pour passer du niveau inférieur à ce niveau

View File

@ -72,11 +72,11 @@ export class RdDTMRDialog extends Dialog {
} }
loadSortsReserve() { loadSortsReserve() {
this.sortsReserves = duplicate(this.actor.data.data.reve.reserve.list); this.sortsReserves = this.actor.data.data.reve.reserve.list;
} }
loadRencontres() { loadRencontres() {
this.rencontresExistantes = duplicate(this.actor.getTMRRencontres()).list; this.rencontresExistantes = this.actor.getTMRRencontres();
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -389,6 +389,11 @@ export class RdDTMRDialog extends Dialog {
ChatMessage.create({ content: message, user: game.user._id, whisper: ChatMessage.getWhisperRecipients("GM") }); ChatMessage.create({ content: message, user: game.user._id, whisper: ChatMessage.getWhisperRecipients("GM") });
} }
/* -------------------------------------------- */
_tellToUserAndGM(message) {
ChatMessage.create({ content: message, user: game.user._id, whisper: [game.user._id].concat(ChatMessage.getWhisperRecipients("GM")) });
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async manageRencontre(tmr, postRencontre) { async manageRencontre(tmr, postRencontre) {
if (this.viewOnly) { if (this.viewOnly) {
@ -669,8 +674,8 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async declencheSortEnReserve(coord) { async declencheSortEnReserve(coord) {
let sortReserveList = TMRUtility.getSortReserveList(this.sortsReserves, coord); let sortsEnCoord = TMRUtility.getSortsReserve(this.sortsReserves, coord);
if (sortReserveList.length > 0) { if (sortsEnCoord.length > 0) {
if (EffetsDraconiques.isSortReserveImpossible(this.actor)) { if (EffetsDraconiques.isSortReserveImpossible(this.actor)) {
ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!"); ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!");
return; return;
@ -678,7 +683,7 @@ export class RdDTMRDialog extends Dialog {
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) && if (!EffetsDraconiques.isUrgenceDraconique(this.actor) &&
(EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord))) { (EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord))) {
let msg = "Vous êtes sur une case avec un Sort en Réserve. Grâce à votre Tête <strong>Reserve en Sécurité</strong> ou <strong>Réserve Exensible</strong>, vous pouvez contrôler le déclenchement. Cliquez si vous souhaitez le déclencher : <ul>"; let msg = "Vous êtes sur une case avec un Sort en Réserve. Grâce à votre Tête <strong>Reserve en Sécurité</strong> ou <strong>Réserve Exensible</strong>, vous pouvez contrôler le déclenchement. Cliquez si vous souhaitez le déclencher : <ul>";
for (let sortReserve of sortReserveList) { for (let sortReserve of sortsEnCoord) {
msg += "<li><a class='chat-card-button' id='sort-reserve' data-actor-id='" + this.actor._id + "' data-tmr-coord='" + coord + "' data-sort-id='" + sortReserve.sort._id + "'>" + sortReserve.sort.name + "</a></li>"; msg += "<li><a class='chat-card-button' id='sort-reserve' data-actor-id='" + this.actor._id + "' data-tmr-coord='" + coord + "' data-sort-id='" + sortReserve.sort._id + "'>" + sortReserve.sort.name + "</a></li>";
} }
msg += "</ol>"; msg += "</ol>";
@ -688,15 +693,14 @@ export class RdDTMRDialog extends Dialog {
}); });
return; return;
} }
await this.processSortReserve(sortReserveList[0]); await this.processSortReserve(sortsEnCoord[0]);
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
lancerSortEnReserve(coord, sortId) { lancerSortEnReserve(coord, sortId) {
let sortReserveList = TMRUtility.getSortReserveList(this.sortsReserves, coord); let sortEnCoord = TMRUtility.getSortsReserve(this.sortsReserves, coord);
let sortReserve = sortReserveList.find(sortReserve => sortReserve.sort._id == sortId); let sortReserve = sortEnCoord.find(sortReserve => sortReserve.sort._id == sortId);
//console.log("SORT RESA", sortReserveList, coordTMR, sortId, sortReserve);
if (sortReserve) { if (sortReserve) {
this.processSortReserve(sortReserve); this.processSortReserve(sortReserve);
} else { } else {
@ -712,7 +716,7 @@ export class RdDTMRDialog extends Dialog {
await this.actor.deleteSortReserve(sortReserve); await this.actor.deleteSortReserve(sortReserve);
//this.updateSortReserve(); //this.updateSortReserve();
console.log("declencheSortEnReserve", sortReserve) console.log("declencheSortEnReserve", sortReserve)
this._tellToGM(`Vous avez déclenché le sort en réserve <strong> ${sortReserve.sort.name}</strong> this._tellToUserAndGM(`Vous avez déclenché le sort en réserve <strong> ${sortReserve.sort.name}</strong>
avec ${sortReserve.sort.data.ptreve_reel} points de Rêve avec ${sortReserve.sort.data.ptreve_reel} points de Rêve
en ${sortReserve.coord} (${TMRUtility.getTMRLabel(sortReserve.coord)}) en ${sortReserve.coord} (${TMRUtility.getTMRLabel(sortReserve.coord)})
`); `);

View File

@ -432,7 +432,7 @@ export class TMRUtility {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static getSortReserveList(reserveList, coord) { static getSortsReserve(reserveList, coord) {
// TODO : Gérer les têtes spéciales réserve! // TODO : Gérer les têtes spéciales réserve!
let tmrDescr = this.getTMR(coord); let tmrDescr = this.getTMR(coord);
//console.log("Sort réserve : ", tmrDescr); //console.log("Sort réserve : ", tmrDescr);

View File

@ -541,7 +541,6 @@
</div> </div>
{{!-- hautreve Tab --}} {{!-- hautreve Tab --}}
{{log 'Haut reve' hautreve}}
<div class="tab hautreve " data-group="primary" data-tab="hautreve" style="height:200px"> <div class="tab hautreve " data-group="primary" data-tab="hautreve" style="height:200px">
<div> <div>
<h3>Haut rêve:</h3> <h3>Haut rêve:</h3>