Nettoyage feuilles acteurs
- template partial pour les compétences - séparation des options/calculs/données - extraction de méthodes pour les calculs (total xp, total carac, ...) - déplacement de code de RdDUtility vers RdDItemCompetence / RdDCarac
This commit is contained in:
parent
5207df0223
commit
f26ae24d13
@ -7,6 +7,7 @@
|
|||||||
import { HtmlUtility } from "./html-utility.js";
|
import { HtmlUtility } from "./html-utility.js";
|
||||||
import { RdDUtility } from "./rdd-utility.js";
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
import { RdDActorSheet } from "./actor-sheet.js";
|
import { RdDActorSheet } from "./actor-sheet.js";
|
||||||
|
import { RdDCarac } from "./rdd-carac.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDActorCreatureSheet extends RdDActorSheet {
|
export class RdDActorCreatureSheet extends RdDActorSheet {
|
||||||
@ -25,37 +26,21 @@ export class RdDActorCreatureSheet extends RdDActorSheet {
|
|||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getData() {
|
async getData() {
|
||||||
let formData = super.getDData();
|
let formData = await super.getData();
|
||||||
console.log("Creature : ", formData);
|
console.log("Creature : ", formData);
|
||||||
|
formData.calc = {
|
||||||
formData.itemsByType = {};
|
caracTotal: RdDCarac.computeTotal(formData.data.carac),
|
||||||
for (const item of formData.items) {
|
resumeBlessures: this.actor.computeResumeBlessure(formData.data.blessures),
|
||||||
let list = formData.itemsByType[item.type];
|
encTotal: await this.actor.computeEncombrementTotalEtMalusArmure(),
|
||||||
if (!list) {
|
|
||||||
list = [];
|
|
||||||
formData.itemsByType[item.type] = list;
|
|
||||||
}
|
|
||||||
list.push(item);
|
|
||||||
}
|
}
|
||||||
|
formData.calc.surEncombrementMessage = (formData.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : "";
|
||||||
// Compute current carac sum
|
formData.options.isGM = game.user.isGM;
|
||||||
let sum = 0;
|
|
||||||
Object.values(formData.data.carac).forEach(carac => { if (!carac.derivee) { sum += parseInt(carac.value) } });
|
|
||||||
formData.data.caracSum = sum;
|
|
||||||
|
|
||||||
formData.data.carac.taille.isTaille = true; // To avoid button link;
|
|
||||||
formData.data.blessures.resume = this.actor.computeResumeBlessure(formData.data.blessures);
|
|
||||||
|
|
||||||
formData.data.isGM = game.user.isGM;
|
|
||||||
|
|
||||||
formData.data.competencecreature = formData.itemsByType["competencecreature"];
|
formData.data.competencecreature = formData.itemsByType["competencecreature"];
|
||||||
|
|
||||||
this.actor.computeEncombrementTotalEtMalusArmure();
|
|
||||||
RdDUtility.filterItemsPerTypeForSheet(formData);
|
RdDUtility.filterItemsPerTypeForSheet(formData);
|
||||||
RdDUtility.buildArbreDeConteneur(this, formData);
|
RdDUtility.buildArbreDeConteneur(this, formData);
|
||||||
formData.data.encTotal = this.actor.encTotal;
|
|
||||||
formData.data.isGM = game.user.isGM;
|
|
||||||
|
|
||||||
console.log("Creature : ", this.objetVersConteneur, formData);
|
console.log("Creature : ", this.objetVersConteneur, formData);
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { HtmlUtility } from "./html-utility.js";
|
import { HtmlUtility } from "./html-utility.js";
|
||||||
|
import { Misc } from "./misc.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDActorEntiteSheet extends ActorSheet {
|
export class RdDActorEntiteSheet extends ActorSheet {
|
||||||
@ -29,22 +30,16 @@ export class RdDActorEntiteSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getData() {
|
async getData() {
|
||||||
let formData = super.getData();
|
let formData = super.getData();
|
||||||
|
|
||||||
formData.itemsByType = {};
|
formData.itemsByType = Misc.classify(formData.items);
|
||||||
for (const item of formData.items) {
|
|
||||||
let list = formData.itemsByType[item.type];
|
formData.options.isGM = game.user.isGM;
|
||||||
if (!list) {
|
|
||||||
list = [];
|
|
||||||
formData.itemsByType[item.type] = list;
|
|
||||||
}
|
|
||||||
list.push(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
formData.data.carac.taille.isTaille = true; // To avoid button link;
|
formData.data.carac.taille.isTaille = true; // To avoid button link;
|
||||||
formData.data.competencecreature = formData.itemsByType["competencecreature"];
|
formData.data.competencecreature = formData.itemsByType["competencecreature"];
|
||||||
formData.data.isGM = game.user.isGM;
|
|
||||||
|
|
||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import { RdDItemCompetence } from "./item-competence.js";
|
|||||||
import { RdDBonus } from "./rdd-bonus.js";
|
import { RdDBonus } from "./rdd-bonus.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { RdDCombatManager } from "./rdd-combat.js";
|
import { RdDCombatManager } from "./rdd-combat.js";
|
||||||
|
import { RdDCarac } from "./rdd-carac.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class RdDActorSheet extends ActorSheet {
|
export class RdDActorSheet extends ActorSheet {
|
||||||
@ -31,51 +32,66 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getData() {
|
async getData() {
|
||||||
let formData = super.getData();
|
let formData = super.getData();
|
||||||
|
// -------------- version 0.7.9
|
||||||
|
// let formData = {
|
||||||
|
// cssClass: this.entity.owner ? "editable" : "locked",
|
||||||
|
// editable: this.isEditable,
|
||||||
|
// entity: duplicate(this.entity.data),
|
||||||
|
// limited: this.entity.limited,
|
||||||
|
// options: this.options,
|
||||||
|
// owner: this.entity.owner,
|
||||||
|
// title: this.title
|
||||||
|
// }
|
||||||
|
// // Entity data
|
||||||
|
// formData.actor = formData.entity;
|
||||||
|
// formData.data = formData.entity.data;
|
||||||
|
|
||||||
if (formData.actor.type == 'creature' || formData.actor.type == 'humanoide') return formData; // Shortcut
|
// // Owned items
|
||||||
|
// formData.items = formData.actor.items;
|
||||||
formData.data.editCaracComp = this.options.editCaracComp;
|
// formData.items.sort((a, b) => (a.sort || 0) - (b.sort || 0));
|
||||||
formData.data.showCompNiveauBase = this.options.showCompNiveauBase;
|
|
||||||
formData.data.montrerArchetype = this.options.montrerArchetype;
|
|
||||||
|
|
||||||
formData.itemsByType = Misc.classify(formData.items);
|
formData.itemsByType = Misc.classify(formData.items);
|
||||||
|
RdDUtility.filterItemsPerTypeForSheet(formData);
|
||||||
|
|
||||||
// Competence per category
|
formData.options.isGM = game.user.isGM;
|
||||||
formData.data.comptageArchetype = RdDUtility.getLimitesArchetypes();
|
|
||||||
formData.data.competenceXPTotal = 0;
|
// la taille est la taille: on ne peut pas l'utiliser pour un jet
|
||||||
formData.competenceByCategory = Misc.classify(
|
formData.data.carac.taille.isTaille = true;
|
||||||
formData.itemsByType.competence,
|
|
||||||
item => item.data.categorie,
|
if (this.actor.data.type == 'creature') return formData; // Shortcut
|
||||||
item => {
|
|
||||||
let archetypeKey = (item.data.niveau_archetype < 0) ? 0 : item.data.niveau_archetype;
|
// toujours avoir une liste d'armes (pour mettre esquive et corps à corps)
|
||||||
if (formData.data.comptageArchetype[archetypeKey] == undefined) {
|
formData.itemsByType.arme = formData.itemsByType.arme ?? [];
|
||||||
formData.data.comptageArchetype[archetypeKey] = { "niveau": archetypeKey, "nombreMax": 0, "nombre": 0 };
|
|
||||||
}
|
formData.competenceByCategory = Misc.classify(formData.data.competences, item => item.data.categorie);
|
||||||
formData.data.comptageArchetype[archetypeKey].nombre = (formData.data.comptageArchetype[archetypeKey]?.nombre ?? 0) + 1; //Comptage archetype
|
|
||||||
item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau);
|
formData.calc = {
|
||||||
item.data.isLevelUp = item.data.xp >= item.data.xpNext; // Flag de niveau à MAJ
|
comptageArchetype: RdDItemCompetence.computeResumeArchetype(formData.data.competences),
|
||||||
//this.actor.checkCompetenceXP(item.name); // Petite vérification experience
|
competenceXPTotal: RdDItemCompetence.computeTotalXP(formData.data.competences),
|
||||||
item.data.showCompetence = !formData.data.showCompNiveauBase || (Number(item.data.niveau) != Number(RdDItemCompetence.getLevelCategory(item.data.categorie)));
|
caracTotal: RdDCarac.computeTotal(formData.data.carac, formData.data.beaute),
|
||||||
// Ignorer les compétences 'troncs' à ce stade
|
// Mise à jour de l'encombrement total et du prix de l'équipement
|
||||||
formData.data.competenceXPTotal += RdDItemCompetence.computeCompetenceXPCost(item);
|
encTotal: await this.actor.computeEncombrementTotalEtMalusArmure(),
|
||||||
return item;
|
prixTotalEquipement: await this.actor.computePrixTotalEquipement(),
|
||||||
});
|
surprise: RdDBonus.find(this.actor.getSurprise(false)).descr,
|
||||||
formData.data.competenceXPTotal -= RdDItemCompetence.computeEconomieCompetenceTroncXP(formData.itemsByType.competence);
|
fatigue: {
|
||||||
|
malus: RdDUtility.calculMalusFatigue(formData.data.sante.fatigue.value, formData.data.sante.endurance.max),
|
||||||
|
html: "<table class='table-fatigue'>" + RdDUtility.makeHTMLfatigueMatrix(formData.data.sante.fatigue.value, formData.data.sante.endurance.max).html() + "</table>"
|
||||||
|
},
|
||||||
|
resumeBlessures: this.actor.computeResumeBlessure(formData.data.blessures),
|
||||||
|
};
|
||||||
|
formData.calc.surEncombrementMessage = (formData.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : "";
|
||||||
|
|
||||||
|
formData.data.competences.forEach(item => {
|
||||||
|
item.visible = !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(item);
|
||||||
|
RdDItemCompetence.levelUp(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.values(formData.data.carac).forEach(c => {
|
||||||
|
RdDCarac.levelUp(c);
|
||||||
|
});
|
||||||
|
|
||||||
// Compute current carac sum
|
|
||||||
let sum = 0;
|
|
||||||
for (let caracName in formData.data.carac) {
|
|
||||||
let currentCarac = formData.data.carac[caracName];
|
|
||||||
if (!currentCarac.derivee) {
|
|
||||||
sum += parseInt(currentCarac.value);
|
|
||||||
}
|
|
||||||
currentCarac.xpNext = RdDUtility.getCaracNextXp(currentCarac.value);
|
|
||||||
currentCarac.isLevelUp = (currentCarac.xp >= currentCarac.xpNext);
|
|
||||||
}
|
|
||||||
sum += (formData.data.beaute >= 0) ? (formData.data.beaute - 10) : 0;
|
|
||||||
formData.data.caracSum = sum;
|
|
||||||
|
|
||||||
// Force empty arme, at least for Esquive
|
// Force empty arme, at least for Esquive
|
||||||
if (formData.itemsByType.arme == undefined) formData.itemsByType.arme = [];
|
if (formData.itemsByType.arme == undefined) formData.itemsByType.arme = [];
|
||||||
@ -112,14 +128,9 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
formData.data.blessures.resume = this.actor.computeResumeBlessure(formData.data.blessures);
|
formData.data.blessures.resume = this.actor.computeResumeBlessure(formData.data.blessures);
|
||||||
|
|
||||||
// Mise à jour de l'encombrement total et du prix de l'équipement
|
// Mise à jour de l'encombrement total et du prix de l'équipement
|
||||||
this.actor.computeEncombrementTotalEtMalusArmure();
|
|
||||||
this.actor.computePrixTotalEquipement();
|
|
||||||
|
|
||||||
// Common data
|
// Common data
|
||||||
formData.data.competenceByCategory = formData.competenceByCategory;
|
formData.data.competenceByCategory = formData.competenceByCategory;
|
||||||
formData.data.encTotal = this.actor.encTotal;
|
|
||||||
formData.data.prixTotalEquipement = this.actor.prixTotalEquipement;
|
|
||||||
formData.data.surprise = RdDBonus.find(this.actor.getSurprise(false)).descr;
|
|
||||||
formData.data.isGM = game.user.isGM;
|
formData.data.isGM = game.user.isGM;
|
||||||
formData.ajustementsConditions = CONFIG.RDD.ajustementsConditions;
|
formData.ajustementsConditions = CONFIG.RDD.ajustementsConditions;
|
||||||
formData.difficultesLibres = CONFIG.RDD.difficultesLibres;
|
formData.difficultesLibres = CONFIG.RDD.difficultesLibres;
|
||||||
@ -135,13 +146,16 @@ export class RdDActorSheet extends ActorSheet {
|
|||||||
formData.data.rencontres = duplicate(formData.data.reve.rencontre.list);
|
formData.data.rencontres = duplicate(formData.data.reve.rencontre.list);
|
||||||
formData.data.caseSpeciales = formData.itemsByType['casetmr'];
|
formData.data.caseSpeciales = formData.itemsByType['casetmr'];
|
||||||
RdDUtility.buildArbreDeConteneur(this, formData);
|
RdDUtility.buildArbreDeConteneur(this, formData);
|
||||||
formData.data.surEncombrementMessage = (formData.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : "";
|
|
||||||
formData.data.vehiculesList = this.actor.buildVehiculesList();
|
formData.data.vehiculesList = this.actor.buildVehiculesList();
|
||||||
formData.data.monturesList = this.actor.buildMonturesList();
|
formData.data.monturesList = this.actor.buildMonturesList();
|
||||||
formData.data.suivantsList = this.actor.buildSuivantsList();
|
formData.data.suivantsList = this.actor.buildSuivantsList();
|
||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isCompetenceAffichable(competence) {
|
||||||
|
return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence);
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
let toSuper = await RdDUtility.processItemDropEvent(this, event);
|
let toSuper = await RdDUtility.processItemDropEvent(this, event);
|
||||||
|
@ -33,7 +33,7 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getData() {
|
async getData() {
|
||||||
let formData = super.getData();
|
let formData = super.getData();
|
||||||
|
|
||||||
formData.itemsByType = Misc.classify(formData.items);
|
formData.itemsByType = Misc.classify(formData.items);
|
||||||
@ -41,9 +41,12 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
|||||||
RdDUtility.filterItemsPerTypeForSheet(formData);
|
RdDUtility.filterItemsPerTypeForSheet(formData);
|
||||||
RdDUtility.buildArbreDeConteneur(this, formData);
|
RdDUtility.buildArbreDeConteneur(this, formData);
|
||||||
|
|
||||||
this.actor.computeEncombrementTotalEtMalusArmure();
|
formData.options.isGM = game.user.isGM;
|
||||||
formData.data.isGM = game.user.isGM;
|
|
||||||
formData.data.surEncombrementMessage = (this.encTotal > formData.capacite_encombrement) ? "Sur-Encombrement!" : "";
|
formData.calc ={
|
||||||
|
encTotal: await this.actor.computeEncombrementTotalEtMalusArmure(),
|
||||||
|
}
|
||||||
|
formData.calc.surEncombrementMessage = formData.calc.encTotal > formData.data.capacite_encombrement ? "Sur-Encombrement!" : "",
|
||||||
|
|
||||||
console.log("DATA", formData);
|
console.log("DATA", formData);
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ import { TMRRencontres } from "./tmr-rencontres.js";
|
|||||||
import { Poetique } from "./poetique.js";
|
import { Poetique } from "./poetique.js";
|
||||||
import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
|
import { EffetsDraconiques } from "./tmr/effets-draconiques.js";
|
||||||
import { Draconique } from "./tmr/draconique.js";
|
import { Draconique } from "./tmr/draconique.js";
|
||||||
|
import { RdDCarac } from "./rdd-carac.js";
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -139,7 +140,7 @@ export class RdDActor extends Actor {
|
|||||||
*/
|
*/
|
||||||
async _prepareCharacterData(actorData) {
|
async _prepareCharacterData(actorData) {
|
||||||
// Initialize empty items
|
// Initialize empty items
|
||||||
RdDUtility.computeCarac(actorData.data);
|
RdDCarac.computeCarac(actorData.data);
|
||||||
this.computeEncombrementTotalEtMalusArmure();
|
this.computeEncombrementTotalEtMalusArmure();
|
||||||
this.computePrixTotalEquipement();
|
this.computePrixTotalEquipement();
|
||||||
this.computeEtatGeneral();
|
this.computeEtatGeneral();
|
||||||
@ -736,7 +737,7 @@ export class RdDActor extends Actor {
|
|||||||
let comp = this.getCompetence(compName);
|
let comp = this.getCompetence(compName);
|
||||||
if (comp) {
|
if (comp) {
|
||||||
let troncList = RdDItemCompetence.isTronc(compName);
|
let troncList = RdDItemCompetence.isTronc(compName);
|
||||||
let nouveauNiveau = compValue ?? RdDItemCompetence.getLevelCategory(comp.data.categorie);
|
let nouveauNiveau = compValue ?? RdDItemCompetence.getNiveauBase(comp.data.categorie);
|
||||||
if (troncList) {
|
if (troncList) {
|
||||||
let message = "Vous avez modifié une compétence 'tronc'. Vérifiez que les compétences suivantes évoluent ensemble jusqu'au niveau 0 : ";
|
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) {
|
for (let troncName of troncList) {
|
||||||
@ -1015,6 +1016,7 @@ export class RdDActor extends Actor {
|
|||||||
malusArmureData.value = newMalusArmure;
|
malusArmureData.value = newMalusArmure;
|
||||||
await this.update({ "data.attributs.malusarmure": malusArmureData });
|
await this.update({ "data.attributs.malusarmure": malusArmureData });
|
||||||
}
|
}
|
||||||
|
return this.encTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -1032,6 +1034,7 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
// Mise à jour valeur totale de l'équipement
|
// Mise à jour valeur totale de l'équipement
|
||||||
this.prixTotalEquipement = prixTotalEquipement;
|
this.prixTotalEquipement = prixTotalEquipement;
|
||||||
|
return prixTotalEquipement;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -1310,7 +1313,7 @@ export class RdDActor extends Actor {
|
|||||||
if (this.isEntiteCauchemar()) {
|
if (this.isEntiteCauchemar()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return RdDUtility.calculSConst(this.data.data.carac.constitution.value);
|
return RdDCarac.calculSConst(this.data.data.carac.constitution.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -1716,7 +1719,7 @@ export class RdDActor extends Actor {
|
|||||||
async checkCaracXP(caracName) {
|
async checkCaracXP(caracName) {
|
||||||
let carac = this.data.data.carac[caracName];
|
let carac = this.data.data.carac[caracName];
|
||||||
if (carac && carac.xp > 0) {
|
if (carac && carac.xp > 0) {
|
||||||
let xpNeeded = RdDUtility.getCaracNextXp(carac.value + 1);
|
let xpNeeded = RdDCarac.getCaracNextXp(carac.value + 1);
|
||||||
if (carac.xp >= xpNeeded) {
|
if (carac.xp >= xpNeeded) {
|
||||||
carac = duplicate(carac);
|
carac = duplicate(carac);
|
||||||
carac.value = Number(carac.value) + 1;
|
carac.value = Number(carac.value) + 1;
|
||||||
|
@ -1,9 +1,23 @@
|
|||||||
|
|
||||||
const competenceTroncs = [["Esquive", "Dague", "Corps à corps"],
|
const competenceTroncs = [["Esquive", "Dague", "Corps à corps"],
|
||||||
["Epée à 1 main", "Epée à 2 mains", "Hache à 1 main", "Hache à 2 mains", "Lance", "Masse à 1 main", "Masse à 2 mains"]];
|
["Epée à 1 main", "Epée à 2 mains", "Hache à 1 main", "Hache à 2 mains", "Lance", "Masse à 1 main", "Masse à 2 mains"]];
|
||||||
|
|
||||||
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_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 competence_niveau_max = competence_xp_par_niveau.length - 10;
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
const limitesArchetypes = [
|
||||||
|
{ "niveau": 0, "nombreMax": 100, "nombre": 0 },
|
||||||
|
{ "niveau": 1, "nombreMax": 10, "nombre": 0 },
|
||||||
|
{ "niveau": 2, "nombreMax": 9, "nombre": 0 },
|
||||||
|
{ "niveau": 3, "nombreMax": 8, "nombre": 0 },
|
||||||
|
{ "niveau": 4, "nombreMax": 7, "nombre": 0 },
|
||||||
|
{ "niveau": 5, "nombreMax": 6, "nombre": 0 },
|
||||||
|
{ "niveau": 6, "nombreMax": 5, "nombre": 0 },
|
||||||
|
{ "niveau": 7, "nombreMax": 4, "nombre": 0 },
|
||||||
|
{ "niveau": 8, "nombreMax": 3, "nombre": 0 },
|
||||||
|
{ "niveau": 9, "nombreMax": 2, "nombre": 0 },
|
||||||
|
{ "niveau": 10, "nombreMax": 1, "nombre": 0 },
|
||||||
|
{ "niveau": 11, "nombreMax": 1, "nombre": 0 }
|
||||||
|
];
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
const categorieCompetences = {
|
const categorieCompetences = {
|
||||||
@ -35,10 +49,10 @@ export class RdDItemCompetence extends Item {
|
|||||||
static getCategorieCompetences() {
|
static getCategorieCompetences() {
|
||||||
return categorieCompetences;
|
return categorieCompetences;
|
||||||
}
|
}
|
||||||
static getLevelCategory(category) {
|
static getNiveauBase(category) {
|
||||||
return categorieCompetences[category].level;
|
return categorieCompetences[category].level;
|
||||||
}
|
}
|
||||||
static getLabelCategory(category) {
|
static getLabelCategorie(category) {
|
||||||
return categorieCompetences[category].label;
|
return categorieCompetences[category].label;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,6 +91,44 @@ export class RdDItemCompetence extends Item {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeTotalXP(competences) {
|
||||||
|
const total = competences.map(c => RdDItemCompetence.computeXP(c))
|
||||||
|
.reduce((a, b) => a + b, 0);
|
||||||
|
const economieTronc = RdDItemCompetence.computeEconomieXPTronc(competences);
|
||||||
|
return total - economieTronc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeXP(competence) {
|
||||||
|
const factor = competence.name.includes('Thanatos') ? 2 : 1; // Thanatos compte double !
|
||||||
|
const xpNiveau = RdDItemCompetence.computeDeltaXP(competence.data.base, competence.data.niveau ?? competence.data.base);
|
||||||
|
const xp = competence.data.xp ?? 0;
|
||||||
|
const xpSort = competence.data.xp_sort ?? 0;
|
||||||
|
return factor * (xpNiveau + xp) + xpSort;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeEconomieXPTronc(competences) {
|
||||||
|
return competenceTroncs.map(
|
||||||
|
list => list.map(name => RdDItemCompetence.findCompetence(competences, name))
|
||||||
|
// calcul du coût xp jusqu'au niveau 0 maximum
|
||||||
|
.map(it => RdDItemCompetence.computeDeltaXP(it?.data.base ?? -11, Math.min(it?.data.niveau ?? -11, 0)))
|
||||||
|
.sort((a, b) => b - a) // tri descendant
|
||||||
|
.splice(0, 1) // ignorer le coût xp le plus élevé
|
||||||
|
.reduce((a, b) => a + b, 0)
|
||||||
|
).reduce((a, b) => a + b, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeDeltaXP(from, to) {
|
||||||
|
RdDItemCompetence._valideNiveau(from);
|
||||||
|
RdDItemCompetence._valideNiveau(to);
|
||||||
|
return competence_xp_cumul[to] - competence_xp_cumul[from];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static computeCompetenceXPCost(competence) {
|
static computeCompetenceXPCost(competence) {
|
||||||
let xp = RdDItemCompetence.getDeltaXp(competence.data.base, competence.data.niveau ?? competence.data.base);
|
let xp = RdDItemCompetence.getDeltaXp(competence.data.base, competence.data.niveau ?? competence.data.base);
|
||||||
@ -100,6 +152,20 @@ export class RdDItemCompetence extends Item {
|
|||||||
return economie;
|
return economie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static levelUp(item) {
|
||||||
|
item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau);
|
||||||
|
item.data.isLevelUp = item.data.xp >= item.data.xpNext;
|
||||||
|
}
|
||||||
|
|
||||||
|
static isVisible(item) {
|
||||||
|
return Number(item.data.niveau) != RdDItemCompetence.getNiveauBase(item.data.categorie);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static isNiveauBase(item) {
|
||||||
|
return Number(item.data.niveau) == RdDItemCompetence.getNiveauBase(item.data.categorie);
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static findCompetence(list, name) {
|
static findCompetence(list, name) {
|
||||||
name = name.toLowerCase();
|
name = name.toLowerCase();
|
||||||
@ -127,8 +193,24 @@ export class RdDItemCompetence extends Item {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _valideNiveau(niveau){
|
static _valideNiveau(niveau){
|
||||||
if (niveau < -11 || niveau > competence_niveau_max) {
|
if (niveau < -11 || niveau > competence_niveau_max) {
|
||||||
console.warn("Niveau en dehors des niveaux de compétences: [-11, " + competence_niveau_max + "]", niveau)
|
console.warn(`Niveau ${niveau} en dehors des niveaux de compétences: [-11, ${competence_niveau_max} ]`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeResumeArchetype(competences) {
|
||||||
|
const archetype = RdDItemCompetence.getLimitesArchetypes();
|
||||||
|
competences.forEach(item => {
|
||||||
|
let niveau = (item.data.niveau_archetype < 0) ? 0 : item.data.niveau_archetype;
|
||||||
|
archetype[niveau] = archetype[niveau] ?? { "niveau": niveau, "nombreMax": 0, "nombre": 0 };
|
||||||
|
archetype[niveau].nombre = (archetype[niveau]?.nombre ?? 0) + 1;
|
||||||
|
});
|
||||||
|
return archetype;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static getLimitesArchetypes() {
|
||||||
|
return duplicate(limitesArchetypes);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -111,7 +111,7 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
async _onClickSelectCategorie(event) {
|
async _onClickSelectCategorie(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
let level = RdDItemCompetence.getLevelCategory(event.currentTarget.value);
|
let level = RdDItemCompetence.getNiveauBase(event.currentTarget.value);
|
||||||
this.object.data.data.base = level;
|
this.object.data.data.base = level;
|
||||||
$("#base").val( level );
|
$("#base").val( level );
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,41 @@
|
|||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
|
import { RdDUtility } from "./rdd-utility.js";
|
||||||
|
|
||||||
|
const tableCaracDerivee = {
|
||||||
|
// xp: coût pour passer du niveau inférieur à ce niveau
|
||||||
|
1: { xp: 3, poids: "moins de 1kg", plusdom: -5, sconst: 0.5, sust: 0.1 },
|
||||||
|
2: { xp: 3, poids: "1-5", plusdom: -4, sconst: 0.5, sust: 0.3 },
|
||||||
|
3: { xp: 4, poids: "6-10", plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
|
||||||
|
4: { xp: 4, poids: "11-20", plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
|
||||||
|
5: { xp: 5, poids: "21-30", plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
|
||||||
|
6: { xp: 5, poids: "31-40", plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
|
||||||
|
7: { xp: 6, poids: "41-50", plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
|
||||||
|
8: { xp: 6, poids: "51-60", plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
|
||||||
|
9: { xp: 7, poids: "61-65", plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
|
||||||
|
10: { xp: 7, poids: "66-70", plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
|
||||||
|
11: { xp: 8, poids: "71-75", plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
|
||||||
|
12: { xp: 8, poids: "76-80", plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
|
||||||
|
13: { xp: 9, poids: "81-90", plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
|
||||||
|
14: { xp: 9, poids: "91-100", plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
|
||||||
|
15: { xp: 10, poids: "101-110", plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
|
||||||
|
16: { xp: 20, poids: "111-120", plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
|
||||||
|
17: { xp: 30, poids: "121-131", plusdom: +3, sconst: 5, sust: 5 },
|
||||||
|
18: { xp: 40, poids: "131-141", plusdom: +4, sconst: 6, sust: 5 },
|
||||||
|
19: { xp: 50, poids: "141-150", plusdom: +4, sconst: 6, sust: 5 },
|
||||||
|
20: { xp: 60, poids: "151-160", plusdom: +4, sconst: 6, sust: 6 },
|
||||||
|
21: { xp: 70, poids: "161-180", plusdom: +5, sconst: 7, sust: 6 },
|
||||||
|
22: { xp: 80, poids: "181-200", plusdom: +5, sconst: 7, sust: 7 },
|
||||||
|
23: { xp: 90, poids: "201-300", plusdom: +6, sconst: 7, sust: 8 },
|
||||||
|
24: { xp: 100, poids: "301-400", plusdom: +6, sconst: 8, sust: 9 },
|
||||||
|
25: { xp: 110, poids: "401-500", plusdom: +7, sconst: 8, sust: 10 },
|
||||||
|
26: { xp: 120, poids: "501-600", plusdom: +7, sconst: 8, sust: 11 },
|
||||||
|
27: { xp: 130, poids: "601-700", plusdom: +8, sconst: 9, sust: 12 },
|
||||||
|
28: { xp: 140, poids: "701-800", plusdom: +8, sconst: 9, sust: 13 },
|
||||||
|
29: { xp: 150, poids: "801-900", plusdom: +9, sconst: 9, sust: 14 },
|
||||||
|
30: { xp: 160, poids: "901-1000", plusdom: +9, sconst: 10, sust: 15 },
|
||||||
|
31: { xp: 170, poids: "1001-1500", plusdom: +10, sconst: 10, sust: 16 },
|
||||||
|
32: { xp: 180, poids: "1501-2000", plusdom: +11, sconst: 10, sust: 17 }
|
||||||
|
};
|
||||||
|
|
||||||
export class RdDCarac {
|
export class RdDCarac {
|
||||||
|
|
||||||
@ -21,6 +58,37 @@ export class RdDCarac {
|
|||||||
(RdDCarac.isReve(selectedCarac) && !competence);
|
(RdDCarac.isReve(selectedCarac) && !competence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static computeTotal(carac, beaute = undefined) {
|
||||||
|
const total = Object.values(carac).filter(c => !c.derivee)
|
||||||
|
.map(it => parseInt(it.value))
|
||||||
|
.reduce((a, b) => a + b, 0);
|
||||||
|
const beauteSuperieur10 = Math.max((beaute ?? 10) - 10, 0);
|
||||||
|
return total + beauteSuperieur10;
|
||||||
|
}
|
||||||
|
|
||||||
|
static levelUp(it) {
|
||||||
|
it.xpNext = RdDCarac.getCaracNextXp(it.value);
|
||||||
|
it.isLevelUp = (it.xp >= it.xpNext);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static calculSConst(constitution) {
|
||||||
|
return Number(tableCaracDerivee[Number(constitution)].sconst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static getCaracNextXp(value) {
|
||||||
|
const nextValue = Number(value) + 1;
|
||||||
|
// xp est le coût pour atteindre cette valeur, on regarde donc le coût de la valeur+1
|
||||||
|
return RdDCarac.getCaracXp(nextValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
static getCaracXp(targetValue) {
|
||||||
|
return tableCaracDerivee[targetValue]?.xp ?? 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* L’appel à la chance n’est possible que pour recommencer les jets d’actions physiques :
|
* L’appel à la chance n’est possible que pour recommencer les jets d’actions physiques :
|
||||||
* tous les jets de combat, de FORCE, d’AGILITÉ, de DEXTÉRITÉ, de Dérobée, d’APPARENCE,
|
* tous les jets de combat, de FORCE, d’AGILITÉ, de DEXTÉRITÉ, de Dérobée, d’APPARENCE,
|
||||||
@ -29,4 +97,38 @@ export class RdDCarac {
|
|||||||
static isActionPhysique(selectedCarac) {
|
static isActionPhysique(selectedCarac) {
|
||||||
return Grammar.toLowerCaseNoAccent(selectedCarac?.label).match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/);
|
return Grammar.toLowerCaseNoAccent(selectedCarac?.label).match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static computeCarac(data) {
|
||||||
|
data.carac.force.value = Math.min(data.carac.force.value, parseInt(data.carac.taille.value) + 4);
|
||||||
|
|
||||||
|
data.carac.derobee.value = Math.floor(parseInt(((21 - data.carac.taille.value)) + parseInt(data.carac.agilite.value)) / 2);
|
||||||
|
let bonusDomKey = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2);
|
||||||
|
bonusDomKey = Math.min(Math.max(bonusDomKey, 0), 32); // Clamp de securite
|
||||||
|
|
||||||
|
let tailleData = tableCaracDerivee[bonusDomKey];
|
||||||
|
data.attributs.plusdom.value = tailleData.plusdom;
|
||||||
|
|
||||||
|
data.attributs.sconst.value = RdDCarac.calculSConst(data.carac.constitution.value);
|
||||||
|
data.attributs.sust.value = tableCaracDerivee[Number(data.carac.taille.value)].sust;
|
||||||
|
|
||||||
|
data.attributs.encombrement.value = (parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2;
|
||||||
|
data.carac.melee.value = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.agilite.value)) / 2);
|
||||||
|
data.carac.tir.value = Math.floor((parseInt(data.carac.vue.value) + parseInt(data.carac.dexterite.value)) / 2);
|
||||||
|
data.carac.lancer.value = Math.floor((parseInt(data.carac.tir.value) + parseInt(data.carac.force.value)) / 2);
|
||||||
|
|
||||||
|
data.sante.vie.max = Math.ceil((parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value)) / 2);
|
||||||
|
|
||||||
|
data.sante.vie.value = Math.min(data.sante.vie.value, data.sante.vie.max)
|
||||||
|
data.sante.endurance.max = Math.max(parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value), parseInt(data.sante.vie.max) + parseInt(data.carac.volonte.value));
|
||||||
|
data.sante.endurance.value = Math.min(data.sante.endurance.value, data.sante.endurance.max);
|
||||||
|
data.sante.fatigue.max = data.sante.endurance.max * 2;
|
||||||
|
data.sante.fatigue.value = Math.min(data.sante.fatigue.value, data.sante.fatigue.max);
|
||||||
|
|
||||||
|
//Compteurs
|
||||||
|
data.reve.reve.max = data.carac.reve.value;
|
||||||
|
data.compteurs.chance.max = data.carac.chance.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
import { DeDraconique } from "./de-draconique.js";
|
import { DeDraconique } from "./de-draconique.js";
|
||||||
import { RdDItemCompetence } from "./item-competence.js";
|
import { RdDItemCompetence } from "./item-competence.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
|
import { RdDCarac } from "./rdd-carac.js";
|
||||||
import { RdDDice } from "./rdd-dice.js";
|
import { RdDDice } from "./rdd-dice.js";
|
||||||
import { RdDNameGen } from "./rdd-namegen.js";
|
import { RdDNameGen } from "./rdd-namegen.js";
|
||||||
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||||
@ -266,7 +267,7 @@ export class RdDCommands {
|
|||||||
getCoutXpCarac(msg, params) {
|
getCoutXpCarac(msg, params) {
|
||||||
if (params && params.length == 1) {
|
if (params && params.length == 1) {
|
||||||
let to = Number(params[0]);
|
let to = Number(params[0]);
|
||||||
RdDCommands._chatAnswer(msg, `Coût pour passer une caractéristique de ${to - 1} à ${to}: ${RdDUtility.getCaracXp(to)}`);
|
RdDCommands._chatAnswer(msg, `Coût pour passer une caractéristique de ${to - 1} à ${to}: ${RdDCarac.getCaracXp(to)}`);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -5,22 +5,6 @@ import { RdDCombat } from "./rdd-combat.js";
|
|||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
const limitesArchetypes = [
|
|
||||||
{ "niveau": 0, "nombreMax": 100, "nombre": 0 },
|
|
||||||
{ "niveau": 1, "nombreMax": 10, "nombre": 0 },
|
|
||||||
{ "niveau": 2, "nombreMax": 9, "nombre": 0 },
|
|
||||||
{ "niveau": 3, "nombreMax": 8, "nombre": 0 },
|
|
||||||
{ "niveau": 4, "nombreMax": 7, "nombre": 0 },
|
|
||||||
{ "niveau": 5, "nombreMax": 6, "nombre": 0 },
|
|
||||||
{ "niveau": 6, "nombreMax": 5, "nombre": 0 },
|
|
||||||
{ "niveau": 7, "nombreMax": 4, "nombre": 0 },
|
|
||||||
{ "niveau": 8, "nombreMax": 3, "nombre": 0 },
|
|
||||||
{ "niveau": 9, "nombreMax": 2, "nombre": 0 },
|
|
||||||
{ "niveau": 10, "nombreMax": 1, "nombre": 0 },
|
|
||||||
{ "niveau": 11, "nombreMax": 1, "nombre": 0 }
|
|
||||||
];
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
// This table starts at 0 -> niveau -10
|
// This table starts at 0 -> niveau -10
|
||||||
const carac_array = ["taille", "apparence", "constitution", "force", "agilite", "dexterite", "vue", "ouie", "odoratgout", "volonte", "intellect", "empathie", "reve", "chance", "melee", "tir", "lancer", "derobee"];
|
const carac_array = ["taille", "apparence", "constitution", "force", "agilite", "dexterite", "vue", "ouie", "odoratgout", "volonte", "intellect", "empathie", "reve", "chance", "melee", "tir", "lancer", "derobee"];
|
||||||
@ -28,42 +12,6 @@ const difficultesLibres = [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10];
|
|||||||
const ajustementsConditions = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10];
|
const ajustementsConditions = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10];
|
||||||
const ajustementsEncaissement = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25];
|
const ajustementsEncaissement = [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, +17, +18, +19, +20, +21, +22, +23, +24, +25];
|
||||||
|
|
||||||
const tableCaracDerivee = {
|
|
||||||
// xp: coût pour passer du niveau inférieur à ce niveau
|
|
||||||
1: { xp: 3, poids: "moins de 1kg", plusdom: -5, sconst: 0.5, sust: 0.1 },
|
|
||||||
2: { xp: 3, poids: "1-5", plusdom: -4, sconst: 0.5, sust: 0.3 },
|
|
||||||
3: { xp: 4, poids: "6-10", plusdom: -3, sconst: 1, sust: 0.5, beaute: 'hideux' },
|
|
||||||
4: { xp: 4, poids: "11-20", plusdom: -3, sconst: 1, sust: 1, beaute: 'repoussant' },
|
|
||||||
5: { xp: 5, poids: "21-30", plusdom: -2, sconst: 1, sust: 1, beaute: 'franchement très laid' },
|
|
||||||
6: { xp: 5, poids: "31-40", plusdom: -1, sconst: 2, sust: 2, beaute: 'laid' },
|
|
||||||
7: { xp: 6, poids: "41-50", plusdom: -1, sconst: 2, sust: 2, beaute: 'très désavantagé' },
|
|
||||||
8: { xp: 6, poids: "51-60", plusdom: 0, sconst: 2, sust: 2, beaute: 'désavantagé' },
|
|
||||||
9: { xp: 7, poids: "61-65", plusdom: 0, sconst: 3, sust: 2, beaute: 'pas terrible' },
|
|
||||||
10: { xp: 7, poids: "66-70", plusdom: 0, sconst: 3, sust: 3, beaute: 'commun' },
|
|
||||||
11: { xp: 8, poids: "71-75", plusdom: 0, sconst: 3, sust: 3, beaute: 'pas mal' },
|
|
||||||
12: { xp: 8, poids: "76-80", plusdom: +1, sconst: 4, sust: 3, beaute: 'avantagé' },
|
|
||||||
13: { xp: 9, poids: "81-90", plusdom: +1, sconst: 4, sust: 3, beaute: 'mignon' },
|
|
||||||
14: { xp: 9, poids: "91-100", plusdom: +2, sconst: 4, sust: 4, beaute: 'beau' },
|
|
||||||
15: { xp: 10, poids: "101-110", plusdom: +2, sconst: 5, sust: 4, beaute: 'très beau' },
|
|
||||||
16: { xp: 20, poids: "111-120", plusdom: +3, sconst: 5, sust: 4, beaute: 'éblouissant' },
|
|
||||||
17: { xp: 30, poids: "121-131", plusdom: +3, sconst: 5, sust: 5 },
|
|
||||||
18: { xp: 40, poids: "131-141", plusdom: +4, sconst: 6, sust: 5 },
|
|
||||||
19: { xp: 50, poids: "141-150", plusdom: +4, sconst: 6, sust: 5 },
|
|
||||||
20: { xp: 60, poids: "151-160", plusdom: +4, sconst: 6, sust: 6 },
|
|
||||||
21: { xp: 70, poids: "161-180", plusdom: +5, sconst: 7, sust: 6 },
|
|
||||||
22: { xp: 80, poids: "181-200", plusdom: +5, sconst: 7, sust: 7 },
|
|
||||||
23: { xp: 90, poids: "201-300", plusdom: +6, sconst: 7, sust: 8 },
|
|
||||||
24: { xp: 100, poids: "301-400", plusdom: +6, sconst: 8, sust: 9 },
|
|
||||||
25: { xp: 110, poids: "401-500", plusdom: +7, sconst: 8, sust: 10 },
|
|
||||||
26: { xp: 120, poids: "501-600", plusdom: +7, sconst: 8, sust: 11 },
|
|
||||||
27: { xp: 130, poids: "601-700", plusdom: +8, sconst: 9, sust: 12 },
|
|
||||||
28: { xp: 140, poids: "701-800", plusdom: +8, sconst: 9, sust: 13 },
|
|
||||||
29: { xp: 150, poids: "801-900", plusdom: +9, sconst: 9, sust: 14 },
|
|
||||||
30: { xp: 160, poids: "901-1000", plusdom: +9, sconst: 10, sust: 15 },
|
|
||||||
31: { xp: 170, poids: "1001-1500", plusdom: +10, sconst: 10, sust: 16 },
|
|
||||||
32: { xp: 180, poids: "1501-2000", plusdom: +11, sconst: 10, sust: 17 }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
function _buildAllSegmentsFatigue(max) {
|
function _buildAllSegmentsFatigue(max) {
|
||||||
const cycle = [5, 2, 4, 1, 3, 0];
|
const cycle = [5, 2, 4, 1, 3, 0];
|
||||||
@ -243,10 +191,6 @@ export class RdDUtility {
|
|||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static getLimitesArchetypes() {
|
|
||||||
return duplicate(limitesArchetypes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static checkNull(items) {
|
static checkNull(items) {
|
||||||
@ -312,6 +256,7 @@ export class RdDUtility {
|
|||||||
.concat(formData.data.potions)
|
.concat(formData.data.potions)
|
||||||
.concat(formData.data.herbes)
|
.concat(formData.data.herbes)
|
||||||
.concat(formData.data.ingredients);
|
.concat(formData.data.ingredients);
|
||||||
|
formData.data.competences = (formData.itemsByType.competence??[]).concat(formData.itemsByType.competencecreature??[]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -410,53 +355,6 @@ export class RdDUtility {
|
|||||||
return definitionsBlessures;
|
return definitionsBlessures;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static getCaracNextXp(value) {
|
|
||||||
const nextValue = Number(value) + 1;
|
|
||||||
// xp est le coût pour atteindre cette valeur, on regarde donc le coût de la valeur+1
|
|
||||||
return RdDUtility.getCaracXp(nextValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
static getCaracXp(targetValue) {
|
|
||||||
return tableCaracDerivee[targetValue]?.xp ?? 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static computeCarac(data) {
|
|
||||||
data.carac.force.value = Math.min(data.carac.force.value, parseInt(data.carac.taille.value) + 4);
|
|
||||||
|
|
||||||
data.carac.derobee.value = Math.floor(parseInt(((21 - data.carac.taille.value)) + parseInt(data.carac.agilite.value)) / 2);
|
|
||||||
let bonusDomKey = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2);
|
|
||||||
bonusDomKey = Math.min(Math.max(bonusDomKey, 0), 32); // Clamp de securite
|
|
||||||
|
|
||||||
let tailleData = tableCaracDerivee[bonusDomKey];
|
|
||||||
data.attributs.plusdom.value = tailleData.plusdom;
|
|
||||||
|
|
||||||
data.attributs.sconst.value = RdDUtility.calculSConst(data.carac.constitution.value);
|
|
||||||
data.attributs.sust.value = tableCaracDerivee[Number(data.carac.taille.value)].sust;
|
|
||||||
|
|
||||||
data.attributs.encombrement.value = (parseInt(data.carac.force.value) + parseInt(data.carac.taille.value)) / 2;
|
|
||||||
data.carac.melee.value = Math.floor((parseInt(data.carac.force.value) + parseInt(data.carac.agilite.value)) / 2);
|
|
||||||
data.carac.tir.value = Math.floor((parseInt(data.carac.vue.value) + parseInt(data.carac.dexterite.value)) / 2);
|
|
||||||
data.carac.lancer.value = Math.floor((parseInt(data.carac.tir.value) + parseInt(data.carac.force.value)) / 2);
|
|
||||||
|
|
||||||
data.sante.vie.max = Math.ceil((parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value)) / 2);
|
|
||||||
|
|
||||||
data.sante.vie.value = Math.min(data.sante.vie.value, data.sante.vie.max)
|
|
||||||
data.sante.endurance.max = Math.max(parseInt(data.carac.taille.value) + parseInt(data.carac.constitution.value), parseInt(data.sante.vie.max) + parseInt(data.carac.volonte.value));
|
|
||||||
data.sante.endurance.value = Math.min(data.sante.endurance.value, data.sante.endurance.max);
|
|
||||||
data.sante.fatigue.max = data.sante.endurance.max * 2;
|
|
||||||
data.sante.fatigue.value = Math.min(data.sante.fatigue.value, data.sante.fatigue.max);
|
|
||||||
|
|
||||||
//Compteurs
|
|
||||||
data.reve.reve.max = data.carac.reve.value;
|
|
||||||
data.compteurs.chance.max = data.carac.chance.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
static calculSConst(constitution) {
|
|
||||||
return Number(tableCaracDerivee[Number(constitution)].sconst);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getSegmentsFatigue(maxEnd) {
|
static getSegmentsFatigue(maxEnd) {
|
||||||
maxEnd = Math.max(maxEnd, 1);
|
maxEnd = Math.max(maxEnd, 1);
|
||||||
|
@ -15,17 +15,17 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span>{{data.blessures.resume}}</span>
|
<span>{{calc.resumeBlessures}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
{{#if data.surprise}}{{data.surprise}}! {{/if}}
|
{{#if calc.surprise}}{{calc.surprise}}! {{/if}}
|
||||||
{{#if actor.effects}}
|
{{#if actor.effects}}
|
||||||
{{#each actor.effects as |effect key|}}
|
{{#each actor.effects as |effect key|}}
|
||||||
<span id="effect-{{effect.flags.core.status.statusId}} ">
|
<span id="effect-{{effect.flags.core.status.statusId}} ">
|
||||||
<img class="button-effect-img" src="{{effect.icon}}" alt="{{effect.label}}" width="24" height="24" />
|
<img class="button-effect-img" src="{{effect.icon}}" alt="{{effect.label}}" width="24" height="24" />
|
||||||
</span>
|
</span>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
|
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@ -199,9 +199,9 @@
|
|||||||
|
|
||||||
{{!-- Equipment Tab --}}
|
{{!-- Equipment Tab --}}
|
||||||
<div class="tab items" data-group="primary" data-tab="items">
|
<div class="tab items" data-group="primary" data-tab="items">
|
||||||
<span class="item-name">Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.attributs.encombrement.value}} <b>{{data.surEncombrementMessage}}</b></span> -
|
<span class="item-name">Encombrement total/max : {{numberFormat calc.encTotal decimals=2}} / {{data.attributs.encombrement.value}} <b>{{calc.surEncombrementMessage}}</b></span> -
|
||||||
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
|
@ -75,14 +75,11 @@
|
|||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}" />
|
<img class="sheet-competence-img" src="{{comp.img}}" />
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
<span class="competence-label"><a>{{comp.name}}</a></span>
|
||||||
<input class="competence-value creature-carac" type="text"
|
<input class="competence-value creature-carac" type="text" compname="{{comp.name}}"
|
||||||
name="data.competencecreature[{{key}}].data.carac_value" compname="{{comp.name}}"
|
|
||||||
value="{{comp.data.carac_value}}" data-dtype="number" />
|
value="{{comp.data.carac_value}}" data-dtype="number" />
|
||||||
<input class="competence-value creature-niveau" type="text"
|
<input class="competence-value creature-niveau" type="text" compname="{{comp.name}}"
|
||||||
compname="{{comp.name}}"
|
|
||||||
value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" />
|
value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" />
|
||||||
<input class="competence-value creature-dommages" type="text"
|
<input class="competence-value creature-dommages" type="text" compname="{{comp.name}}"
|
||||||
name="data.competencecreature[{{key}}].data.dommages" compname="{{comp.name}}"
|
|
||||||
value="{{numberFormat comp.data.dommages decimals=0 sign=true}}" data-dtype="number" />
|
value="{{numberFormat comp.data.dommages decimals=0 sign=true}}" data-dtype="number" />
|
||||||
<div class="item-controls">
|
<div class="item-controls">
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
{{#if visible}}
|
||||||
|
{{#if data.isLevelUp}}
|
||||||
|
<li class="item flexrow xp-level-up" data-item-id="{{_id}}">
|
||||||
|
{{else}}
|
||||||
|
<li class="item flexrow list-item" data-item-id="{{_id}}">
|
||||||
|
{{/if}}
|
||||||
|
<img class="sheet-competence-img" src="{{img}}" />
|
||||||
|
{{#if data.isLevelUp}}
|
||||||
|
<span class="competence-label tooltip tooltip-nobottom">
|
||||||
|
<span class="tooltiptext ttt-xp">
|
||||||
|
Vous pouvez dépenser {{data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}
|
||||||
|
</span>
|
||||||
|
<a name={{key}}>{{name}}</a></span>
|
||||||
|
{{else}}
|
||||||
|
<span class="competence-label"><a>{{name}}</a></span>
|
||||||
|
{{/if}}
|
||||||
|
<input class="competence-value" type="text" compname="{{name}}" value="{{numberFormat data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
|
<input class="competence-xp" type="text" compname="{{name}}" value="{{numberFormat data.xp decimals=0 sign=false}}" data-dtype="number" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
|
{{#if (eq data.categorie 'draconic')}}
|
||||||
|
<input class="competence-xp-sort" type="text" compname="{{name}}" value="{{numberFormat data.xp_sort decimals=0 sign=false}}" data-dtype="number" {{#unless @root.options.editCaracComp}}disabled{{/unless}}/>
|
||||||
|
{{/if}}
|
||||||
|
<div class="item-controls">
|
||||||
|
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||||
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
{{#if @root.options.montrerArchetype}}
|
||||||
|
<input class="competence-archetype" type="text" compname="{{name}}"
|
||||||
|
value="{{numberFormat data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
|
{{/if}}
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
@ -29,7 +29,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="ctn-fatigue tooltip">
|
<label class="ctn-fatigue tooltip">
|
||||||
<span class="tooltiptext ttt-fatigue">{{{data.fatigue.html}}}</span>
|
<span class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</span>
|
||||||
Fatigue
|
Fatigue
|
||||||
<a id="fatigue-moins">-</a>
|
<a id="fatigue-moins">-</a>
|
||||||
<input class="resource-content" id="fatigue-value" type="text" name="data.sante.fatigue.value" value="{{data.sante.fatigue.value}}" data-dtype="Number" />
|
<input class="resource-content" id="fatigue-value" type="text" name="data.sante.fatigue.value" value="{{data.sante.fatigue.value}}" data-dtype="Number" />
|
||||||
@ -64,24 +64,24 @@
|
|||||||
<span id="visu-tmr"><a title="Regarder les Terres Médianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres Médianes"/></a></span>
|
<span id="visu-tmr"><a title="Regarder les Terres Médianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres Médianes"/></a></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="tooltip">Malus de fatigue : {{data.fatigue.malus}}
|
<span class="tooltip">Malus de fatigue : {{calc.fatigue.malus}}
|
||||||
<span class="tooltiptext ttt-fatigue">{{{data.fatigue.html}}}</span>
|
<span class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span>{{data.blessures.resume}}</span>
|
<span>{{calc.resumeBlessures}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span>{{data.compteurs.etat.label}}: {{data.compteurs.etat.value}}</span>
|
<span>{{data.compteurs.etat.label}}: {{data.compteurs.etat.value}}</span>
|
||||||
<span>{{data.compteurs.surenc.label}}: {{data.compteurs.surenc.value}}</span>
|
<span>{{data.compteurs.surenc.label}}: {{data.compteurs.surenc.value}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{{#if data.surprise}}{{data.surprise}}! {{/if}}
|
{{#if calc.surprise}}{{calc.surprise}}! {{/if}}
|
||||||
{{#if actor.effects}}
|
{{#if actor.effects}}
|
||||||
{{#each actor.effects as |effect key|}}
|
{{#each actor.effects as |effect key|}}
|
||||||
<span id="effect-{{effect.flags.core.status.statusId}} ">
|
<span id="effect-{{effect.flags.core.status.statusId}} ">
|
||||||
<img class="button-effect-img" src="{{effect.icon}}" alt="{{effect.label}}" width="24" height="24" />
|
<img class="button-effect-img" src="{{effect.icon}}" alt="{{effect.label}}" width="24" height="24" />
|
||||||
</span>
|
</span>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
|
<span id="enlever-tous-effets"><a>(enlever tout)</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
@ -112,8 +112,8 @@
|
|||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left flexcol">
|
<div class="flex-group-left flexcol">
|
||||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if data.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer"
|
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer"
|
||||||
>{{#if data.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
|
>{{#if options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
|
||||||
<ul class="carac-list alterne-list">
|
<ul class="carac-list alterne-list">
|
||||||
{{#each data.carac as |carac key|}}
|
{{#each data.carac as |carac key|}}
|
||||||
{{#if carac.isLevelUp}}
|
{{#if carac.isLevelUp}}
|
||||||
@ -123,7 +123,7 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if carac.isTaille}}
|
{{#if carac.isTaille}}
|
||||||
<span class="carac-label flexrow" name="data.carac.{{key}}.label">{{carac.label}}</span>
|
<span class="carac-label flexrow" name="data.carac.{{key}}.label">{{carac.label}}</span>
|
||||||
<input class="carac-value flexrow" type="text" name="data.carac.{{key}}.value" value="{{carac.value}}" data-dtype="{{carac.type}}" {{#unless @root.data.editCaracComp}}disabled{{/unless}} />
|
<input class="carac-value flexrow" type="text" name="data.carac.{{key}}.value" value="{{carac.value}}" data-dtype="{{carac.type}}" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
<label class="carac-xp flexrow"/>
|
<label class="carac-xp flexrow"/>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if carac.derivee}}
|
{{#if carac.derivee}}
|
||||||
@ -140,15 +140,15 @@
|
|||||||
{{else}}
|
{{else}}
|
||||||
<span class="carac-label flexrow tooltip tooltip-nobottom" name="data.carac.{{key}}.label"><a name={{key}}>{{carac.label}}</a></span>
|
<span class="carac-label flexrow tooltip tooltip-nobottom" name="data.carac.{{key}}.label"><a name={{key}}>{{carac.label}}</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<input class="carac-value flexrow" type="text" name="data.carac.{{key}}.value" value="{{carac.value}}" data-dtype="{{carac.type}}" {{#unless @root.data.editCaracComp}}disabled{{/unless}} />
|
<input class="carac-value flexrow" type="text" name="data.carac.{{key}}.value" value="{{carac.value}}" data-dtype="{{carac.type}}" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
<input class="carac-xp flexrow" type="text" name="data.carac.{{key}}.xp" value="{{carac.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}} />
|
<input class="carac-xp flexrow" type="text" name="data.carac.{{key}}.xp" value="{{carac.xp}}" data-dtype="number" {{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
<li class="competence flexrow">
|
<li class="competence flexrow">
|
||||||
<span class="carac-label flexrow" name="carac-total">Total Caractéristiques </span>
|
<span class="carac-label flexrow" name="carac-total">Total Caractéristiques </span>
|
||||||
<span class="competence-value flexrow" name="carac-total-value">{{data.caracSum}} </span>
|
<span class="competence-value flexrow" name="carac-total-value">{{calc.caracTotal}} </span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<ul class="carac-list">
|
<ul class="carac-list">
|
||||||
<li class="competence flexrow list-item">
|
<li class="competence flexrow list-item">
|
||||||
<span class="competence-label flexrow" name="beaute">Beauté :
|
<span class="competence-label flexrow" name="beaute">Beauté :
|
||||||
<input class="description-value" type="text" name="data.beaute" value="{{data.beaute}}" data-dtype="String" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
<input class="description-value" type="text" name="data.beaute" value="{{data.beaute}}" data-dtype="String" {{#unless @root.options.editCaracComp}}disabled{{/unless}}/>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{#each data.attributs as |attr key|}}
|
{{#each data.attributs as |attr key|}}
|
||||||
@ -217,49 +217,25 @@
|
|||||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if data.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer"
|
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer"
|
||||||
>{{#if data.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
|
>{{#if options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
|
||||||
<span><a id="show-hide-competences"><img class="small-button-container"
|
<span><a id="show-hide-competences"><img class="small-button-container"
|
||||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if data.showCompNiveauBase}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer tout"
|
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.showCompNiveauBase}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer tout"
|
||||||
>{{#if data.showCompNiveauBase}}Montrer tout{{else}}Filtrer{{/if}}</a></span>
|
>{{#if options.showCompNiveauBase}}Montrer tout{{else}}Filtrer{{/if}}</a></span>
|
||||||
<span><a id="show-hide-archetype"><img class="small-button-container"
|
<span><a id="show-hide-archetype"><img class="small-button-container"
|
||||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if data.montrerArchetype}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer l'archétype"
|
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.montrerArchetype}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer l'archétype"
|
||||||
>{{#if data.montrerArchetype}}Masquer l'archétype{{else}}Voir l'archétype{{/if}}</a></span>
|
>{{#if options.montrerArchetype}}Masquer l'archétype{{else}}Voir l'archétype{{/if}}</a></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left flexcol competence-column">
|
<div class="flex-group-left flexcol competence-column">
|
||||||
|
|
||||||
|
|
||||||
<header class="competence-header flexrow">
|
<header class="competence-header flexrow">
|
||||||
<span class="competence-title">Compétences de base</span>
|
<span class="competence-title">Compétences générales</span>
|
||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.generale as |comp key|}}
|
{{#each data.competenceByCategory.generale as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -268,174 +244,45 @@
|
|||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.particuliere as |comp key|}}
|
{{#each data.competenceByCategory.particuliere as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
<header class="competence-header flexrow">
|
|
||||||
|
<header class="competence-header flexrow">
|
||||||
<span class="competence-title">Compétences Spécialisées</span>
|
<span class="competence-title">Compétences Spécialisées</span>
|
||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.specialisee as |comp key|}}
|
{{#each data.competenceByCategory.specialisee as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex-group-left flexcol competence-column">
|
<div class="flex-group-left flexcol competence-column">
|
||||||
<header class="competence-header flexrow">
|
<header class="competence-header flexrow">
|
||||||
<span class="competence-title">Compétences de Mêlée</span>
|
<span class="competence-title">Compétences de Mêlée</span>
|
||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.melee as |comp key|}}
|
{{#each data.competenceByCategory.melee as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<header class="competence-header flexrow">
|
|
||||||
<span class="competence-title">Compétences de Tir</span>
|
|
||||||
</header>
|
|
||||||
<ul class="item-list alterne-list">
|
|
||||||
{{#each data.competenceByCategory.tir as |comp key|}}
|
|
||||||
{{#if data.showCompetence}}
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<header class="competence-header flexrow">
|
<header class="competence-header flexrow">
|
||||||
<span class="competence-title">Compétences de Lancer</span>
|
<span class="competence-title">Compétences de Tir</span>
|
||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.lancer as |comp key|}}
|
{{#each data.competenceByCategory.tir as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
{{/each}}
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
</ul>
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
<header class="competence-header flexrow">
|
||||||
{{/if}}
|
<span class="competence-title">Compétences de Lancer</span>
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
</header>
|
||||||
{{#if comp.data.isLevelUp}}
|
<ul class="item-list alterne-list">
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
{{#each data.competenceByCategory.lancer as |comp key|}}
|
||||||
<span class="tooltiptext ttt-xp">
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number"{{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -444,33 +291,7 @@
|
|||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.connaissance as |comp key|}}
|
{{#each data.competenceByCategory.connaissance as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -479,44 +300,17 @@
|
|||||||
</header>
|
</header>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each data.competenceByCategory.draconic as |comp key|}}
|
{{#each data.competenceByCategory.draconic as |comp key|}}
|
||||||
{{#if data.showCompetence}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<li class="item flexrow xp-level-up" data-item-id="{{comp._id}}">
|
|
||||||
{{else}}
|
|
||||||
<li class="item flexrow list-item" data-item-id="{{comp._id}}">
|
|
||||||
{{/if}}
|
|
||||||
<img class="sheet-competence-img" src="{{comp.img}}"/>
|
|
||||||
{{#if comp.data.isLevelUp}}
|
|
||||||
<span class="competence-label tooltip tooltip-nobottom">
|
|
||||||
<span class="tooltiptext ttt-xp">
|
|
||||||
Vous pouvez dépenser {{comp.data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{comp.name}}
|
|
||||||
</span>
|
|
||||||
<a name={{key}}>{{comp.name}}</a></span>
|
|
||||||
{{else}}
|
|
||||||
<span class="competence-label"><a>{{comp.name}}</a></span>
|
|
||||||
{{/if}}
|
|
||||||
<input class="competence-value" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp" type="text" compname="{{comp.name}}" value="{{comp.data.xp}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<input class="competence-xp-sort" type="text" compname="{{comp.name}}" value="{{comp.data.xp_sort}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
<div class="item-controls">
|
|
||||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
{{#if ../data.montrerArchetype}}
|
|
||||||
<input class="competence-archetype" type="text" compname="{{comp.name}}" value="{{numberFormat comp.data.niveau_archetype decimals=0 sign=true}}" data-dtype="number" {{#unless @root.data.editCaracComp}}disabled{{/unless}}/>
|
|
||||||
{{/if}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
<div>
|
<div>
|
||||||
<ul class="item-list">
|
<ul class="item-list">
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<span class="generic-label">Total XP compétences</span>
|
<span class="generic-label">Total XP compétences</span>
|
||||||
<span class="competence-value">{{data.competenceXPTotal}}</span>
|
<span class="competence-value">{{calc.competenceXPTotal}}</span>
|
||||||
</li>
|
</li>
|
||||||
{{#if data.montrerArchetype}}
|
{{#if options.montrerArchetype}}
|
||||||
{{#each data.comptageArchetype as |archetype key|}}
|
{{#each calc.comptageArchetype as |archetype key|}}
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Archetype {{archetype.niveau}} : {{archetype.nombre}} / {{archetype.nombreMax}}</label>
|
<label class="generic-label">Archetype {{archetype.niveau}} : {{archetype.nombre}} / {{archetype.nombreMax}}</label>
|
||||||
</li>
|
</li>
|
||||||
@ -749,7 +543,7 @@
|
|||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<span class="competence-label">Position en TMR :</span>
|
<span class="competence-label">Position en TMR :</span>
|
||||||
<span>
|
<span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<input class="competence-value" type="text" name="data.reve.tmrpos.coord" value="{{data.reve.tmrpos.coord}}" data-dtype="String"/>
|
<input class="competence-value" type="text" name="data.reve.tmrpos.coord" value="{{data.reve.tmrpos.coord}}" data-dtype="String"/>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{data.reve.tmrpos.coord}}
|
{{data.reve.tmrpos.coord}}
|
||||||
@ -759,7 +553,7 @@
|
|||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<span class="competence-label">Seuil de Rêve :</span>
|
<span class="competence-label">Seuil de Rêve :</span>
|
||||||
<span>
|
<span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<input class="seuil-reve-value" type="text" name="data.reve.seuil.value" value="{{data.reve.seuil.value}}" data-dtype="Number"/>
|
<input class="seuil-reve-value" type="text" name="data.reve.seuil.value" value="{{data.reve.seuil.value}}" data-dtype="Number"/>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{data.reve.seuil.value}}
|
{{data.reve.seuil.value}}
|
||||||
@ -769,7 +563,7 @@
|
|||||||
<li class="item flexrow" >
|
<li class="item flexrow" >
|
||||||
<span class="competence-label">Refoulement : </span>
|
<span class="competence-label">Refoulement : </span>
|
||||||
<span>
|
<span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<input class="competence-value" type="text" name="data.reve.refoulement.value" value="{{data.reve.refoulement.value}}" data-dtype="Number"/>
|
<input class="competence-value" type="text" name="data.reve.refoulement.value" value="{{data.reve.refoulement.value}}" data-dtype="Number"/>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{data.reve.refoulement.value}}
|
{{data.reve.refoulement.value}}
|
||||||
@ -920,12 +714,12 @@
|
|||||||
|
|
||||||
<span class="item-name"><h4>Equipement porté</h4></span>
|
<span class="item-name"><h4>Equipement porté</h4></span>
|
||||||
<div>
|
<div>
|
||||||
<span class="item-name">Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.attributs.encombrement.value}} <b>{{data.surEncombrementMessage}}</b></span> -
|
<span class="item-name">Encombrement total/max : {{numberFormat calc.encTotal decimals=2}} / {{data.attributs.encombrement.value}} <b>{{calc.surEncombrementMessage}}</b></span> -
|
||||||
<span class="item-name">Estimation de l'équipement : {{numberFormat data.prixTotalEquipement decimals=2}} Sols</span>
|
<span class="item-name">Estimation de l'équipement : {{numberFormat calc.prixTotalEquipement decimals=2}} Sols</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -68,9 +68,9 @@
|
|||||||
|
|
||||||
{{!-- Equipment Tab --}}
|
{{!-- Equipment Tab --}}
|
||||||
<div class="tab items" data-group="primary" data-tab="items">
|
<div class="tab items" data-group="primary" data-tab="items">
|
||||||
<span class="item-name">Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.capacite_encombrement}} <b>{{data.surEncombrementMessage}}</b></span> -
|
<span class="item-name">Encombrement total/max : {{numberFormat calc.encTotal decimals=2}} / {{data.capacite_encombrement}} <b>{{calc.surEncombrementMessage}}</b></span> -
|
||||||
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
<span class="item-name"><a id="creer-un-objet">Créer un objet</a></span>
|
||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{{#if data.isGM}}
|
{{#if options.isGM}}
|
||||||
<h3>Notes du MJ : </h3>
|
<h3>Notes du MJ : </h3>
|
||||||
<div class="form-group editor">
|
<div class="form-group editor">
|
||||||
{{editor content=data.notesmj target="data.notesmj" button=true owner=owner editable=editable}}
|
{{editor content=data.notesmj target="data.notesmj" button=true owner=owner editable=editable}}
|
||||||
|
Loading…
Reference in New Issue
Block a user