Gestion des présents des cités
+ fix bug sur conquête cité (pour supprimer la casetmr) + svg couleur plus lisibles
This commit is contained in:
@ -123,9 +123,9 @@ export class RdDTMRDialog extends Dialog {
|
||||
_tokenRencontre(rencontre) {
|
||||
return EffetsDraconiques.rencontre.token(this.pixiTMR, rencontre, () => rencontre.coord);
|
||||
}
|
||||
_tokenCaseSpeciale(caseSpeciale) {
|
||||
const draconique = Draconique.get(caseSpeciale.data.specific);
|
||||
return draconique?.token(this.pixiTMR, caseSpeciale, () => caseSpeciale.data.coord);
|
||||
_tokenCaseSpeciale(casetmr) {
|
||||
const draconique = Draconique.get(casetmr.data.specific);
|
||||
return draconique?.token(this.pixiTMR, casetmr, () => casetmr.data.coord);
|
||||
}
|
||||
_tokenSortEnReserve(sortEnReserve) {
|
||||
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortEnReserve.sort, () => sortEnReserve.coord);
|
||||
@ -313,7 +313,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _tentativeMaitrise(rencontreData) {
|
||||
async _tentativeMaitrise(rencontreData, presentCite) {
|
||||
console.log("-> matriser", rencontreData);
|
||||
|
||||
rencontreData.reve = this.actor.getReveActuel();
|
||||
@ -321,7 +321,10 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
RollDataAjustements.calcul(rencontreData, this.actor);
|
||||
|
||||
rencontreData.rolled = await RdDResolutionTable.roll(rencontreData.reve, RollDataAjustements.sum(rencontreData.ajustements));
|
||||
rencontreData.rolled = presentCite
|
||||
? this._rollPresentCite(rencontreData)
|
||||
: await RdDResolutionTable.roll(rencontreData.reve, RollDataAjustements.sum(rencontreData.ajustements));
|
||||
|
||||
let postProcess = await TMRRencontres.gererRencontre(this, rencontreData);
|
||||
|
||||
ChatMessage.create({
|
||||
@ -351,6 +354,13 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
}
|
||||
|
||||
_rollPresentCite(rencontreData) {
|
||||
let rolled = RdDResolutionTable.computeChances(rencontreData.reve, 0);
|
||||
mergeObject(rolled, { caracValue: rencontreData.reve, finalLevel: 0, roll: rolled.score });
|
||||
RdDResolutionTable.succesRequis(rolled);
|
||||
return rolled;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_deleteTmrMessages(actor, nbRounds = -1) {
|
||||
setTimeout(() => {
|
||||
@ -381,6 +391,9 @@ export class RdDTMRDialog extends Dialog {
|
||||
return;
|
||||
}
|
||||
this.currentRencontre = undefined;
|
||||
if (this._presentCite(tmr, postRencontre)) {
|
||||
return;
|
||||
}
|
||||
let rencontre = await this._jetDeRencontre(tmr);
|
||||
|
||||
if (rencontre) { // Manages it
|
||||
@ -396,19 +409,39 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
}
|
||||
|
||||
_presentCite(tmr, postRencontre) {
|
||||
const presentCite = this.casesSpeciales.find(c => EffetsDraconiques.presentCites.isCase(c, tmr.coord));
|
||||
if (presentCite) {
|
||||
this.minimize();
|
||||
EffetsDraconiques.presentCites.choisirUnPresent(presentCite, (type => this._utiliserPresentCite(presentCite, type, tmr, postRencontre)));
|
||||
}
|
||||
return presentCite;
|
||||
}
|
||||
|
||||
async _utiliserPresentCite(presentCite, typeRencontre, tmr, postRencontre) {
|
||||
const rencontre = TMRRencontres.getRencontre(typeRencontre);
|
||||
let rencontreData = {
|
||||
actor: this.actor,
|
||||
alias: this.actor.name,
|
||||
reveDepart: this.actor.getReveActuel(),
|
||||
competence: this.actor.getBestDraconic(),
|
||||
rencontre: rencontre,
|
||||
tmr: tmr
|
||||
};
|
||||
await TMRRencontres.evaluerForceRencontre(rencontre);
|
||||
await EffetsDraconiques.presentCites.ouvrirLePresent(this.actor, presentCite);
|
||||
this.removeToken(tmr, presentCite);
|
||||
await this._tentativeMaitrise(rencontreData, presentCite);
|
||||
this.maximize();
|
||||
postRencontre();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _jetDeRencontre(tmr) {
|
||||
let rencontre = this.rencontresExistantes.find(prev => prev.coord == tmr.coord);
|
||||
if (rencontre) {
|
||||
return rencontre;
|
||||
}
|
||||
if (this.casesSpeciales.find(c => EffetsDraconiques.isPresentCite(c, tmr.coord))) {
|
||||
|
||||
// TODO: dialog pour remplacer la rencontre par un présent
|
||||
|
||||
}
|
||||
|
||||
|
||||
let myRoll = new Roll("1d7").evaluate().total;
|
||||
if (TMRUtility.isForceRencontre() || myRoll == 7) {
|
||||
return await this.rencontreTMRRoll(tmr, this.actor.isRencontreSpeciale());
|
||||
@ -416,7 +449,6 @@ export class RdDTMRDialog extends Dialog {
|
||||
this._tellToUser(myRoll + ": Pas de rencontre en " + tmr.label + " (" + tmr.coord + ")");
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rencontreTMRRoll(tmr, isMauvaise = false) {
|
||||
let rencontre = TMRUtility.utiliseForceRencontre() ??
|
||||
@ -450,8 +482,8 @@ export class RdDTMRDialog extends Dialog {
|
||||
forceCarac: { 'reve-actuel': { label: "Rêve Actuel", value: this.actor.getReveActuel() } },
|
||||
maitrise: { verbe: 'maîtriser', action: 'Maîtriser le fleuve' }
|
||||
}
|
||||
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true: undefined,
|
||||
rollData.competence.data.defaut_carac = 'reve-actuel';
|
||||
rollData.double = EffetsDraconiques.isDoubleResistanceFleuve(this.actor) ? true : undefined,
|
||||
rollData.competence.data.defaut_carac = 'reve-actuel';
|
||||
await this._rollMaitriseCaseHumide(rollData);
|
||||
}
|
||||
}
|
||||
@ -541,7 +573,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
difficulte: -7,
|
||||
action: 'Conquérir',
|
||||
onConqueteReussie: r => EffetsDraconiques.conquete.onConquete(r.actor, tmr.coord, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||
onConqueteEchec: r => {},
|
||||
onConqueteEchec: r => { },
|
||||
canClose: false
|
||||
});
|
||||
}
|
||||
@ -605,7 +637,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async declencheSortEnReserve(coord) {
|
||||
|
||||
|
||||
let sortReserveList = TMRUtility.getSortReserveList(this.sortsReserves, coord);
|
||||
if (sortReserveList.length > 0) {
|
||||
if (EffetsDraconiques.isConquete(this.actor)) {
|
||||
|
Reference in New Issue
Block a user