Merge branch 'v1.4-adapt080' into 'v1.4'

Nombreux fixes

See merge request LeRatierBretonnien/foundryvtt-reve-de-dragon!165
This commit is contained in:
Leratier Bretonnien 2021-03-07 16:23:25 +00:00
commit ebf4e08766
73 changed files with 571 additions and 638 deletions

View File

@ -31,18 +31,16 @@ export class RdDActorCreatureSheet extends RdDActorSheet {
let sheetData = super.getData();
console.log("Creature : ", sheetData);
sheetData.itemsByType = Misc.classify(sheetData.items, item => item.type);
sheetData.itemsByType = Misc.classify(sheetData.items);
sheetData.calc = {
caracTotal: RdDCarac.computeTotal(sheetData.data.data.carac),
blessures: {
resume: sheetData.actor.computeResumeBlessure(sheetData.data.data.blessures)
}
resumeBlessures: sheetData.actor.computeResumeBlessure(sheetData.data.data.blessures),
}
// Compute current carac sum
sheetData.data.carac.taille.isTaille = true; // To avoid button link;
sheetData.data.data.carac.taille.isTaille = true; // To avoid button link;
sheetData.data.competencecreature = sheetData.itemsByType["competencecreature"];
sheetData.data.data.competencecreature = sheetData.itemsByType["competencecreature"];
this.actor.computeEncombrementTotalEtMalusArmure();
RdDUtility.filterItemsPerTypeForSheet(sheetData);

View File

@ -46,14 +46,14 @@ export class RdDActorEntiteSheet extends ActorSheet {
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
const item = this.actor.getOwnedItem(li.data("itemId"));
const item = this.actor.items.get(li.data("itemId"));
item.sheet.render(true);
});
// Delete Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
this.actor.deleteOwnedItem(li.data("itemId"));
this.actor.deleteEmbeddedDocuments('Item', [li.data("itemId")]);
li.slideUp(200, () => this.render(false));
});
@ -83,16 +83,16 @@ export class RdDActorEntiteSheet extends ActorSheet {
this.actor.rollCompetence( compName );
});
html.find('#endurance-plus').click((event) => {
html.find('.endurance-plus').click((event) => {
this.actor.santeIncDec("endurance", 1);
this.render(true);
});
html.find('#endurance-moins').click((event) => {
html.find('.endurance-moins').click((event) => {
this.actor.santeIncDec("endurance", -1);
this.render(true);
});
html.find('#encaisser-direct').click(ev => {
html.find('.encaisser-direct').click(ev => {
this.actor.encaisser();
});

View File

@ -37,7 +37,7 @@ export class RdDActorSheet extends ActorSheet {
let sheetData = await super.getData();
sheetData.options = this.options;
sheetData.itemsByType = Misc.classify(sheetData.items, item => item.type);
sheetData.itemsByType = Misc.classify(sheetData.items);
sheetData.options.isGM = game.user.isGM;
const carac = sheetData.data.data.carac;
@ -56,7 +56,7 @@ export class RdDActorSheet extends ActorSheet {
sheetData.calc = {
comptageArchetype: RdDItemCompetence.computeResumeArchetype(competences),
competenceXPTotal: RdDItemCompetence.computeTotalXP(competences),
caracTotal: RdDCarac.computeTotal(carac),
caracTotal: RdDCarac.computeTotal(carac, sheetData.data.data.beaute),
// Mise à jour de l'encombrement total et du prix de l'équipement
encTotal: await sheetData.actor.computeEncombrementTotalEtMalusArmure(),
prixTotalEquipement: await sheetData.actor.computePrixTotalEquipement(),
@ -73,7 +73,7 @@ export class RdDActorSheet extends ActorSheet {
RdDItemCompetence.setLevelUp(competences);
RdDCarac.setLevelUp(carac);
sheetData.armes = sheetData.itemsByType.arme;
sheetData.armes = duplicate(sheetData.itemsByType.arme);
RdDItemArme.computeNiveauArmes(sheetData.armes, competences);
RdDItemArme.ajoutCorpsACorps(sheetData.armes, competences, carac);
sheetData.esquive = RdDItemCompetence.getEsquive(competences);
@ -124,21 +124,21 @@ export class RdDActorSheet extends ActorSheet {
/* -------------------------------------------- */
async createEmptyTache() {
await this.actor.createOwnedItem({ name: 'Nouvelle tache', type: 'tache' }, { renderSheet: true });
await this.actor.createEmbeddedDocuments('Item', [{ name: 'Nouvelle tache', type: 'tache' }], { renderSheet: true });
}
/* -------------------------------------------- */
async creerObjet() {
let itemType = $("#creer-equipement").val();
await this.actor.createOwnedItem({ name: 'Nouveau ' + itemType, type: itemType }, { renderSheet: true });
await this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true });
}
/* -------------------------------------------- */
async selectObjetType() {
let itemType = ["objet", "arme", "armure", "conteneur", "herbe", "ingredient", "livre", "potion", "munition", "monnaie"];
let options = '<span class="competence-label">Selectionnez le type d\'équipement</span><select id="creer-equipement">';
let options = `<span class="competence-label">Selectionnez le type d'équipement</span><select id="creer-equipement">`;
for (let typeName of itemType) {
options += '<option value="' + typeName + '">' + typeName + '</option>'
options += `<option value="${typeName}"> ${typeName}</option>`
}
options += '</select>';
let d = new Dialog({
@ -158,11 +158,12 @@ export class RdDActorSheet extends ActorSheet {
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
super.activateListeners(html);
HtmlUtility._showControlWhen($(".gm-only"), game.user.isGM);
html.find('#show-hide-competences').click((event) => {
html.find('.show-hide-competences').click((event) => {
this.options.showCompNiveauBase = !this.options.showCompNiveauBase;
this.render(true);
});
@ -192,7 +193,7 @@ export class RdDActorSheet extends ActorSheet {
RdDUtility.confirmerSuppressionSubacteur(this, li);
});
html.find('#encaisser-direct').click(ev => {
html.find('.encaisser-direct').click(ev => {
this.actor.encaisser();
});
@ -248,15 +249,15 @@ export class RdDActorSheet extends ActorSheet {
this.actor.rollCarac(caracName.toLowerCase());
});
html.find('#chance-actuelle').click((event) => {
html.find('.chance-actuelle').click((event) => {
this.actor.rollCarac('chance-actuelle');
});
html.find('#chance-appel').click((event) => {
html.find('.chance-appel').click((event) => {
this.actor.rollAppelChance();
});
html.find('#jet-astrologie').click((event) => {
html.find('.jet-astrologie').click((event) => {
this.actor.astrologieNombresAstraux();
});
@ -337,45 +338,45 @@ export class RdDActorSheet extends ActorSheet {
}
});
// Display TMR, visuualisation
html.find('#visu-tmr').click((event) => {
html.find('.visu-tmr').click((event) => {
this.actor.displayTMR("visu");
});
// Display TMR, normal
html.find('#monte-tmr').click((event) => {
html.find('.monte-tmr').click((event) => {
this.actor.displayTMR("normal");
});
// Display TMR, fast
html.find('#monte-tmr-rapide').click((event) => {
html.find('.monte-tmr-rapide').click((event) => {
this.actor.displayTMR("rapide");
});
html.find('#dormir-une-heure').click((event) => {
html.find('.dormir-une-heure').click((event) => {
this.actor.dormir(1);
});
html.find('#dormir-chateau-dormant').click((event) => {
html.find('.dormir-chateau-dormant').click((event) => {
this.actor.dormirChateauDormant();
});
html.find('#enlever-tous-effets').click((event) => {
html.find('.enlever-tous-effets').click((event) => {
this.actor.enleverTousLesEffets();
});
// Display info about queue
html.find('.queuesouffle-label a').click((event) => {
let myID = event.currentTarget.attributes['data-item-id'].value;
const item = this.actor.getOwnedItem(myID);
const item = this.actor.items.get(myID);
item.sheet.render(true);
});
// Info sort
html.find('.sort-label a').click((event) => {
let myID = event.currentTarget.attributes['data-id'].value;
const item = this.actor.getOwnedItem(myID);
const item = this.actor.items.get(myID);
item.sheet.render(true);
});
// Info sort
html.find('.case-label a').click((event) => {
let myID = event.currentTarget.attributes['data-id'].value;
const item = this.actor.getOwnedItem(myID);
const item = this.actor.items.get(myID);
item.sheet.render(true);
});
@ -390,12 +391,10 @@ export class RdDActorSheet extends ActorSheet {
// On carac change
html.find('.carac-value').change((event) => {
let caracName = event.currentTarget.name.replace(".value", "").replace("data.carac.", "");
//console.log("Value changed :", event, caracName);
this.actor.updateCarac(caracName, parseInt(event.target.value));
});
html.find('.carac-xp').change((event) => {
let caracName = event.currentTarget.name.replace(".xp", "").replace("data.carac.", "");
//console.log("Value changed :", event, caracName);
this.actor.updateCaracXP(caracName, parseInt(event.target.value));
});
// On competence change
@ -426,64 +425,61 @@ export class RdDActorSheet extends ActorSheet {
this.options.editCaracComp = !this.options.editCaracComp;
this.render(true);
});
html.find('#show-hide-archetype').click((event) => {
html.find('.show-hide-archetype').click((event) => {
this.options.montrerArchetype = !this.options.montrerArchetype;
this.render(true);
});
// On pts de reve change
html.find('.pointsreve-value').change((event) => {
let reveValue = event.currentTarget.value;
let reve = duplicate(this.actor.data.data.reve.reve);
reve.value = reveValue;
this.actor.update({ "data.reve.reve": reve });
this.actor.update({ "data.reve.reve.value": parseInt(event.currentTarget.value) });
});
// On seuil de reve change
html.find('.seuil-reve-value').change((event) => {
console.log("seuil-reve-value", event.currentTarget)
this.actor.setPointsDeSeuil(event.currentTarget.value);
this.actor.setPointsDeSeuil(parseInt(event.currentTarget.value));
});
html.find('#attribut-protection-edit').change((event) => {
this.actor.updateProtectionValue(event.currentTarget.attributes.name.value, parseInt(event.target.value));
html.find('.attribut-protection-edit').change((event) => {
this.actor.updateAttribut(event.currentTarget.attributes.name.value, parseInt(event.target.value));
});
// On stress change
html.find('.compteur-edit').change((event) => {
let fieldName = event.currentTarget.attributes.name.value;
this.actor.updateCompteurValue(fieldName, parseInt(event.target.value));
this.actor.updateCompteur(fieldName, parseInt(event.target.value));
});
html.find('#ethylisme').change((event) => {
html.find('.ethylisme').change((event) => {
this.actor.setEthylisme(parseInt(event.target.value));
});
html.find('#stress-test').click((event) => {
html.find('.stress-test').click((event) => {
this.actor.transformerStress();
this.render(true);
});
html.find('#moral-malheureux').click((event) => {
html.find('.moral-malheureux').click((event) => {
this.actor.jetDeMoral('malheureuse');
this.render(true);
});
html.find('#moral-neutre').click((event) => {
html.find('.moral-neutre').click((event) => {
this.actor.jetDeMoral('neutre');
this.render(true);
});
html.find('#moral-heureux').click((event) => {
html.find('.moral-heureux').click((event) => {
this.actor.jetDeMoral('heureuse');
this.render(true);
});
html.find('#ethylisme-test').click((event) => {
html.find('.ethylisme-test').click((event) => {
this.actor.ethylismeTest();
this.render(true);
});
html.find('#jet-vie').click((event) => {
html.find('.jet-vie').click((event) => {
this.actor.jetVie();
this.render(true);
});
html.find('#jet-endurance').click((event) => {
html.find('.jet-endurance').click((event) => {
this.actor.jetEndurance();
this.render(true);
});
@ -499,19 +495,19 @@ export class RdDActorSheet extends ActorSheet {
this.render(true);
});
html.find('#vie-plus').click((event) => {
html.find('.vie-plus').click((event) => {
this.actor.santeIncDec("vie", 1);
this.render(true);
});
html.find('#vie-moins').click((event) => {
html.find('.vie-moins').click((event) => {
this.actor.santeIncDec("vie", -1);
this.render(true);
});
html.find('#endurance-plus').click((event) => {
html.find('.endurance-plus').click((event) => {
this.actor.santeIncDec("endurance", 1);
this.render(true);
});
html.find('#endurance-moins').click((event) => {
html.find('.endurance-moins').click((event) => {
this.actor.santeIncDec("endurance", -1);
this.render(true);
});
@ -519,25 +515,24 @@ export class RdDActorSheet extends ActorSheet {
this.actor.setSonne(event.currentTarget.checked);
this.render(true);
});
html.find('#ptreve-actuel-plus').click((event) => {
html.find('.ptreve-actuel-plus').click((event) => {
this.actor.reveActuelIncDec(1);
this.render(true);
});
html.find('#ptreve-actuel-moins').click((event) => {
html.find('.ptreve-actuel-moins').click((event) => {
this.actor.reveActuelIncDec(-1);
this.render(true);
});
html.find('#fatigue-plus').click((event) => {
html.find('.fatigue-plus').click((event) => {
this.actor.santeIncDec("fatigue", 1);
this.render(true);
});
html.find('#fatigue-moins').click((event) => {
html.find('.fatigue-moins').click((event) => {
this.actor.santeIncDec("fatigue", -1);
this.render(true);
});
}
/* -------------------------------------------- */
/** @override */
setPosition(options = {}) {

View File

@ -67,7 +67,7 @@ export class RdDActorVehiculeSheet extends ActorSheet {
// Update Inventory Item
html.find('.item-edit').click(ev => {
const li = $(ev.currentTarget).parents(".item");
const item = this.actor.getOwnedItem(li.data("itemId"));
const item = this.actor.items.get(li.data("itemId"));
item.sheet.render(true);
});
// Delete Inventory Item

File diff suppressed because it is too large Load Diff

View File

@ -18,15 +18,15 @@ const nomCategorieParade = {
export class RdDItemArme extends Item {
static isArme(item) {
return (item.type == 'competencecreature' && item.data.iscombat) || item.type == 'arme';
return (item.data.type == 'competencecreature' && item.data.iscombat) || item.data.type == 'arme';
}
/* -------------------------------------------- */
static getArmeData(item) {
switch (item ? item.data.type : '') {
case 'arme': return item.data;
case 'arme': return item.data.data;
case 'competencecreature':
return RdDItemCompetenceCreature.toArme(item.data);
return RdDItemCompetenceCreature.toArme(item.data.data);
}
return RdDItemArme.mainsNues();
}
@ -146,7 +146,7 @@ export class RdDItemArme extends Item {
}
static isArmeUtilisable(item) {
return item.type == 'arme' && (item.data.resistance > 0 || item.data.portee_courte>0);
return item.data.type == 'arme' && (item.data.resistance > 0 || item.data.portee_courte>0);
}
static mainsNues(actorData={}) {

View File

@ -17,10 +17,19 @@ function _buildCumulXP() {
return cumulXP;
}
const compendiumCompetences = {
"personnage": "foundryvtt-reve-de-dragon.competences",
"creature": "foundryvtt-reve-de-dragon.competences-creatures",
"entite": "foundryvtt-reve-de-dragon.competences-entites"
};
const competence_xp_cumul = _buildCumulXP();
export class RdDItemCompetence extends Item {
static compendium(actorType){
return compendiumCompetences[actorType] ?? '';
}
/* -------------------------------------------- */
static isCompetenceArme(competence) {
switch (competence.data.categorie) {

View File

@ -17,7 +17,7 @@ export class RdDItemCompetenceCreature extends Item {
/* -------------------------------------------- */
static toArme(item) {
if (RdDItemCompetenceCreature.isCompetenceAttaque(item)) {
let arme = { name: item.name, data: duplicate(item.data) };
let arme = { name: item.name, data: duplicate(item.data.data) };
mergeObject(arme.data,
{
competence: item.name,
@ -35,11 +35,11 @@ export class RdDItemCompetenceCreature extends Item {
/* -------------------------------------------- */
static isCompetenceAttaque(item) {
return item.type == 'competencecreature' && item.data.iscombat;
return item.data.type == 'competencecreature' && item.data.iscombat;
}
/* -------------------------------------------- */
static isCompetenceParade(item) {
return item.type == 'competencecreature' && item.data.isparade;
return item.data.type == 'competencecreature' && item.data.isparade;
}
}

30
module/item-monnaie.js Normal file
View File

@ -0,0 +1,30 @@
const monnaiesParDefaut = [
{ name: "Etain (1 denier)", valeur: 1, enc: 0.01, img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp" },
{ name: "Bronze (10 deniers)", valeur: 10, enc: 0.01, img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_bronze_epees.webp" },
{ name: "Argent (1 sol)", valeur: 100, enc: 0.01, img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_argent_sol.webp" },
{ name: "Or (10 sols)", valeur: 1000, enc: 0.01, img: "systems/foundryvtt-reve-de-dragon/icons/objets/piece_or_sol.webp" }
]
export class Monnaie {
static monnaiesParDefaut() {
return monnaiesParDefaut.map(it => Monnaie.prepareMonnaie(it.name, it.valeur, it.img, it.enc));
}
/* -------------------------------------------- */
static prepareMonnaie(name, valeur_deniers, img = "", enc = 0.01) {
let piece = {
name: name, type: 'monnaie', img: img, _id: randomID(16),
data: {
quantite: 0,
valeur_deniers: valeur_deniers,
encombrement: enc,
description: ""
}
}
return piece;
}
}

View File

@ -13,7 +13,7 @@ export class RdDItemSheet extends ItemSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["foundryvtt-reve-de-dragon", "sheet", "item"],
classes: ["foundryvtt-reve-de-dragon", "sheet", 'Item'],
template: "systems/foundryvtt-reve-de-dragon/templates/item-sheet.html",
width: 550,
height: 550
@ -30,7 +30,7 @@ export class RdDItemSheet extends ItemSheet {
{
class: "post",
icon: "fas fa-comment",
onclick: ev => new RdDItem(this.item.data).postItem()
onclick: ev => new RdDItem(this.item.data.data).postItem()
})
return buttons
}
@ -50,14 +50,14 @@ export class RdDItemSheet extends ItemSheet {
let sheetData = super.getData();
sheetData.categorieCompetences = RdDUtility.getCategorieCompetences();
if ( sheetData.item.type == 'tache' || sheetData.item.type == 'livre' || sheetData.item.type == 'meditation' || sheetData.item.type == 'oeuvre') {
if ( sheetData.item.data.type == 'tache' || sheetData.item.data.type == 'livre' || sheetData.item.data.type == 'meditation' || sheetData.item.data.type == 'oeuvre') {
sheetData.caracList = duplicate(game.system.model.Actor.personnage.carac);
sheetData.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' );
}
if (sheetData.item.type == 'arme') {
if (sheetData.item.data.type == 'arme') {
sheetData.competences = await RdDUtility.loadCompendium( 'foundryvtt-reve-de-dragon.competences', it => RdDItemCompetence.isCompetenceArme(it));
}
if ( sheetData.item.type == 'recettealchimique' ) {
if ( sheetData.item.data.type == 'recettealchimique' ) {
RdDAlchimie.processManipulation(sheetData.item, this.actor && this.actor.id );
}
if ( this.actor ) {
@ -120,7 +120,7 @@ export class RdDItemSheet extends ItemSheet {
/* -------------------------------------------- */
get template()
{
let type = this.item.type;
let type = this.item.data.type;
return `systems/foundryvtt-reve-de-dragon/templates/item-${type}-sheet.html`;
}

View File

@ -53,7 +53,7 @@ export class RdDItemSort extends Item {
*/
static getBonusCaseList( data, newCase = false ) {
// Gestion spéciale case bonus
if ( data.item.type == 'sort') {
if ( data.item.data.type == 'sort') {
return this.buildBonusCaseList(data.data.bonuscase, newCase );
}
return undefined;
@ -106,7 +106,7 @@ export class RdDItemSort extends Item {
// Sauvegarde/update
let bonuscase = StringList.toString();
//console.log("Bonus cae :", bonuscase);
actor.updateEmbeddedEntity("OwnedItem", { _id: sort._id, 'data.bonuscase': bonuscase } );
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'data.bonuscase': bonuscase }]);
}
/* -------------------------------------------- */

View File

@ -6,26 +6,24 @@
export class Misc {
static isFunction(v) {
return v && {}.toString.call(v) === '[object Function]';
}
}
static upperFirst(text) {
return text.charAt(0).toUpperCase() + text.slice(1);
}
static toSignedString(number){
static toSignedString(number) {
const value = parseInt(number)
const isPositiveNumber = value != NaN && value > 0;
return isPositiveNumber ? "+"+number : number
return isPositiveNumber ? "+" + number : number
}
/**
* Converts the value to an integer, or to 0 if undefined/null/not representing integer
* @param {*} value value to convert to an integer using parseInt
*/
static toInt(value)
{
if (value == undefined)
{
static toInt(value) {
if (value == undefined) {
return 0;
}
const parsed = parseInt(value);
@ -41,13 +39,13 @@ export class Misc {
}
}
static classify(items, classifier = it => it.type, transform = it => it) {
static classify(items, classifier = item => item.type, transform = it => it) {
let itemsBy = {};
Misc.classifyInto(itemsBy, items, classifier, transform);
return itemsBy;
}
static classifyInto(itemsBy, items, classifier = it => it.type, transform = it => it) {
static classifyInto(itemsBy, items, classifier = item => item.type, transform = it => it) {
for (const item of items) {
const classification = classifier(item);
let list = itemsBy[classification];
@ -66,5 +64,4 @@ export class Misc {
static distinct(array) {
return [...new Set(array)];
}
}

View File

@ -43,7 +43,7 @@ export class RdDAstrologieJoueur extends Dialog {
/* -------------------------------------------- */
static organizeNombres(actor) {
let itemNombres = actor.data.items.filter( (item) => item.type == 'nombreastral');
let itemNombres = actor.data.items.filter( (item) => item.data.type == 'nombreastral');
let itemFiltered = {};
for ( let item of itemNombres) {
if ( itemFiltered[item.data.jourindex] ) {
@ -91,7 +91,7 @@ export class RdDAstrologieJoueur extends Dialog {
$("#diffConditions").val(0);
});
html.find('#jet-astrologie').click((event) => {
html.find('.jet-astrologie').click((event) => {
this.requestJetAstrologie();
});
}

View File

@ -78,14 +78,14 @@ export class RdDCombatManager extends Combat {
let armeCombat, competence;
if (c.actor.data.type == 'creature' || c.actor.data.type == 'entite') {
for (const competenceItem of c.actor.data.items) {
if (competenceItem.data.iscombat) {
if (competenceitem.data.iscombat) {
competence = duplicate(competenceItem);
}
}
rollFormula = "2+( (" + RdDCombatManager.calculInitiative(competence.data.niveau, competence.data.carac_value) + ")/100)";
} else {
for (const item of c.actor.data.items) {
if (item.type == "arme" && item.data.equipe) {
if (item.data.type == "arme" && item.data.equipe) {
armeCombat = duplicate(item);
}
}
@ -99,7 +99,7 @@ export class RdDCombatManager extends Combat {
const roll = super._getInitiativeRoll(c, rollFormula);
if (roll.total <= 0) roll.total = 0.00;
console.log("Compute init for", rollFormula, roll.total);
await this.updateEmbeddedEntity("Combatant", { _id: c._id, initiative: roll.total });
await this.updateEmbeddedDocuments("Combatant", [{ _id: c._id, initiative: roll.total }]);
// Send a chat message
let rollMode = messageOptions.rollMode || game.settings.get("core", "rollMode");
@ -211,7 +211,7 @@ export class RdDCombatManager extends Combat {
let msg = `<h4>L'initiative de ${combatant.actor.name} a été modifiée !</h4>
<hr>
<div>
Etant donné son ${arme.name}, son initative pour ce premier round est désormais de ${initData.init}.
Etant donné son ${arme.name}, son initiative pour ce premier round est désormais de ${initData.init}.
</div>`
ChatMessage.create({ content: msg });
game.combat.setInitiative(combatant._id, initData.init);
@ -725,7 +725,7 @@ export class RdDCombat {
/* -------------------------------------------- */
async _onAttaqueParticuliere(rollData) {
RdDCombat._storeAttaque(this.attackerId, rollData);
this.attacker.decItemUse( rollData.arme._id ); // Usage décrémenté sur particulière
this.attacker.decItemUse(rollData.arme._id); // Usage décrémenté sur particulière
// Finesse et Rapidité seulement en mêlée et si la difficulté libre est de -1 minimum
const isMeleeDiffNegative = rollData.selectedCarac.label == "Mêlée" && rollData.diffLibre < 0;
@ -733,7 +733,7 @@ export class RdDCombat {
alias: this.attacker.name,
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.attacker.name),
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-demande-attaque-particuliere.html', {
alias: this.attacker.name,
actor: this.attacker,
attackerId: this.attackerId,
defenderTokenId: this.defenderTokenId,
isFinesse: isMeleeDiffNegative,
@ -1109,7 +1109,7 @@ export class RdDCombat {
resistance -= perteResistance;
defenderRoll.show.deteriorationArme = resistance <= 0 ? 'brise' : 'perte';
defenderRoll.show.perteResistance = perteResistance;
this.defender.updateEmbeddedEntity("OwnedItem", { _id: defenderRoll.arme._id, 'data.resistance': resistance });
this.defender.updateEmbeddedDocuments('Item', [{ _id: defenderRoll.arme._id, 'data.resistance': resistance }]);
}
}
} else {
@ -1126,7 +1126,7 @@ export class RdDCombat {
resistance -= dmg;
defenderRoll.show.deteriorationArme = resistance <= 0 ? 'brise' : 'perte';
defenderRoll.show.perteResistance = dmg;
this.defender.updateEmbeddedEntity("OwnedItem", { _id: defenderRoll.arme._id, 'data.resistance': resistance });
this.defender.updateEmbeddedDocuments('Item', [{ _id: defenderRoll.arme._id, 'data.resistance': resistance }]);
}
}
// Si l'arme de parade n'est pas un bouclier, jet de désarmement (p.132)
@ -1248,7 +1248,7 @@ export class RdDCombat {
static async displayActorCombatStatus(combat, actor) {
let data = {
combatId: combat._id,
alias: actor.name,
actor: actor,
etatGeneral: actor.getEtatGeneral(),
isSonne: actor.getSonne(),
blessuresStatus: actor.computeResumeBlessure(),

View File

@ -11,11 +11,11 @@ export class RdDHotbar {
Hooks.on("hotbarDrop", async (bar, data, slot) => {
// Create item macro if rollable item - weapon, spell, prayer, trait, or skill
if (data.type == "Item") {
if (data.type == 'Item') {
if (data.data.type != "arme" && data.data.type != "competence" )
return
let item = data.data
let command = `game.system.rdd.RdDHotbar.rollMacro("${item.name}", "${item.type}");`;
let command = `game.system.rdd.RdDHotbar.rollMacro("${item.name}", "${item.data.type}");`;
let macro = game.macros.entities.find(m => (m.name === item.name) && (m.command === command));
if (!macro) {
macro = await Macro.create({
@ -70,10 +70,10 @@ export class RdDHotbar {
let item = actor ? actor.items.find(i => i.name === itemName && i.type == itemType) : null;
if (!item) return ui.notifications.warn(`Impossible de trouver l'objet de cette macro`);
item = item.data;
item = item.data.data;
// Trigger the item roll
switch (item.type) {
switch (item.data.type) {
case "arme":
return actor.rollArme(item.data.competence, itemName);
case "competence":

View File

@ -39,7 +39,7 @@ export class RdDRoll extends Dialog {
/* -------------------------------------------- */
static _setDefaultOptions(actor, rollData) {
let defaultRollData = {
alias: actor.name,
actor: actor,
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
difficultesLibres: CONFIG.RDD.difficultesLibres,
etat: actor.getEtatGeneral(),

View File

@ -76,7 +76,7 @@ export class RdDTMRDialog extends Dialog {
}
loadRencontres() {
this.rencontresExistantes = duplicate(this.actor.getTMRRencontres()).list;
this.rencontresExistantes = duplicate(this.actor.getTMRRencontres());
}
/* -------------------------------------------- */
@ -304,7 +304,6 @@ export class RdDTMRDialog extends Dialog {
let rencontreData = {
actor: this.actor,
alias: this.actor.name,
reveDepart: this.actor.getReveActuel(),
competence: this.actor.getBestDraconic(),
rencontre: this.currentRencontre,
@ -431,7 +430,6 @@ export class RdDTMRDialog extends Dialog {
// simuler une rencontre
let rencontreData = {
actor: this.actor,
alias: this.actor.name,
reveDepart: this.actor.getReveActuel(),
competence: this.actor.getBestDraconic(),
rencontre: this.currentRencontre,

View File

@ -690,20 +690,6 @@ export class RdDUtility {
});
}
/* -------------------------------------------- */
static createMonnaie(name, valeur_deniers, img = "", enc = 0.01) {
let piece = {
name: name, type: 'monnaie', img: img, _id: randomID(16),
data: {
quantite: 0,
valeur_deniers: valeur_deniers,
encombrement: enc,
description: ""
}
}
return piece;
}
/* -------------------------------------------- */
static afficherDemandePayer(som1, som2) {
som1 = (som1) ? som1.toLowerCase() : "0d";
@ -784,7 +770,7 @@ export class RdDUtility {
label: "Supprimer l'objet",
callback: () => {
console.log("Delete : ", itemId);
actorSheet.actor.deleteOwnedItem(itemId);
actorSheet.actor.deleteEmbeddedDocuments('Item', [itemId]);
li.slideUp(200, () => actorSheet.render(false));
}
},

View File

@ -293,7 +293,7 @@ export class TMRUtility {
tmr.coord = coord;
tmr.genre = TMRType[tmr.type].genre;
}
let tmrByType = Misc.classify(Object.values(TMRMapping));
let tmrByType = Misc.classify(Object.values(TMRMapping), tmr => tmr.type);
for (const [type, list] of Object.entries(tmrByType)) {
TMRType[type].list = list;
}

View File

@ -36,7 +36,7 @@ export class Conquete extends Draconique {
}
async onActorDeleteCaseTmr(actor, casetmr) {
await actor.deleteOwnedItem(casetmr.data.sourceid);
await actor.deleteEmbeddedDocuments('Item', [casetmr.data.sourceid]);
}
}

View File

@ -123,24 +123,20 @@ export class Draconique {
}
async createCaseTmr(actor, label, tmr, sourceId = undefined) {
await actor.createOwnedItem({
await actor.createEmbeddedDocuments('Item', [{
name: label, type: 'casetmr', img: this.img(), _id: randomID(16),
data: { coord: tmr.coord, specific: this.code(), sourceid: sourceId }
});
}]);
}
async deleteCasesTmr(actor, draconique) {
let caseTmrs = actor.data.items.filter(it => this.isCase(it) && it.data.sourceid == draconique._id);
for (let casetmr of caseTmrs) {
await actor.deleteOwnedItem(casetmr._id);
}
await actor.deleteEmbeddedDocuments('Item', caseTmrs.map(it =>it._id));
}
async onVisiteSupprimer(actor, tmr, onRemoveToken) {
let existants = actor.data.items.filter(it => this.isCase(it, tmr.coord));
for (let casetmr of existants) {
await actor.deleteOwnedItem(casetmr._id);
onRemoveToken(tmr, casetmr);
}
await actor.deleteEmbeddedDocuments('Item', [ existants.map(it => it._id)]);
existants.forEach(it => onRemoveToken(tmr, it));
}
}

View File

@ -32,7 +32,7 @@ export class Pelerinage extends Draconique {
}
async onActorDeleteCaseTmr(actor, casetmr) {
await actor.deleteOwnedItem(casetmr.data.sourceid);
await actor.deleteEmbeddedDocuments('Item', [casetmr.data.sourceid]);
}
}

View File

@ -60,6 +60,6 @@ export class PresentCites extends Draconique {
}
async ouvrirLePresent(actor, casetmr) {
await actor.deleteOwnedItem(casetmr._id);
await actor.deleteEmbeddedDocuments('Item', [casetmr._id]);
}
}

View File

@ -23,8 +23,8 @@ export class UrgenceDraconique extends Draconique {
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
content: `En l'absence de sorts en réserve, l'urgence draconique de ${actor.name} se transforme en ${queue.name}`
});
await actor.createOwnedItem(ideeFixe);
await actor.deleteOwnedItem(queue._id);
await actor.createEmbeddedDocuments('Item', [ideeFixe]);
await actor.deleteEmbeddedDocuments('Item', [queue._id]);
return;
}
else {
@ -36,7 +36,7 @@ export class UrgenceDraconique extends Draconique {
}
async onActorDeleteCaseTmr(actor, casetmr) {
await actor.deleteOwnedItem(casetmr.data.sourceid);
await actor.deleteEmbeddedDocuments('Item', [casetmr.data.sourceid]);
}
code() { return 'urgence' }

View File

@ -521,7 +521,7 @@ section.sheet-body:after {
width: 50px;
}
#vie-plus, #vie-moins, #endurance-plus, #endurance-moins, #fatigue-plus, #fatigue-moins, #ptreve-actuel-plus, #ptreve-actuel-moins, .monnaie-plus, .monnaie-moins {
.ajustement-compteur {
display: inline-block;
width: 1.25rem;
background: rgba(30, 25, 20, 1);

View File

@ -10,13 +10,13 @@
</div>
<div class="flexrow flex-group-center flex-actions-bar">
<div>
<span id="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="gm-only remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
</div>
</div>
<div class="flexrow">
<div class="flexrow">
<span>{{calc.resumeBlessures}}</span>
<span>{{calc.blessures.resume}}</span>
</div>
<div class="flexrow">
{{#if calc.surprise}}{{calc.surprise}}! {{/if}}
@ -27,7 +27,7 @@
</span>
{{/each}}
{{#if options.isGM}}
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
<span class="enlever-tous-effets"><a>(enlever tout)</a></span>
{{/if}}
{{else}}
Aucun effet actif
@ -215,14 +215,14 @@
</li>
{{#each data.objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{#if (ne item.data.type 'conteneur')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name">{{item.name}}</span>
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<span class="item-quantite">{{item.data.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.data.encTotal decimals=2}}</span>
<div class="item-controls">
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-equip" title="Equiper">{{#if item.data.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</div>

View File

@ -10,7 +10,7 @@
</div>
<div class="flexrow flex-group-center flex-actions-bar">
<div>
<span id="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="gm-only remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
</div>
</div>

View File

@ -10,13 +10,13 @@
</div>
<div class="flexrow flex-group-center flex-actions-bar">
<div>
<span id="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="gm-only remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
</div>
</div>
<div class="flexrow">
<div class="flexrow">
<span>{{calc.resumeBlessures}}</span>
<span>{{calc.blessures.resume}}</span>
</div>
</div>
</div>
@ -42,13 +42,11 @@
{{#each data.carac as |carac key|}}
<li class="competence flexrow list-item" data-attribute="{{key}}">
{{#if carac.isTaille}}
<span class="carac-label flexrow" name="data.carac.{{key}}.label">{{carac.label}}</span>
<span class="carac-label flexrow">{{carac.label}}</span>
{{else}}
<span class="carac-label flexrow" name="data.carac.{{key}}.label"><a
name={{key}}>{{carac.label}}</a></span>
<span class="carac-label flexrow"><a name={{key}}>{{carac.label}}</a></span>
{{/if}}
<input class="competence-value flexrow" type="text" name="data.carac.{{key}}.value"
value="{{carac.value}}" data-dtype="{{carac.type}}" />
<input class="competence-value flexrow" type="text" value="{{carac.value}}" data-dtype="{{carac.type}}" />
</li>
{{/each}}
<li class="competence flexrow list-item">
@ -197,14 +195,14 @@
</li>
{{#each data.objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{#if (ne item.data.type 'conteneur')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name">{{item.name}}</span>
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<span class="item-quantite">{{item.data.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.data.encTotal decimals=2}}</span>
<div class="item-controls">
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-equip" title="Equiper">{{#if item.data.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</div>

View File

@ -1,14 +1,14 @@
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
{{#if (eq item.type 'conteneur')}}
{{#if (eq item.data.type 'conteneur')}}
<span class="item-name conteneur-name"><a data-item-id="{{item._id}}">+{{item.name}}</a></span>
{{else}}
<span class="item-name">{{item.name}}</span>
{{/if}}
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<span class="item-quantite">{{item.data.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.data.encTotal decimals=2}}</span>
<div class="item-controls">
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>

View File

@ -1,4 +1,3 @@
{{log "handlebar" this}}
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
@ -12,30 +11,30 @@
<ul class="flex-group-center flex-compteurs">
<li>
<label class="ctn-vie">
<a id="jet-vie">Vie</a>
<a id="vie-moins">-</a>
<a class="jet-vie">Vie</a>
<a class="ajustement-compteur vie-moins">-</a>
<input class="resource-content" type="text" name="data.data.sante.vie.value" value="{{data.data.sante.vie.value}}" data-dtype="Number"/>
<span>/ {{data.data.sante.vie.max}}</span>
<a id="vie-plus">+</a>
<a class="ajustement-compteur vie-plus">+</a>
</label>
</li>
<li>
<label class="ctn-endu">
<a id="jet-endurance">Endurance</a>
<a id="endurance-moins">-</a>
<a class="jet-endurance">Endurance</a>
<a class="ajustement-compteur endurance-moins">-</a>
<input class="resource-content" type="text" name="data.data.sante.endurance.value" value="{{data.data.sante.endurance.value}}" data-dtype="Number"/>
<span>/ {{data.data.sante.endurance.max}}</span>
<a id="endurance-plus">+</a>
<a class="ajustement-compteur endurance-plus">+</a>
</label>
</li>
<li>
<label class="ctn-fatigue tooltip">
<span class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</span>
Fatigue
<a id="fatigue-moins">-</a>
<a class="ajustement-compteur fatigue-moins">-</a>
<input class="resource-content" id="fatigue-value" type="text" name="data.data.sante.fatigue.value" value="{{data.data.sante.fatigue.value}}" data-dtype="Number" />
<span>/ {{data.data.sante.fatigue.max}}</span>
<a id="fatigue-plus">+</a>
<a class="ajustement-compteur fatigue-plus">+</a>
</label>
</li>
<li>
@ -47,22 +46,22 @@
<li>
<label class="ctn-reve">
<span class="ptreve-actuel"><a>Rêve</a></span>
<a id="ptreve-actuel-moins">-</a>
<a class="ajustement-compteur ptreve-actuel-moins">-</a>
<input class="resource-content" id="pointsreve-value" type="text" name="data.data.reve.reve.value" value="{{data.data.reve.reve.value}}" data-dtype="Number" />
<span>/ {{data.data.reve.seuil.value}}</span>
<a id="ptreve-actuel-plus">+</a>
<a class="ajustement-compteur ptreve-actuel-plus">+</a>
</label>
</li>
</ul>
<div class="flex-group-center flex-actions-bar">
<div>
<span id="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="encaisser-direct"><a title="Encaisser des dommages"><img class="button-img" src="icons/svg/bones.svg" alt="Encaisser des dommages"/></a></span>
<span class="gm-only remise-a-neuf"><a title="Remise à neuf"><img class="button-img" src="icons/svg/regen.svg" alt="Remise à neuf"/></a></span>
<span id="dormir-une-heure"><a title="Dormir une heure"><img class="button-img" src="icons/svg/sleep.svg" alt="Dormir une heure"/></a></span>
<span id="dormir-chateau-dormant"><a title="Chateau Dormant"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg" alt="Chateau Dormant"/></a></span>
<span id="monte-tmr"><a title="Montée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres M&eacute;dianes !"/></a></span>
<span id="monte-tmr-rapide"><a title="Montée accélérée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres M&eacute;dianes !"/></a></span>
<span id="visu-tmr"><a title="Regarder les Terres M&eacute;dianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres M&eacute;dianes"/></a></span>
<span class="dormir-une-heure"><a title="Dormir une heure"><img class="button-img" src="icons/svg/sleep.svg" alt="Dormir une heure"/></a></span>
<span class="dormir-chateau-dormant"><a title="Chateau Dormant"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg" alt="Chateau Dormant"/></a></span>
<span class="monte-tmr"><a title="Montée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres M&eacute;dianes !"/></a></span>
<span class="monte-tmr-rapide"><a title="Montée accélérée dans les Terres M&eacute;dianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres M&eacute;dianes !"/></a></span>
<span class="visu-tmr"><a title="Regarder les Terres M&eacute;dianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres M&eacute;dianes"/></a></span>
</div>
<div class="flexrow">
<span class="tooltip">Malus de fatigue : {{calc.fatigue.malus}}
@ -78,13 +77,10 @@
{{#if calc.surprise}}{{calc.surprise}}! {{/if}}
{{#if actor.effects}}
{{#each actor.effects as |effect key|}}
{{log "handlebar effect" effect}}
<span id="effect-{{effect.data.flags.core.status.statusId}} ">
<img class="button-effect-img" src="{{effect.data.icon}}" alt="{{effect.data.label}}" width="24" height="24" />
</span>
<span><img class="button-effect-img" src="{{effect.data.icon}}" alt="{{effect.data.label}}"/></span>
{{/each}}
{{#if options.isGM}}
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
{{#if options.isGM}}
<span class="enlever-tous-effets"><a>(enlever tout)</a></span>
{{/if}}
{{else}}
Aucun effet actif
@ -165,7 +161,7 @@
<li class="competence flexrow list-item" data-attribute="{{key}}">
<span class="generic-label flexrow" name="data.attributs.{{key}}.label">{{attr.label}} :
{{#if (eq key 'protection')}}
<input id="attribut-protection-edit" type="text" name="{{key}}" value="{{attr.value}}" data-dtype="number"/><span/>
<input class="attribut-protection-edit" type="text" name="{{key}}" value="{{attr.value}}" data-dtype="number"/><span/>
{{else}}
{{attr.value}}
{{/if}}
@ -175,9 +171,9 @@
</ul>
<ul class="carac-list alterne-list">
<li class="competence flexrow list-item">
<span class="generic-label" id="chance-actuelle"><a>Chance actuelle</a></span>
<input class="compteur-edit" id="chance-edit" type="text" name="chance" value="{{data.data.compteurs.chance.value}}" data-dtype="number"/>
<span><a class="item-control stress-test" id="chance-appel">Utiliser</a></span>
<span class="generic-label chance-actuelle"><a>Chance actuelle</a></span>
<input class="compteur-edit" type="text" name="chance" value="{{data.data.compteurs.chance.value}}" data-dtype="number"/>
<span><a class="item-control chance-appel">Utiliser</a></span>
</li>
{{#each data.data.compteurs as |compteur key|}}
{{#if compteur.isChance}}
@ -185,7 +181,7 @@
<li class="competence flexrow list-item">
<span class="generic-label">{{compteur.label}}</span>
{{#if (eq compteur.label 'Ethylisme')}}
<select name="data.compteurs.ethylisme.value" id="ethylisme" data-dtype="Number">
<select name="data.compteurs.ethylisme.value" class="ethylisme" data-dtype="Number">
{{#select compteur.value}}
{{>"systems/foundryvtt-reve-de-dragon/templates/niveau-ethylisme.html"}}
{{/select}}
@ -195,13 +191,13 @@
{{/if}}
<span>
{{#if compteur.isStress}}
<a class="item-control stress-test" id="stress-test" title="Transformer">Transformer</a>
<a class="item-control stress-test" title="Transformer">Transformer</a>
{{else if (eq compteur.label 'Ethylisme')}}
<a class="item-control ethylisme-test" id="ethylisme-test" title="Jet d'Ethylisme">Jet d'Ethylisme</a>
<a class="item-control ethylisme-test" title="Jet d'Ethylisme">Jet d'Ethylisme</a>
{{else if (eq compteur.label 'Moral')}}
<a id="moral-malheureux" title="Jet de moral situation malheureuse"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-malheureux.svg" alt="Jet de moral situation malheureuse"/></a>
<a id="moral-neutre" title="Jet de moral situation neutre"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-neutre.svg" alt="Jet de moral situation neutre"/></a>
<a id="moral-heureux" title="Jet de moral situation heureuse"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-heureux.svg" alt="Jet de moral situation heureuse"/></a>
<a class="moral-malheureux" title="Jet de moral situation malheureuse"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-malheureux.svg" alt="Jet de moral situation malheureuse"/></a>
<a class="moral-neutre" title="Jet de moral situation neutre"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-neutre.svg" alt="Jet de moral situation neutre"/></a>
<a class="moral-heureux" title="Jet de moral situation heureuse"><img class="small-button-container" src="systems/foundryvtt-reve-de-dragon/icons/moral-heureux.svg" alt="Jet de moral situation heureuse"/></a>
{{else}}
<label></label>
{{/if}}
@ -221,10 +217,10 @@
<span><a class="lock-unlock-sheet"><img class="small-button-container"
src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer"
>{{#if @root.options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
<span><a id="show-hide-competences"><img class="small-button-container"
<span><a class="show-hide-competences"><img class="small-button-container"
src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.showCompNiveauBase}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer tout"
>{{#if @root.options.showCompNiveauBase}}Montrer tout{{else}}Filtrer{{/if}}</a></span>
<span><a id="show-hide-archetype"><img class="small-button-container"
<span><a class="show-hide-archetype"><img class="small-button-container"
src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.montrerArchetype}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer l'archétype"
>{{#if @root.options.montrerArchetype}}Masquer l'archétype{{else}}Voir l'archétype{{/if}}</a></span>
</div>
@ -779,7 +775,7 @@
</span>
</li>
<li class="item flexrow" >
<span class="astrologie-label"><a id="jet-astrologie">Astrologie : Nombres Astraux</a></span>
<span class="astrologie-label"><a class="jet-astrologie">Astrologie : Nombres Astraux</a></span>
</li>
</ul>
</div>
@ -911,7 +907,7 @@
<img class="sheet-competence-img" src="{{piece.img}}" title="{{piece.name}}"/>
<span class="competence-title competence-label">{{piece.name}}</span>
<span class="competence-title competence-label">{{piece.data.quantite}}</span>
<span class="competence-title"><a class="monnaie-plus">+</a><a class="monnaie-moins">-</a></span>
<span class="competence-title"><a class="ajustement-compteur monnaie-plus">+</a><a class="ajustement-compteur monnaie-moins">-</a></span>
<div class="item-controls">
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
@ -941,14 +937,14 @@
</li>
{{#each data.objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{#if (ne item.data.type 'conteneur')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name">{{item.name}}</span>
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<span class="item-quantite">{{item.data.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.data.encTotal decimals=2}}</span>
<span class="item-controls">
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-equip" title="Equiper">{{#if item.data.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</span>

View File

@ -84,14 +84,14 @@
</li>
{{#each data.objets as |item id|}}
{{#unless item.estContenu}}
{{#if (ne item.type 'conteneur')}}
{{#if (ne item.data.type 'conteneur')}}
<li class="item flexrow list-item" data-item-id="{{item._id}}">
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
<span class="item-name">{{item.name}}</span>
<span class="item-quantite">{{item.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
<span class="item-quantite">{{item.data.data.quantite}}</span>
<span class="item-quantite">{{numberFormat item.data.data.encTotal decimals=2}}</span>
<div class="item-controls">
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-equip" title="Equiper">{{#if item.data.data.equipe}}<i class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
</div>

View File

@ -1,4 +1,7 @@
<h4>La caractéristique {{carac}} de {{alias}} peut progresser ! </h4>
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>La caractéristique {{carac}} de {{actor.name}} peut progresser ! </h4>
<div>Son experience dans cette caractéristique est actuellement de {{xp}} </div>
<div>Vous devez ouvrir votre fiche de personnage et appliquer (ou pas) l'augmentation manuellement.</div>

View File

@ -1,5 +1,8 @@
{{log "handlebar" this}}
<h4>{{alias}} peut progresser dans sa compétence {{competence}} ! </h4>
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>{{actor.name}} peut progresser dans sa compétence {{competence}} ! </h4>
<div>Son niveau en {{competence}} peut évoluer à {{niveau}} pour un archétype de {{archetype}} ! </div>
<div>Son experience dans cette compétence est de {{xp}}. </div>
<div>Vous devez ouvrir votre fiche de personnage et appliquer (ou pas) l'augmentation manuellement.</div>

View File

@ -1,10 +1,13 @@
{{log "handlebar" this}}
<h4>C'est au tour de {{alias}} !</h4>
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>C'est au tour de {{actor.name}} !</h4>
<div data-combatid="{{combatId}}" data-combatmessage="actor-turn-summary">{{blessuresStatus}}</div>
<div>Son état général est de : {{etatGeneral}} {{#if isSonne}} et est <strong>sonné</strong>{{/if}}</div>
{{#if isGrave}}
<div>{{alias}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Je de Vie toutes les SC ({{SConst}}) minutes.</div>
<div>{{actor.name}} souffre de Blessure(s) Grave(s) : n'oubliez pas de faire un Je de Vie toutes les SC ({{SConst}}) minutes.</div>
{{/if}}
{{#if isCritique}}
<div>{{alias}} souffre d'une <strong>Blessure Critique</strong> : faites un <a id="chat-jet-vie" data-actorId="{{actorId}}">Jet de Vie.<a></div>
<div>{{actor.name}} souffre d'une <strong>Blessure Critique</strong> : faites un <a id="chat-jet-vie" data-actorId="{{actorId}}">Jet de Vie.<a></div>
{{/if}}

View File

@ -5,19 +5,20 @@
{{#if (eq attacker.data.type 'personnage')}}
{{#unless essais.attaqueChance}}
<a class='chat-card-button' id='appel-chance-attaque' data-attackerId='{{attackerId}}'
data-defenderTokenId='{{defenderTokenId}}'>Faire appel à la chance</a>
data-defenderTokenId='{{defenderTokenId}}'>Faire appel à la chance
</a>
<br>
{{/unless}}
{{#if (gt attacker.data.data.compteurs.destinee.value 0)}}
<a class='chat-card-button' id='appel-destinee-attaque' data-attackerId='{{attackerId}}'
data-defenderTokenId='{{defenderTokenId}}'>Utiliser la destinée</a>
data-defenderTokenId='{{defenderTokenId}}'>
Utiliser la destinée
</a>
<br>
{{/if}}
{{/if}}
<a class='chat-card-button' id='echec-total-attaque' data-attackerId='{{attackerId}}'
data-defenderTokenId='{{defenderTokenId}}'>
Tirer l'échec total !
Tirer la maladresse !
</a>
</div>

View File

@ -1,6 +1,6 @@
{{log "handlebar" this}}
<div data-passearme="{{passeArme}}">
<h4 class="rdd-roll-part">{{alias}} réussit une attaque particulière!</strong></h4>
<h4 class="rdd-roll-part">{{actor.name}} réussit une attaque particulière!</strong></h4>
<br>
<a class="chat-card-button" id="particuliere-attaque" data-mode="force" data-attackerId="{{attackerId}}">
Attaquer en Force

View File

@ -22,14 +22,16 @@
{{#unless essais.defenseChance}}
{{#if (eq defender.data.type 'personnage')}}
<a class='chat-card-button' id='appel-chance-defense' data-attackerId='{{attackerId}}'
data-defenderTokenId='{{defenderTokenId}}'>Faire appel à la chance</a>
data-defenderTokenId='{{defenderTokenId}}'>
Faire appel à la chance
</a>
<br>
{{/if}}
{{#if (eq defender.data.type 'personnage')}}
{{#if (gt defender.data.data.compteurs.destinee.value 0)}}
<a class='chat-card-button' id='appel-destinee-defense' data-attackerId='{{attackerId}}'
data-defenderTokenId='{{defenderTokenId}}'>Utiliser la destinée</a>
data-defenderTokenId='{{defenderTokenId}}'>
Utiliser la destinée
</a>
<br>
{{/if}}

View File

@ -1,4 +1,4 @@
{{#if use.appelAuMoral}}<div>
{{alias}} utilise {{#if (gt moral 0)}}le moral{{else}} l'énergie du déspoir{{/if}} et {{#if moralDiminuer}}échoue, diminuant son moral.{{else}}réussit.{{/if}}
{{actor.name}} utilise {{#if (gt moral 0)}}le moral{{else}} l'énergie du déspoir{{/if}} et {{#if moralDiminuer}}échoue, diminuant son moral.{{else}}réussit.{{/if}}
{{^jetEchouerMoralDiminuer}} Son moral reste inchangé à {{moral}}.{{/jetEchouerMoralDiminuer}}
<div>{{/if}}

View File

@ -1,5 +1,5 @@
{{log "handlebar" this}}
<h4>L'initiative de {{alias}} a été modifiée !</h4>
<h4>L'initiative de {{actor.name}} a été modifiée !</h4>
<hr>
<div>
Etant donné son {{armeName}}, son initative pour ce premier round est désormais de {{initValue}}.

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}" data-rencontre-round="{{nbRounds}}">
{{alias}} rencontre {{#if (eq genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.force}}
{{actor.name}} rencontre {{#if (eq genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.force}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>

View File

@ -1,11 +1,14 @@
{{log "handlebar" this}}
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>
{{alias}} s'accorde: {{entite}}
{{actor.name}} s'accorde: {{entite}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>{{#if rolled.isSuccess}}
{{alias}} s'est accordé à {{entite}}
{{else}}ne s'est pas accordé à {{entite}}, il pourra réessayer à sa prochaine attaque.
{{actor.name}} s'est accordé à {{entite}}
{{else}}ne s'est pas accordé à {{entite}}, et pourra réessayer à sa prochaine attaque.
{{/if}}
</div>

View File

@ -1,14 +1,14 @@
{{log "handlebar" this}}
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_alchimie.png" alt="préparation alchimique" />
<h4>
{{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}}
{{actor.name}} essaye de réaliser sa recette Alchimique : {{recette.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} a réussi son opération alchimique ! Il/Elle peut passer à l'étape suivante de sa recette.
{{actor.name}} a réussi son opération alchimique ! Il/Elle peut passer à l'étape suivante de sa recette.
{{else}}
{{alias}} a raté son opération alchimique ! Sa recette est un echec.
{{actor.name}} a raté son opération alchimique ! Sa recette est un echec.
{{/if}}
</div>

View File

@ -1,7 +1,8 @@
{{log "handlebar" this}}
<h4>
{{alias}} fait appel à la chance
</h4>
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>{{actor.name}} fait appel à la chance</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{~#if rolled.isSuccess}}
<hr>

View File

@ -1,6 +1,6 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>{{alias}} attaque à {{diffLibre}}: {{arme.name}}</h4>
<h4>{{actor.name}} attaque à {{diffLibre}}: {{arme.name}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>

View File

@ -1,15 +1,15 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{alias}} tente de chanter la chanson : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
{{actor.name}} tente de chanter la chanson : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} réussi son interprétation avec une qualité de {{qualiteFinale}} .
{{actor.name}} 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}}.
{{actor.name}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>
{{alias}} {{show.title}}:
{{actor.name}} {{show.title}}:
{{#if selectedCarac}}{{selectedCarac.label}}
{{#if competence}}
{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}

View File

@ -1,15 +1,15 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{alias}} tente de danser : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
{{actor.name}} tente de danser : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} réussi son interprétation avec une qualité de {{qualiteFinale}} .
{{actor.name}} 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}}.
{{actor.name}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}

View File

@ -2,12 +2,13 @@
{{#if isGM}}
<span>
{{#if (gt endurance 0)}}
De plus, {{alias}} a perdu {{endurance}} points d'endurance
{{actor.name}} a perdu {{endurance}} points d'endurance
{{#if (ne vie 0)}}et <span class="rdd-roll-echec">{{vie}} points de vie</span>{{/if}}
{{/if}}
</span>
{{else}}
<h4>{{alias}} encaisse à
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
<h4>{{actor.name}} encaisse à
<span>
{{numberFormat dmg.total decimals=0 sign=true}}
{{#if (eq dmg.mortalite 'non-mortel')~}}(coups non mortels)
@ -16,13 +17,13 @@
</span>
</h4>
<div>
Je d'encaissement de {{roll.total}}
{{#unless (eq armure 0)}}, l'armure a protègé de {{armure}} {{#unless (eq penetration 0)}}(pénétration de {{penetration}})
Jet d'encaissement de {{roll.total}}
{{#unless (eq armure 0)}}, l'armure a protégé de {{armure}} {{#unless (eq penetration 0)}}(pénétration de {{penetration}})
{{/unless}}
{{/unless}}, total: <span class="rdd-roll-echec">{{total}}</span>
<br>
{{alias}}
{{#if (eq dmg.mortalite 'cauchemar')}}subit le coup
{{actor.name}}
{{#if (eq dmg.mortalite 'cauchemar')}}subit une contusion
{{else if eraflures}}subit une contusion
{{else if legeres}}subit une blessure légère
{{else if graves}}subit une blessure grave
@ -42,9 +43,9 @@
{{/if}}
{{/if}}
{{/if}}
{{#if (eq show.recul 'encaisse')}}<div>{{alias}} ne recule pas malgré la violence du coup.</div>
{{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div>
{{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div>
{{#if (eq show.recul 'encaisse')}}<div>{{actor.name}} ne recule pas malgré la violence du coup.</div>
{{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{actor.name}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div>
{{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{actor.name}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div>
{{/if}}
</div>
{{/if}}

View File

@ -1,6 +1,6 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>{{alias}} esquive une attaque à {{diffLibre}}</h4>
<h4>{{actor.name}} esquive une attaque à {{diffLibre}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>

View File

@ -1,6 +1,9 @@
{{log "handlebar" this}}
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
{{actor.name}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}
{{selectedSort.name}}
</h4>

View File

@ -1,9 +1,11 @@
{{log "handlebar" this}}
{{#if competence.img}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
{{else if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>
{{alias}} {{#if show.title}}{{show.title}}: {{/if}}
{{actor.name}} {{#if show.title}}{{show.title}}: {{/if}}
{{#if selectedCarac}}{{selectedCarac.label}}
{{#if competence}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}{{/if}}
à {{diffLibre}}

View File

@ -1,15 +1,15 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{alias}} joue à : {{oeuvre.name}}
{{actor.name}} joue à : {{oeuvre.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} a gagné la partie !
{{actor.name}} a gagné la partie !
{{else}}
{{alias}} a perdu ...
{{actor.name}} a perdu ...
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}">
{{alias}} tente de {{maitrise.verbe}} {{le tmr.genre}} {{tmr.label}} ({{tmr.coord}})
{{actor.name}} tente de {{maitrise.verbe}} {{le tmr.genre}} {{tmr.label}} ({{tmr.coord}})
</h4>
{{#if previous}}
{{#with previous}}

View File

@ -1,16 +1,16 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>
{{alias}} a médité : {{meditation.name}}
{{actor.name}} a médité : {{meditation.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} aperçoit un signe Draconique fugitif, qu'il faut aller lire en <strong>{{meditation.data.tmr}}</strong> en réussissant un test <strong>d'INTELLECT/Draconic à {{diffLecture}}</strong>.
{{actor.name}} aperçoit un signe Draconique fugitif, qu'il faut aller lire en <strong>{{meditation.data.tmr}}</strong> en réussissant un test <strong>d'INTELLECT/Draconic à {{diffLecture}}</strong>.
Selon le résultat de votre lecture, vous gagnerez les points suivants en Sort: 3 pour une Normale, 5 pour une Significative, 10 pour une Particulière.
{{else}}
{{alias}} a échoué dans sa méditation et ne voit aucun signe Draconique.
{{actor.name}} a échoué dans sa méditation et ne voit aucun signe Draconique.
{{/if}}
<br><span>Vous vous êtes fatigué de 2 cases.</span>
{{#if rolled.isETotal}}<br><span>Votre échec total augmente de 1 la difficulté de la méditation!</span>{{/if~}}

View File

@ -1,15 +1,15 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{alias}} tente de jouer le morceau : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
{{actor.name}} tente de jouer le morceau : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} réussit son interprétation avec une qualité de {{qualiteFinale}} .
{{actor.name}} 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}}.
{{actor.name}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}

View File

@ -1,16 +1,16 @@
{{log "handlebar" this}}
<h4><img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
{{alias}} tente d'interpréter {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{actor.name}} tente d'interpréter {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
</h4>
<br>{{upperFirst oeuvre.data.default_carac}} / {{oeuvre.data.competence}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
<div>
{{#if rolled.isSuccess}}
{{alias}} réussi son interprétation avec une qualité de {{qualiteFinale}} .
{{actor.name}} réussi son interprétation avec une qualité de {{qualiteFinale}} .
{{else}}
{{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
{{actor.name}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}.
{{/if}}
</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}}

View File

@ -1,6 +1,6 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>{{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
<h4>{{actor.name}} pare une attaque à {{diffLibre}} - {{arme.name}}</h4>
<div>{{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}</div>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
@ -8,16 +8,16 @@
<span>
{{#if rolled.isSuccess}}
Attaque parée!
{{#if rolled.isPart}}<strong>{{alias}} pourra tenter une deuxième parade!</strong>{{/if}}
{{#if rolled.isPart}}<strong>{{actor.name}} pourra tenter une deuxième parade!</strong>{{/if}}
{{else}}
La parade a échoué!
{{/if}}
</span>
</div>
{{#if (eq show.recul 'encaisse')}}<div>{{alias}} ne recule pas malgré la violence du coup.</div>
{{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{alias}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div>
{{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{alias}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div>
{{#if (eq show.recul 'encaisse')}}<div>{{actor.name}} ne recule pas malgré la violence du coup.</div>
{{else if (eq show.recul 'chute')}}<div>Sous la violence du coup, {{actor.name}} recule et chute au sol ! Il/elle ne pourra plus attaquer ce round.</div>
{{else if (eq show.recul 'recul')}}<div>La violence du coup fait reculer {{actor.name}} de quelques mètres ! Il/elle ne pourra plus attaquer ce round.</div>
{{/if}}
{{#if (eq show.deteriorationArme 'resiste')}}
@ -29,7 +29,7 @@
{{/if}}
{{#if show.desarme}}
<div>Le défenseur {{alias}} lâche son arme qui tombe à ses pieds.</div>
<div>Le défenseur {{actor.name}} lâche son arme qui tombe à ses pieds.</div>
{{/if}}
{{#if attackerRoll.tactique}}

View File

@ -1,15 +1,15 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{oeuvre.data.competence}}" />
<h4>
{{alias}} tente de cuisiner la recette : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
{{actor.name}} tente de cuisiner la recette : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}})
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>
{{#if rolled.isSuccess}}
{{alias}} réussit sa recette, avec un plat de qualité {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation.
{{actor.name}} réussit sa recette, avec un plat de qualité {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation.
{{else}}
{{alias}} fait un piètre cuisinier(e), et obtient {{#if (lt qualiteFinale 0)}}un plat à l'exotisme certain{{else}}un plat de qualité {{qualiteFinale}}{{/if}}.
{{actor.name}} fait un piètre cuisinier(e), et obtient {{#if (lt qualiteFinale 0)}}un plat à l'exotisme certain{{else}}un plat de qualité {{qualiteFinale}}{{/if}}.
Selon la décision du MJ, le plat peut fournir {{oeuvre.data.sust}} Points de Sustentation
{{/if}}

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="systems/foundryvtt-reve-de-dragon/icons/competence_legendes.png" alt="Rêve de Dragon"/>
<h4 data-categorie="tmr" data-actor-id="{{actor._id}}">
{{alias}} tente de maîtriser un Rêve de Dragon!
{{actor.name}} tente de maîtriser un Rêve de Dragon!
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
<hr>

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>
{{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
{{actor.name}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}}
le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}}
{{selectedSort.name}}
</h4>

View File

@ -1,7 +1,7 @@
{{log "handlebar" this}}
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}" />
<h4>
{{alias}} travaille à sa t&acirc;che {{tache.name}}
{{actor.name}} travaille à sa t&acirc;che {{tache.name}}
<br>{{selectedCarac.label}}/{{competence.name}}
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}

View File

@ -1,6 +1,9 @@
{{log "handlebar" this}}
{{#if actor.img}}
<img class="chat-icon" src="{{actor.img}}" alt="{{actor.name}}" />
{{/if}}
<h4>
{{alias}} transforme {{rolled.factor}}% de son stress
{{actor.name}} transforme {{rolled.factor}}% de son stress
</h4>
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
{{#if rolled.isPart}}

View File

@ -23,7 +23,7 @@
{{/select}}
</select>
<label for="categorie">Etat Général: {{etat}}</label>
<label for="categorie">&nbsp;&nbsp;<a id='jet-astrologie'>Faire un jet d'Astrologie</a></label>
<label for="categorie">&nbsp;&nbsp;<a class='jet-astrologie'>Faire un jet d'Astrologie</a></label>
{{!-- Sheet Body --}}
<section class="sheet-body">

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label for="categorie">Compétence associée</label>
<select name="data.competence" id="competence" data-dtype="String">
{{#select item.data.data.competence}}
{{#select item.data.data.data.competence}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-competence.html"}}
{{/select}}
</select>

View File

@ -16,7 +16,7 @@
<div class="form-group">
<label for="niveau">Mode spécifique</label>
<select name="data.specific" id="specific" data-dtype="String">
{{#select item.data.data.specific}}
{{#select item.data.data.data.specific}}
{{>"systems/foundryvtt-reve-de-dragon/templates/casetmr-specific-list.html"}}
{{/select}}
</select>

View File

@ -18,7 +18,7 @@
<div class="form-group">
<label for="categorie">Catégorie </label>
<select name="data.categorie" id="categorie" data-dtype="String">
{{#select item.data.data.categorie}}
{{#select item.data.data.data.categorie}}
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-competence.html"}}
{{/select}}
</select>
@ -34,7 +34,7 @@
<div class="form-group">
<label for="base">Niveau de base </label>
<select name="data.base" id="base" data-dtype="Number">
{{#select item.data.data.base}}
{{#select item.data.data.data.base}}
{{>"systems/foundryvtt-reve-de-dragon/templates/competence-base.html"}}
{{/select}}
</select>
@ -42,7 +42,7 @@
<div class="form-group">
<label for="defaut_carac">Caractéristique par défaut </label>
<select name="data.defaut_carac" id="defaut_carac" data-dtype="String">
{{#select item.data.data.defaut_carac}}
{{#select item.data.data.data.defaut_carac}}
{{>"systems/foundryvtt-reve-de-dragon/templates/competence-carac-defaut.html"}}
{{/select}}
</select>

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="alchimie-title" for="xp">Type</label>
<select name="data.type" data-dtype="String">
{{#select item.data.data.type}}
{{#select item.data.data.data.type}}
<option value="recreative">Récréative</option>
<option value="soliste">Soliste</option>
{{/select}}

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label class="alchimie-title" for="xp">Type</label>
<select name="data.type" data-dtype="String">
{{#select item.data.data.type}}
{{#select item.data.data.data.type}}
<option value="adressehasard">Adresse/Hasard</option>
<option value="de">Dés</option>
<option value="carte">Cartes</option>

View File

@ -16,7 +16,7 @@
<div class="form-group">
<label for="xp">Compétence</label>
<select name="data.competence" id="competenceselect" data-dtype="String">
{{#select item.data.data.competence}}
{{#select item.data.data.data.competence}}
{{#each competences as |competence key|}}
<option value="{{competence.name}}">{{competence.name}}</option>
{{/each}}

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label for="xp">Compétence</label>
<select name="data.competence" id="competenceselect" data-dtype="String">
{{#select item.data.data.competence}}
{{#select item.data.data.data.competence}}
{{#each competences as |competence key|}}
<option value="{{competence.name}}">{{competence.name}}</option>
{{/each}}
@ -30,7 +30,7 @@
<div class="form-group">
<label for="xp">Heure</label>
<select name="data.heure" id="heure" data-dtype="String">
{{#select item.data.data.heure}}
{{#select item.data.data.data.heure}}
{{>"systems/foundryvtt-reve-de-dragon/templates/heures-select-option.html"}}
{{/select}}
</select>
@ -50,7 +50,7 @@
<div class="form-group">
<label for="xp">Case TMR</label>
<select name="data.tmr" id="tmr" data-dtype="String">
{{#select item.data.data.tmr}}
{{#select item.data.data.data.tmr}}
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
{{/select}}
</select>
@ -59,7 +59,7 @@
<label for="xp">Malus</label>
{{#if isGM}}
<select name="data.malus" id="malus" data-dtype="Number">
{{#select item.data.data.malus}}
{{#select item.data.data.data.malus}}
<option value="0">0</option>
<option value="-1">-1</option>
<option value="-2">-2</option>

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label>Caractéristique</label>
<select name="data.default_carac" id="default_carac" data-dtype="String">
{{#select item.data.data.default_carac}}
{{#select item.data.data.data.default_carac}}
{{>"systems/foundryvtt-reve-de-dragon/templates/competence-carac-defaut.html"}}
{{/select}}
</select>
@ -20,7 +20,7 @@
<div class="form-group">
<label>Compétence</label>
<select name="data.competence" id="competenceselect" data-dtype="String">
{{#select item.data.data.competence}}
{{#select item.data.data.data.competence}}
{{#each competences as |competence key|}}
<option value="{{competence.name}}">{{competence.name}}</option>
{{/each}}

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label for="categorie">Draconic </label>
<select name="data.draconic" id="draconic" data-dtype="String">
{{#select item.data.data.draconic}}
{{#select item.data.data.data.draconic}}
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-draconic.html"}}
{{/select}}
</select>
@ -20,7 +20,7 @@
<div class="form-group">
<label for="xp">Case TMR </label>
<select name="data.caseTMR" id="caseTMR" data-dtype="String">
{{#select item.data.data.caseTMR}}
{{#select item.data.data.data.caseTMR}}
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
<option value="special">Case spéciale TMR (saisie ci-dessous)</option>
{{/select}}

View File

@ -12,7 +12,7 @@
<div class="form-group">
<label for="xp">Caractéristique</label>
<select name="data.carac" id="caracselect" data-dtype="String">
{{#select item.data.data.carac}}
{{#select item.data.data.data.carac}}
{{#each caracList as |carac key|}}
<option value="{{key}}">{{carac.label}}</option>
{{/each}}
@ -22,7 +22,7 @@
<div class="form-group">
<label for="xp">Compétence</label>
<select name="data.competence" id="competenceselect" data-dtype="String">
{{#select item.data.data.competence}}
{{#select item.data.data.data.competence}}
{{#each competences as |competence key|}}
<option value="{{competence.name}}">{{competence.name}}</option>
{{/each}}