From 1875530b1cf464586465c9bd2f00bc6addaa2598 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sun, 31 Jan 2021 21:37:41 +0100 Subject: [PATCH] Rework arts --- module/actor.js | 211 +++++++++------------------ templates/chat-resultat-chant.html | 2 +- templates/chat-resultat-cuisine.html | 6 +- templates/chat-resultat-danse.html | 2 +- templates/chat-resultat-jeu.html | 2 +- templates/chat-resultat-musique.html | 4 +- 6 files changed, 73 insertions(+), 154 deletions(-) diff --git a/module/actor.js b/module/actor.js index 0d0b4a6c..5ea535e0 100644 --- a/module/actor.js +++ b/module/actor.js @@ -2013,129 +2013,87 @@ export class RdDActor extends Actor { } /* -------------------------------------------- */ - async rollChant( id ) { - let chant = duplicate(this.getChant(id)); - let competence = duplicate(this.getCompetence("chant")); - competence.data.defaut_carac = "ouie"; - let chantData = { - competence: competence, - chant: chant, - diffLibre: -chant.data.niveau, - diffConditions: 0, - use: { libre: false, conditions: true, }, - carac: {} - }; - chantData.carac["ouie"] = duplicate(this.data.data.carac["ouie"]); - - console.log("rollChant !!!", chantData); - - const dialog = await RdDRoll.create(this, chantData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-chant.html' }, { - name: 'jet-chant', - label: 'Chanter ' + chant.name, - height: 600, - callbacks: [ - this.createCallbackExperience(), - { action: r => this._chantResult(r) } - ] - }); - dialog.render(true); - } - /* -------------------------------------------- */ - async _chantResult(chantData) { - if ( chantData.rolled.isSuccess) { - chantData.qualiteFinale = chantData.danse.data.niveau + chantData.rolled.ptQualite; - } else { - chantData.qualiteFinale = chantData.competence.data.niveau + chantData.rolled.ptQualite; - } - console.log("CHAN", chantData) - RdDResolutionTable.displayRollData(chantData, this.name, 'chat-resultat-chant.html'); - } - - /* -------------------------------------------- */ - async rollDanse( id ) { - let danse = duplicate(this.getDanse(id)); - let competence = duplicate(this.getCompetence("danse")); - let danseData = { - competence: competence, - danse: danse, - diffLibre: -danse.data.niveau, + async _rollArt(artData, selectedCarac, competence, oeuvre) { + mergeObject(artData, { + oeuvre: oeuvre, + competence: duplicate(competence), + diffLibre: -oeuvre.data.niveau, diffConditions: 0, use: { libre: false, conditions: true, }, + selectedCarac: duplicate(this.data.data.carac[selectedCarac]), forceCarac: {} - }; - if ( danse.data.agilite) { - competence.data.defaut_carac = "agilite"; - danseData.selectedCarac = duplicate(this.data.data.carac["agilite"]); - danseData.forceCarac["agilite"] = duplicate(this.data.data.carac["agilite"]); - } - if ( danse.data.apparence) { - competence.data.defaut_carac = "apparence"; - danseData.selectedCarac = duplicate(this.data.data.carac["apparence"]); - danseData.forceCarac["apparence"] = duplicate(this.data.data.carac["apparence"]); - } + }); + artData.competence.data.defaut_carac = selectedCarac; + artData.forceCarac[selectedCarac] = duplicate(this.data.data.carac[selectedCarac]); - console.log("rollDanse !!!", danseData); + console.log("rollArtiste !!!", artData); - const dialog = await RdDRoll.create(this, danseData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-danse.html' }, { - name: 'jet-danse', - label: 'Danser ' + danse.name, + const dialog = await RdDRoll.create(this, artData, { html: `systems/foundryvtt-reve-de-dragon/templates/dialog-roll-${artData.art}.html` }, { + name: `jet-${artData.art}`, + label: `${artData.verbe} ${oeuvre.name}`, height: 600, callbacks: [ this.createCallbackExperience(), - { action: r => this._danseResult(r) } + { action: r => this._resultArt(r) } ] }); dialog.render(true); } + /* -------------------------------------------- */ - async _danseResult(danseData) { - if ( danseData.rolled.isSuccess) { - danseData.qualiteFinale = danseData.danse.data.niveau + danseData.rolled.ptQualite; - } else { - danseData.qualiteFinale = danseData.competence.data.niveau + danseData.rolled.ptQualite; - } - console.log("CHAN", danseData) - RdDResolutionTable.displayRollData(danseData, this.name, 'chat-resultat-danse.html'); + async _resultArt(artData) { + const baseQualite = (artData.rolled.isSuccess ? artData.oeuvre.data.niveau : artData.competence.data.niveau); + artData.qualiteFinale = Math.min(baseQualite, artData.oeuvre.data.niveau) + artData.rolled.ptQualite; + + console.log("OEUVRE", artData.art, artData) + RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`); } - /* -------------------------------------------- */ - async rollMusique( id ) { - let musique = duplicate(this.getMusique(id)); - let competence = duplicate(this.getCompetence("musique")); - competence.data.defaut_carac = "ouie"; - let musiqueData = { - competence: competence, - musique: musique, - diffLibre: -musique.data.niveau, - diffConditions: 0, - use: { libre: false, conditions: true, }, - carac: {} - }; - musiqueData.carac["ouie"] = duplicate(this.data.data.carac["ouie"]); - - console.log("rollMusique !!!", musiqueData); + /* -------------------------------------------- */ + async rollDanse(id) { + const oeuvre = duplicate(this.getDanse(id)); + const competence = this.getCompetence("danse"); + const selectedCarac = this._getCaracDanse(oeuvre, competence); + const artData = { art: 'danse', verbe: 'Danser' }; + await this._rollArt(artData, selectedCarac, competence, oeuvre); + } + + _getCaracDanse(oeuvre, competence) { + if (oeuvre.data.agilite) { return "agilite"; } + else if (oeuvre.data.apparence) { return "apparence"; } + return competence.data.defaut_carac; + } + + /* -------------------------------------------- */ + async rollMusique(id) { + const oeuvre = duplicate(this.getMusique(id)); + const competence = this.getCompetence("musique"); + const selectedCarac = "ouie"; + const artData = { art: 'musique', verbe: 'Jouer' }; + await this._rollArt(artData, selectedCarac, competence, oeuvre); + } + + /* -------------------------------------------- */ + async rollRecetteCuisine(id) { + const oeuvre = duplicate(this.getRecetteCuisine(id)); + const competence = this.getCompetence("cuisine"); + const selectedCarac = 'odoratgout'; + const artData = { art: 'cuisine', verbe: 'Cuisiner' }; + await this._rollArt(artData, selectedCarac, competence, oeuvre); + } + + /* -------------------------------------------- */ + async rollJeu(id) { + const oeuvre = duplicate(this.getJeu(id)); + const competence = this.getCompetence("jeu"); + const selectedCarac = competence.data.defaut_carac; + const artData = { + art: 'jeu', verbe: 'Jeu', + use: { libre: true, conditions: true, }, + }; + await this._rollArt(artData, selectedCarac, competence, oeuvre); + } - const dialog = await RdDRoll.create(this, musiqueData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-musique.html' }, { - name: 'jet-musique', - label: 'Jouer ' + musique.name, - height: 600, - callbacks: [ - this.createCallbackExperience(), - { action: r => this._musiqueResult(r) } - ] - }); - dialog.render(true); - } - /* -------------------------------------------- */ - async _musiqueResult(musiqueData) { - if ( musiqueData.rolled.isSuccess) { - musiqueData.qualiteFinale = musiqueData.musique.data.niveau + musiqueData.rolled.ptQualite; - } else { - musiqueData.qualiteFinale = musiqueData.competence.data.niveau + musiqueData.rolled.ptQualite; - } - console.log("MUSIQUE", musiqueData) - RdDResolutionTable.displayRollData(musiqueData, this.name, 'chat-resultat-musique.html'); - } /* -------------------------------------------- */ async rollJeu( id ) { @@ -2169,46 +2127,7 @@ export class RdDActor extends Actor { RdDResolutionTable.displayRollData(jeudData, this.name, 'chat-resultat-jeu.html'); } - /* -------------------------------------------- */ - async rollRecetteCuisine( id ) { - let cuisine = duplicate(this.getRecetteCuisine(id)); - let competence = duplicate(this.getCompetence("cuisine")); - competence.data.defaut_carac = "odoratgout"; - let cuisineData = { - competence: competence, - cuisine: cuisine, - diffLibre: -cuisine.data.niveau, - diffConditions: 0, - use: { libre: true, conditions: true, }, - carac: {} - }; - cuisineData.carac["odoratgout"] = duplicate(this.data.data.carac["odoratgout"]); - console.log("rollRecetteCuisine !!!", cuisineData); - - const dialog = await RdDRoll.create(this, cuisineData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-cuisine.html' }, { - name: 'jet-jeu', - label: 'Cuisiner ' + cuisine.name, - height: 600, - callbacks: [ - this.createCallbackExperience(), - { action: r => this._recetteCuisineResult(r) } - ] - }); - dialog.render(true); - } - /* -------------------------------------------- */ - async _recetteCuisineResult(cuisineData) { - if ( cuisineData.rolled.isSuccess) { - cuisineData.qualiteFinale = cuisineData.cuisine.data.niveau + cuisineData.rolled.ptQualite; - } else { - cuisineData.qualiteFinale = cuisineData.competence.data.niveau + cuisineData.rolled.ptQualite; - } - console.log("Cuisine", cuisineData) - RdDResolutionTable.displayRollData(cuisineData, this.name, 'chat-resultat-cuisine.html'); - } - - /* -------------------------------------------- */ async rollMeditation(id) { let meditation = duplicate(this.getMeditation(id)); diff --git a/templates/chat-resultat-chant.html b/templates/chat-resultat-chant.html index 9565d5ee..13491202 100644 --- a/templates/chat-resultat-chant.html +++ b/templates/chat-resultat-chant.html @@ -1,6 +1,6 @@ chant

- {{alias}} tente de chanter la chanson : {{chant.name}} (niveau {{chant.data.niveau}}) + {{alias}} tente de chanter la chanson : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})

{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
diff --git a/templates/chat-resultat-cuisine.html b/templates/chat-resultat-cuisine.html index 04371f46..9a184f50 100644 --- a/templates/chat-resultat-cuisine.html +++ b/templates/chat-resultat-cuisine.html @@ -1,13 +1,13 @@ cuisine

- {{alias}} tente cuisiner la recette : {{cuisine.name}} (niveau {{cuisine.data.niveau}}) + {{alias}} tente de cuisiner la recette : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})

{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{#if rolled.isSuccess}} - {{alias}} réussit sa cuisine, avec un plat de {{qualiteFinale}} pour {{cuisine.data.sust}} Points de Sustentation. + {{alias}} réussit sa recette, avec un plat de {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation. {{else}} - {{alias}} fait un pière cuisinier(e), et obtient une qualité de {{qualiteFinale}}. Selon la décision du MJ, le plat peut fournir {{cuisine.data.sust}} Points de Sustentation + {{alias}} fait un pière cuisinier(e), et obtient une qualité de {{qualiteFinale}}. Selon la décision du MJ, le plat peut fournir {{oeuvre.data.sust}} Points de Sustentation {{/if}}
diff --git a/templates/chat-resultat-danse.html b/templates/chat-resultat-danse.html index a33ca0c0..21d03a95 100644 --- a/templates/chat-resultat-danse.html +++ b/templates/chat-resultat-danse.html @@ -1,6 +1,6 @@ danse

- {{alias}} tente de danser : {{danse.name}} (niveau {{danse.data.niveau}}) + {{alias}} tente de danser : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})

{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
diff --git a/templates/chat-resultat-jeu.html b/templates/chat-resultat-jeu.html index 994f0c51..d1af862c 100644 --- a/templates/chat-resultat-jeu.html +++ b/templates/chat-resultat-jeu.html @@ -1,6 +1,6 @@ jeu

- {{alias}} joue à : {{jeu.name}} + {{alias}} joue à : {{oeuvre.name}}

{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
diff --git a/templates/chat-resultat-musique.html b/templates/chat-resultat-musique.html index 093e3e72..f39253e0 100644 --- a/templates/chat-resultat-musique.html +++ b/templates/chat-resultat-musique.html @@ -1,12 +1,12 @@ musique

- {{alias}} tente de chanter la chanson : {{musique.name}} (niveau {{musique.data.niveau}}) + {{alias}} tente de jouer le morceau : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})

{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{#if rolled.isSuccess}} - {{alias}} réussi son interprétation avec une qualité de {{qualiteFinale}} . + {{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} . {{else}} {{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}. {{/if}}