Merge branch 'master-fixes' into 'master'
Afficher le jet d'endurance pour les personnages See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!168
This commit is contained in:
commit
c58c9636d2
@ -56,7 +56,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau);
|
||||
item.data.isLevelUp = item.data.xp >= item.data.xpNext; // Flag de niveau à MAJ
|
||||
//this.actor.checkCompetenceXP(item.name); // Petite vérification experience
|
||||
item.data.showCompetence = !data.data.showCompNiveauBase || (Number(item.data.niveau) != Number(RdDUtility.getLevelCategory(item.data.categorie)));
|
||||
item.data.showCompetence = !data.data.showCompNiveauBase || (Number(item.data.niveau) != Number(RdDItemCompetence.getLevelCategory(item.data.categorie)));
|
||||
// Ignorer les compétences 'troncs' à ce stade
|
||||
data.data.competenceXPTotal += RdDItemCompetence.computeCompetenceXPCost(item);
|
||||
return item;
|
||||
|
@ -710,7 +710,7 @@ export class RdDActor extends Actor {
|
||||
return;
|
||||
}
|
||||
let caracpath = "data.carac." + caracName + ".xp";
|
||||
await this.update({ [caracpath]: caracXP });
|
||||
await this.update({ [caracpath]: caracXP ?? 0 });
|
||||
this.checkCaracXP(caracName);
|
||||
}
|
||||
|
||||
@ -736,7 +736,7 @@ export class RdDActor extends Actor {
|
||||
let comp = this.getCompetence(compName);
|
||||
if (comp) {
|
||||
let troncList = RdDItemCompetence.isTronc(compName);
|
||||
let maxNiveau = compValue;
|
||||
let nouveauNiveau = compValue ?? RdDItemCompetence.getLevelCategory(comp.data.categorie);
|
||||
if (troncList) {
|
||||
let message = "Vous avez modifié une compétence 'tronc'. Vérifiez que les compétences suivantes évoluent ensemble jusqu'au niveau 0 : ";
|
||||
for (let troncName of troncList) {
|
||||
@ -747,7 +747,7 @@ export class RdDActor extends Actor {
|
||||
content: message
|
||||
});
|
||||
}
|
||||
const update = { _id: comp._id, 'data.niveau': maxNiveau };
|
||||
const update = { _id: comp._id, 'data.niveau': nouveauNiveau };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
} else {
|
||||
console.log("Competence not found", compName);
|
||||
@ -758,6 +758,7 @@ export class RdDActor extends Actor {
|
||||
async updateCompetenceXP(compName, compValue) {
|
||||
let comp = this.getCompetence(compName);
|
||||
if (comp) {
|
||||
compValue = compValue ?? 0;
|
||||
this.checkCompetenceXP(compName, compValue);
|
||||
const update = { _id: comp._id, 'data.xp': compValue };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
@ -771,6 +772,7 @@ export class RdDActor extends Actor {
|
||||
async updateCompetenceXPSort(compName, compValue) {
|
||||
let comp = this.getCompetence(compName);
|
||||
if (comp) {
|
||||
compValue = compValue ?? 0;
|
||||
const update = { _id: comp._id, 'data.xp_sort': compValue };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
} else {
|
||||
@ -782,6 +784,7 @@ export class RdDActor extends Actor {
|
||||
async updateCompetenceArchetype(compName, compValue) {
|
||||
let comp = this.getCompetence(compName);
|
||||
if (comp) {
|
||||
compValue = compValue ?? 0;
|
||||
const update = { _id: comp._id, 'data.niveau_archetype': compValue };
|
||||
const updated = await this.updateEmbeddedEntity("OwnedItem", update); // Updates one EmbeddedEntity
|
||||
} else {
|
||||
@ -1705,7 +1708,7 @@ export class RdDActor extends Actor {
|
||||
createCallbackAppelAuMoral() { /* Si l'appel au moral est utilisé, on l'affiche dans le chat et on diminue éventuellement le moral */
|
||||
return {
|
||||
condition: r => r.use.appelAuMoral && game.settings.get("core", "rollMode") != 'selfroll',
|
||||
action: r => { this.displayAppelAuMoral ; this._appliquerAppelMoral(r, game.settings.get("core", "rollMode") != 'blindroll') }
|
||||
action: r => this._appliquerAppelMoral(r)
|
||||
};
|
||||
}
|
||||
|
||||
@ -1783,9 +1786,10 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async _appliquerAppelMoral(rollData, display = true) {
|
||||
if (!this.isPersonnage()) return;
|
||||
if (!rollData.rolled.isEchec) return;
|
||||
if (rollData.rolled.isEchec || (rollData.rolled.roll * rollData.ajustements.diviseurSignificative > rollData.score)) {
|
||||
this.moralIncDec(-1); /* L'appel au moral a échoué. Le personnage perd un point de moral */
|
||||
rollData.jetEchouerMoralDiminuer = true;
|
||||
rollData.perteMoralEchec = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -2010,6 +2014,7 @@ export class RdDActor extends Actor {
|
||||
label: 'Jet ' + Grammar.apostrophe('de', rollData.selectedCarac.label),
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
this.createCallbackAppelAuMoral(),
|
||||
{ action: r => this._onRollCaracResult(r) }
|
||||
]
|
||||
}
|
||||
@ -2093,6 +2098,7 @@ export class RdDActor extends Actor {
|
||||
label: 'Jet de Tâche ' + tache.name,
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
this.createCallbackAppelAuMoral(),
|
||||
{ condition: r => r.rolled.isETotal, action: r => this._tacheETotal(r) },
|
||||
{ action: r => this._tacheResult(r) }
|
||||
]
|
||||
@ -2141,6 +2147,7 @@ export class RdDActor extends Actor {
|
||||
height: 600,
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
this.createCallbackAppelAuMoral(),
|
||||
{ action: r => callBackResult(r) }
|
||||
]
|
||||
});
|
||||
@ -2558,8 +2565,10 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
verifierForceMin(item) {
|
||||
if (item.type == 'arme' && item.data.force > this.data.data.carac.force.value) {
|
||||
ChatMessage.create( { content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
|
||||
(${item.data.force} nécessaire pour une Force de ${this.data.data.carac.force.value})` } );
|
||||
ChatMessage.create({
|
||||
content: `<strong>${this.name} s'est équipé(e) de l'arme ${item.name}, mais n'a pas une force suffisante pour l'utiliser normalement </strong>
|
||||
(${item.data.force} nécessaire pour une Force de ${this.data.data.carac.force.value})`
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -2977,6 +2986,7 @@ export class RdDActor extends Actor {
|
||||
label: 'Tache Alchimique',
|
||||
callbacks: [
|
||||
this.createCallbackExperience(),
|
||||
this.createCallbackAppelAuMoral(),
|
||||
{ action: r => this._alchimieResult(r, false) }
|
||||
]
|
||||
}
|
||||
@ -3215,5 +3225,6 @@ export class RdDActor extends Actor {
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
content: `${this.name} a reçu un/une ${item.type}: ${item.name}, qui ${manualMessage ? "n'est pas" : "est"} géré automatiquement. ${manualMessage ?? ''}`
|
||||
});
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,18 @@ const competenceTroncs = [["Esquive", "Dague", "Corps à corps"],
|
||||
const competence_xp_par_niveau = [5, 5, 5, 10, 10, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 30, 30, 40, 40, 60, 60, 100, 100, 100, 100, 100, 100, 100, 100, 100];
|
||||
const competence_niveau_max = competence_xp_par_niveau.length - 10;
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const categorieCompetences = {
|
||||
"generale": { level: "-4", label: "Générales" },
|
||||
"particuliere": { level: "-8", label: "Particulières" },
|
||||
"specialisee": { level: "-11", label: "Spécialisées" },
|
||||
"connaissance": { level: "-11", label: "Connaissances" },
|
||||
"draconic": { level: "-11", label: "Draconics" },
|
||||
"melee": { level: "-6", label: "Mêlée" },
|
||||
"tir": { level: "-8", label: "Tir" },
|
||||
"lancer": { level: "-8", label: "Lancer" }
|
||||
}
|
||||
|
||||
function _buildCumulXP() {
|
||||
let cumulXP = { "-11": 0 };
|
||||
let cumul = 0;
|
||||
@ -20,6 +32,16 @@ const competence_xp_cumul = _buildCumulXP();
|
||||
|
||||
export class RdDItemCompetence extends Item {
|
||||
|
||||
static getCategorieCompetences() {
|
||||
return categorieCompetences;
|
||||
}
|
||||
static getLevelCategory(category) {
|
||||
return categorieCompetences[category].level;
|
||||
}
|
||||
static getLabelCategory(category) {
|
||||
return categorieCompetences[category].label;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static isCompetenceArme(competence) {
|
||||
switch (competence.data.categorie) {
|
||||
|
@ -48,7 +48,7 @@ export class RdDItemSheet extends ItemSheet {
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
let data = super.getData();
|
||||
data.categorieCompetences = RdDUtility.getCategorieCompetences();
|
||||
data.categorieCompetences = RdDItemCompetence.getCategorieCompetences();
|
||||
if ( data.item.type == 'tache' || data.item.type == 'livre' || data.item.type == 'meditation' || data.item.type == 'oeuvre') {
|
||||
data.caracList = duplicate(game.system.model.Actor.personnage.carac);
|
||||
data.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' );
|
||||
@ -111,7 +111,7 @@ export class RdDItemSheet extends ItemSheet {
|
||||
async _onClickSelectCategorie(event) {
|
||||
event.preventDefault();
|
||||
|
||||
let level = RdDUtility.getLevelCategory(event.currentTarget.value);
|
||||
let level = RdDItemCompetence.getLevelCategory(event.currentTarget.value);
|
||||
this.object.data.data.base = level;
|
||||
$("#base").val( level );
|
||||
}
|
||||
|
@ -700,6 +700,7 @@ export class RdDCombat {
|
||||
label: 'Attaque: ' + (arme?.name ?? competence.name),
|
||||
callbacks: [
|
||||
this.attacker.createCallbackExperience(),
|
||||
this.attacker.createCallbackAppelAuMoral(),
|
||||
{ action: r => this.removeChatMessageActionsPasseArme(r.passeArme) },
|
||||
{ condition: r => arme && !RdDCombat.isParticuliere(r), action: r => this.attacker.incDecItemUse(arme._id) },
|
||||
{ condition: r => (RdDCombat.isReussite(r) && !RdDCombat.isParticuliere(r)), action: r => this._onAttaqueNormale(r) },
|
||||
@ -936,6 +937,7 @@ export class RdDCombat {
|
||||
label: 'Parade: ' + (arme ? arme.name : rollData.competence.name),
|
||||
callbacks: [
|
||||
this.defender.createCallbackExperience(),
|
||||
this.defender.createCallbackAppelAuMoral(),
|
||||
{ action: r => this.removeChatMessageActionsPasseArme(r.passeArme) },
|
||||
{ condition: r => !RdDCombat.isParticuliere(r), action: r => this.defender.incDecItemUse(armeParadeId) },
|
||||
{ condition: RdDCombat.isReussite, action: r => this._onParadeNormale(r) },
|
||||
@ -1039,6 +1041,7 @@ export class RdDCombat {
|
||||
label: 'Esquiver',
|
||||
callbacks: [
|
||||
this.defender.createCallbackExperience(),
|
||||
this.defender.createCallbackAppelAuMoral(),
|
||||
{ condition: r => !RdDCombat.isParticuliere(r), action: r => this.defender.incDecItemUse(esquive._id) },
|
||||
{ action: r => this.removeChatMessageActionsPasseArme(r.passeArme) },
|
||||
{ condition: RdDCombat.isReussite, action: r => this._onEsquiveNormale(r) },
|
||||
|
@ -54,7 +54,7 @@ export class RdDRoll extends Dialog {
|
||||
useMalusSurenc: false,
|
||||
appelAuMoralPossible : false, /* Est-ce que l'appel au moral est possible ? Variable utisé pour l'affichage ou non de la ligne concernant le moral */
|
||||
appelAuMoralDemander :false, /* Est-ce que le joueur demande d'utiliser le moral ? Utile si le joueur change plusieurs fois de carac associée. */
|
||||
jetEchouerMoralDiminuer : false, /* Pour l'affichage dans le chat */
|
||||
perteMoralEchec : false, /* Pour l'affichage dans le chat */
|
||||
use: { libre: true, conditions: true, surenc: false, encTotal: false, appelAuMoral : false /* Le jet se fait ou non en utilisant l'appel au moral */},
|
||||
isMalusEncombrementTotal: RdDItemCompetence.isMalusEncombrementTotal(rollData.competence),
|
||||
useMalusEncTotal: false,
|
||||
|
@ -1,27 +1,10 @@
|
||||
/* Common useful functions shared between objects */
|
||||
|
||||
import { RdDRollTables } from "./rdd-rolltables.js";
|
||||
import { ChatUtility } from "./chat-utility.js";
|
||||
import { RdDCombat, RdDCombatManager } from "./rdd-combat.js";
|
||||
import { RdDRollResolutionTable } from "./rdd-roll-resolution-table.js";
|
||||
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
|
||||
import { RdDItemArme } from "./item-arme.js";
|
||||
import { RdDItemCompetence } from "./item-competence.js";
|
||||
import { RdDCombat } from "./rdd-combat.js";
|
||||
import { Misc } from "./misc.js";
|
||||
import { Grammar } from "./grammar.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const categorieCompetences = {
|
||||
"generale": { level: "-4", label: "Générales" },
|
||||
"particuliere": { level: "-8", label: "Particulières" },
|
||||
"specialisee": { level: "-11", label: "Spécialisées" },
|
||||
"connaissance": { level: "-11", label: "Connaissances" },
|
||||
"draconic": { level: "-11", label: "Draconics" },
|
||||
"melee": { level: "-6", label: "Mêlée" },
|
||||
"tir": { level: "-8", label: "Tir" },
|
||||
"lancer": { level: "-8", label: "Lancer" }
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const limitesArchetypes = [
|
||||
{ "niveau": 0, "nombreMax": 100, "nombre": 0 },
|
||||
@ -403,15 +386,6 @@ export class RdDUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getCategorieCompetences() {
|
||||
return categorieCompetences;
|
||||
}
|
||||
static getLevelCategory(category) {
|
||||
return categorieCompetences[category].level;
|
||||
}
|
||||
static getLabelCategory(category) {
|
||||
return categorieCompetences[category].label;
|
||||
}
|
||||
static getCaracArray() {
|
||||
return carac_array;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "foundryvtt-reve-de-dragon",
|
||||
"title": "Rêve de Dragon",
|
||||
"description": "Rêve de Dragon RPG for FoundryVTT",
|
||||
"version": "1.3.32",
|
||||
"version": "1.3.33",
|
||||
"manifestPlusVersion": "1.0.0",
|
||||
"minimumCoreVersion": "0.7.5",
|
||||
"compatibleCoreVersion": "0.7.9",
|
||||
|
@ -1,4 +1,8 @@
|
||||
{{#if use.appelAuMoral}}<div>
|
||||
{{alias}} fait appel {{#if (gt moral 0)}}au moral{{else}}à l'énergie du déspoir{{/if}} {{#if jetEchouerMoralDiminuer}}et échoue, diminuant son moral.{{else}} et réussit.{{/if}}
|
||||
{{^jetEchouerMoralDiminuer}} Son moral reste inchangé à {{moral}}.{{/jetEchouerMoralDiminuer}}
|
||||
<div>{{/if}}
|
||||
{{#if use.appelAuMoral}}
|
||||
<span>
|
||||
Vous avez fait appel {{#if (gt moral 0)}}au moral{{else}}à l'énergie du déspoir{{/if}}
|
||||
{{#if perteMoralEchec}}et échoué, votre moral baisse à {{moral}}.
|
||||
{{else}}et réussi, votre moral reste de {{moral}}.
|
||||
{{/if}}
|
||||
<span>
|
||||
{{/if}}
|
||||
|
@ -10,4 +10,5 @@
|
||||
{{else}}
|
||||
{{alias}} a raté son opération alchimique ! Sa recette est un echec.
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
|
@ -28,14 +28,13 @@
|
||||
{{~/if}}.
|
||||
{{#if show.isRecul}}Si votre adversaire n'esquive pas, il devra résister à l'impact ou reculer sous le choc!{{/if}}
|
||||
</span>
|
||||
</div>
|
||||
{{#if (eq particuliere 'rapidite')}}
|
||||
<div>
|
||||
<span>
|
||||
<br>Votre attaque rapide vous permet une deuxième attaque, ou défense supplémentaire!
|
||||
</span>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
Votre attaque a échoué!
|
||||
<span>Votre attaque a échoué!</span>
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
@ -10,5 +10,6 @@
|
||||
{{else}}
|
||||
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -10,5 +10,6 @@
|
||||
{{else}}
|
||||
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -4,6 +4,7 @@
|
||||
De plus, {{alias}} a perdu {{endurance}} points d'endurance
|
||||
{{#if (ne vie 0)}}et <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
|
||||
{{/if}}
|
||||
{{#if (gt endurance 1)}}Jet d'endurance : {{jetEndurance}} / {{resteEndurance}} {{/if}}
|
||||
</span>
|
||||
{{else}}
|
||||
<h4>{{alias}} encaisse à
|
||||
@ -36,8 +37,8 @@
|
||||
{{/if}}
|
||||
{{#if (ne dmg.mortalite 'cauchemar')}}
|
||||
{{#if (gt endurance 1)}}et
|
||||
{{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" alt="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}
|
||||
({{jetEndurance}} / {{resteEndurance}})!
|
||||
{{#if sonne}}est <strong>sonné</strong><img class="chat-icon" src="icons/svg/stoned.svg" alt="charge" height="16" width="16" /> jusqu'à la fin du prochain round{{else}}n'est pas sonné{{/if}}!
|
||||
{{#if hasPlayerOwner}}Jet d'endurance : Jet d'endurance : {{jetEndurance}} / {{resteEndurance}}{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
@ -13,6 +13,7 @@
|
||||
{{else}}
|
||||
<span>Votre esquive a échoué!</span>
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
|
||||
{{#if attackerRoll.tactique}}
|
||||
|
@ -12,6 +12,7 @@
|
||||
<hr>
|
||||
<div>
|
||||
<span>{{#if rolled.ptTache}}{{rolled.ptTache}} points de tâche{{/if}}{{#if rolled.ptQualite}}{{#if rolled.ptTache}},{{/if}} ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}</span>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{~#if show.explications}}
|
||||
<div>
|
||||
|
@ -10,5 +10,6 @@
|
||||
{{else}}
|
||||
{{alias}} a perdu ...
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -10,5 +10,6 @@
|
||||
{{else}}
|
||||
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -11,5 +11,6 @@
|
||||
{{else}}
|
||||
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -12,6 +12,7 @@
|
||||
La parade a échoué!
|
||||
{{/if}}
|
||||
</span>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
|
||||
{{#if (eq show.recul 'encaisse')}}<div>{{alias}} ne recule pas malgré la violence du coup.</div>
|
||||
|
@ -4,7 +4,7 @@
|
||||
</h4>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||
<hr>
|
||||
|
||||
<span>
|
||||
{{#if rolled.isSuccess}}
|
||||
{{alias}} réussit sa recette, avec un plat de qualité {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation.
|
||||
{{else}}
|
||||
@ -16,4 +16,6 @@
|
||||
<br>Au vu de l'exotisme du plat, les convives devront réussir un jet de Volonté / Cuisine à {{exotismeFinal}}.
|
||||
En cas d'échec, ils peuvent se forcer pour faire plaisir au Maître Queux, mais devront faire un jet de moral Malheureux.
|
||||
{{/if}}
|
||||
</span>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}
|
||||
|
@ -10,4 +10,5 @@
|
||||
votre avancement est de <span class="rdd-roll-{{#if (gt tache.data.points_de_tache_courant 0)}}norm{{else}}etotal{{/if}}">{{tache.data.points_de_tache_courant}} sur {{tache.data.points_de_tache}}</span> point{{~#if (gt tache.data.points_de_tache_courant 1)}}s{{/if}} de tâche.
|
||||
{{#if tache.data.fatigue}}<br><span>Vous vous êtes fatigué de {{tache.data.fatigue}} case{{~#if (gt tache.data.fatigue 1)}}s{{/if}}.</span>{{/if}}
|
||||
{{#if rolled.isETotal}}<br><span>Votre échec total augmente de 1 la difficulté de la tâche!</span>{{/if~}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user