Stabilisation v10.0.18 #556

Merged
uberwald merged 6 commits from VincentVk/foundryvtt-reve-de-dragon:v10 into v10 2022-09-22 08:34:46 +02:00
7 changed files with 58 additions and 61 deletions

View File

@ -833,7 +833,7 @@ export class RdDCombat {
// # utilisation esquive
const corpsACorps = this.defender.getCompetence("Corps à corps", { onMessage: it => console.info(it, this.defender) });
const esquives = duplicate(this.defender.getCompetences("esquive", { onMessage: it => console.info(it, this.defender) }))
esquives.forEach(e => e.usages = e?.id ? this.defender.getItemUse(e.id) : 0);
esquives.forEach(e => e.system.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0);
const paramChatDefense = {
passeArme: attackerRoll.passeArme,

View File

@ -214,24 +214,12 @@ export class RdDTMRDialog extends Dialog {
this.actor.rollLireSigneDraconique(this._getActorCoord());
});
html.find('#dir-top').click((event) => {
this.moveFromKey("top");
});
html.find('#dir-top-left').click((event) => {
this.moveFromKey("top-left");
});
html.find('#dir-top-right').click((event) => {
this.moveFromKey("top-right");
});
html.find('#dir-bottom-left').click((event) => {
this.moveFromKey("bottom-left");
});
html.find('#dir-bottom-right').click((event) => {
this.moveFromKey("bottom-right");
});
html.find('#dir-bottom').click((event) => {
this.moveFromKey("bottom");
});
html.find('#dir-top').click((event) => this.moveFromKey("top"));
html.find('#dir-top-left').click((event) => this.moveFromKey("top-left"));
html.find('#dir-top-right').click((event) => this.moveFromKey("top-right"));
html.find('#dir-bottom-left').click((event) => this.moveFromKey("bottom-left"));
html.find('#dir-bottom-right').click((event) => this.moveFromKey("bottom-right"));
html.find('#dir-bottom').click((event) => this.moveFromKey("bottom"));
// Gestion du cout de montée en points de rêve
let reveCout = ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse();
@ -243,13 +231,14 @@ export class RdDTMRDialog extends Dialog {
// Le reste...
this.updateValuesDisplay();
let tmr = TMRUtility.getTMR(this._getActorCoord());
await this.manageRencontre(tmr, () => {
this.postRencontre(tmr);
});
await this.manageRencontre(tmr);
}
/* -------------------------------------------- */
async updateValuesDisplay() {
if (!this.rendered) {
return;
}
const coord = this._getActorCoord();
HtmlUtility._showControlWhen($(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord));
@ -278,6 +267,7 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */
async close() {
this.descenteTMR = true;
if (this.actor.tmrApp) {
this.actor.tmrApp = undefined; // Cleanup reference
if (!this.viewOnly) {
@ -483,12 +473,13 @@ export class RdDTMRDialog extends Dialog {
}
/* -------------------------------------------- */
async manageRencontre(tmr, postRencontre) {
async manageRencontre(tmr) {
if (this.viewOnly) {
return;
}
this.descenteTMR = false;
this.currentRencontre = undefined;
if (this._presentCite(tmr, postRencontre)) {
if (this._presentCite(tmr)) {
return;
}
let rencontre = await this._jetDeRencontre(tmr);
@ -498,27 +489,27 @@ export class RdDTMRDialog extends Dialog {
console.log("manageRencontre", rencontre);
this.currentRencontre = duplicate(rencontre);
let dialog = new RdDTMRRencontreDialog("", this, this.currentRencontre, postRencontre);
let dialog = new RdDTMRRencontreDialog(this, this.currentRencontre, () => this.postRencontre(tmr));
dialog.render(true);
}
else {
postRencontre();
this.postRencontre(tmr);
}
}
/* -------------------------------------------- */
_presentCite(tmr, postRencontre) {
_presentCite(tmr) {
const presentCite = this.casesSpeciales.find(c => EffetsDraconiques.presentCites.isCase(c, tmr.coord));
if (presentCite) {
this.minimize();
const caseData = presentCite;
EffetsDraconiques.presentCites.choisirUnPresent(caseData, (type => this._utiliserPresentCite(presentCite, type, tmr, postRencontre)));
EffetsDraconiques.presentCites.choisirUnPresent(caseData, (type => this._utiliserPresentCite(presentCite, type, tmr)));
}
return presentCite;
}
/* -------------------------------------------- */
async _utiliserPresentCite(presentCite, typeRencontre, tmr, postRencontre) {
async _utiliserPresentCite(presentCite, typeRencontre, tmr) {
this.currentRencontre = TMRRencontres.getRencontre(typeRencontre);
await TMRRencontres.evaluerForceRencontre(this.currentRencontre);
await EffetsDraconiques.presentCites.ouvrirLePresent(this.actor, presentCite);
@ -537,7 +528,7 @@ export class RdDTMRDialog extends Dialog {
await this._tentativeMaitrise(rencontreData);
this.maximize();
postRencontre();
this.postRencontre(tmr);
}
/* -------------------------------------------- */
@ -608,7 +599,6 @@ export class RdDTMRDialog extends Dialog {
async _resultatMaitriseCaseHumide(rollData) {
await this.souffleSiEchecTotal(rollData);
this.toclose = rollData.rolled.isEchec;
if (rollData.rolled.isSuccess && rollData.double) {
rollData.previous = { rolled: rollData.rolled, ajustements: rollData.ajustements };
rollData.double = undefined;
@ -621,7 +611,7 @@ export class RdDTMRDialog extends Dialog {
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.html`, rollData)
});
if (rollData.rolled.isEchec) {
this.close();
await this.close();
}
}
@ -731,8 +721,6 @@ export class RdDTMRDialog extends Dialog {
if (rollData.rolled.isETotal) {
rollData.souffle = await this.actor.ajouterSouffle({ chat: false });
}
this.toclose = rollData.rolled.isEchec;
rollData.poesie = await Poetique.getExtrait();
ChatMessage.create({
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
@ -979,7 +967,7 @@ export class RdDTMRDialog extends Dialog {
this.actor.notifyRefreshTMR();
if (deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/...
await this.manageRencontre(tmr, () => this.postRencontre(tmr));
await this.manageRencontre(tmr);
}
else {
await this.postRencontre(tmr);
@ -999,13 +987,13 @@ export class RdDTMRDialog extends Dialog {
async postRencontre(tmr) {
if (!(this.viewOnly || this.currentRencontre)) {
// TODO: vérifier que la méthode s'arrête en cas de non-maîtrise
await this.manageCaseHumide(tmr);
await this.conquerirCiteFermee(tmr);
await this.purifierPeriple(tmr);
await this.conquerirTMR(tmr);
await this.validerVisite(tmr);
await this.declencheSortEnReserve(tmr.coord);
await this.actor.checkSoufflePeage(tmr);
if (!this.descenteTMR) await this.manageCaseHumide(tmr);
if (!this.descenteTMR) await this.conquerirCiteFermee(tmr);
if (!this.descenteTMR) await this.purifierPeriple(tmr);
if (!this.descenteTMR) await this.conquerirTMR(tmr);
if (!this.descenteTMR) await this.validerVisite(tmr);
if (!this.descenteTMR) await this.declencheSortEnReserve(tmr.coord);
if (!this.descenteTMR) await this.actor.checkSoufflePeage(tmr);
}
}

View File

@ -2,7 +2,7 @@
export class RdDTMRRencontreDialog extends Dialog {
/* -------------------------------------------- */
constructor(html, tmrApp, rencontre, postRencontre) {
constructor(tmrApp, rencontre, postRencontre) {
const dialogConf = {
title: "Rencontre en TMR!",
content: "Vous rencontrez un " + rencontre.name + " de force " + rencontre.force + "<br>",

View File

@ -1146,9 +1146,16 @@ ul, li {
}
#sidebar #sidebar-tabs i.fa-comments:before, #sidebar #sidebar-tabs i.fa-fist-raised:before, #sidebar #sidebar-tabs i.fa-users:before, #sidebar #sidebar-tabs i.fa-map:before, #sidebar #sidebar-tabs i.fa-suitcase:before, #sidebar #sidebar-tabs i.fa-book-open:before, #sidebar #sidebar-tabs i.fa-th-list:before, #sidebar #sidebar-tabs i.fa-music:before, #sidebar #sidebar-tabs i.fa-atlas:before, #sidebar #sidebar-tabs i.fa-cogs:before {content: "";}
#sidebar #sidebar-tabs i:is(
.fa-comments, .fa-fist-raised, .fa-swords,
.fa-users, .fa-user, .fa-map, .fa-suitcase,
.fa-book-open, .fa-th-list, .fa-music,
.fa-atlas,.fa-cogs
):before {content: "";}
#sidebar #sidebar-tabs i.fa-comments {background: url("img/ui/icon_sidebar_chat.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-fist-raised {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-swords {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-user {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-users {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-map {background: url("img/ui/icon_sidebar_scene.svg") no-repeat;}
#sidebar #sidebar-tabs i.fa-suitcase {background: url("img/ui/icon_sidebar_item.svg") no-repeat;}

View File

@ -464,24 +464,21 @@
</li>
{{/if}}
<li class="item flexrow">
<span class="competence-label flex-shrink">Demi rêve :
{{#if options.isGM}}
<span class="competence-label flex-shrink">Demi rêve :
<span>{{caseTmr-label system.reve.tmrpos.coord}}</span>
</span>
<span>
{{caseTmr-label system.reve.tmrpos.coord}}
</span><span>
<input class="competence-value" type="text" name="system.reve.tmrpos.coord" value="{{system.reve.tmrpos.coord}}" data-dtype="String"/>
</span>
{{else if hautreve.cacheTMR}}
{{caseTmr-type system.reve.tmrpos.coord}}
</span><span>
??
{{else}}
<span class="competence-label flex-shrink">Demi rêve :
{{#unless hautreve.cacheTMR}}
<span>{{caseTmr-label system.reve.tmrpos.coord}}</span>
{{/unless}}
</span>
<span>
{{#if hautreve.cacheTMR}}??{{else}}{{system.reve.tmrpos.coord}}{{/if}}
</span>
{{caseTmr-label system.reve.tmrpos.coord}}
</span><span>
{{system.reve.tmrpos.coord}}
{{/if}}
</span>
</li>
{{/if}}
<li class="item flexrow">

View File

@ -50,10 +50,11 @@
<br>
{{/if}}
{{#if (ne attaqueCategorie 'tir')}}
{{#each esquives as |esq key|}}
{{#each esquives as |esquive key|}}
<a class='chat-card-button' id='esquiver-button' data-attackerId='{{../attackerId}}' data-defenderTokenId='{{../defenderTokenId}}'
data-compid='{{esq._id}}' data-competence='{{esq.name}}'>
{{esq.name}} à {{../diffLibre}} {{#if esq.usage}} (Utilisations : {{esq.usage}}){{/if}}
data-compid='{{esquive._id}}' data-competence='{{esquive.name}}'>
{{log 'esquive' esquive}}
{{esquive.name}} à {{../diffLibre}} {{#if esquive.system.nbUsage}} (Utilisations : {{esquive.system.nbUsage}}){{/if}}
</a>
<br>
{{/each}}

View File

@ -21,6 +21,10 @@
<label for="system.coord">Case TMR</label>
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/>
</div>
<div class="form-group">
<label></label>
<label class="attribute-value" >{{caseTmr-label system.coord}}</label>
</div>
<div class="form-group">
<label for="system.ptreve">Rêve</label>
<input class="attribute-value" type="text" name="system.ptreve" value="{{system.ptreve}}" data-dtype="String"/>