Compare commits
32 Commits
foundryvtt
...
v1.5
Author | SHA1 | Date | |
---|---|---|---|
773b3756a6 | |||
d57cdc2af4 | |||
|
f2d1879135 | ||
ea7132468d | |||
2391fbc4bc | |||
|
0d2bb2d9a3 | ||
7198eb621d | |||
6271c75508 | |||
cd7cc8eeef | |||
|
bb3bc0ea77 | ||
|
f348f3dc3f | ||
|
dbf9f5e908 | ||
|
e4da124579 | ||
|
6e361a5531 | ||
|
049b23c666 | ||
|
3ff59d1f07 | ||
8c0fbf15b6 | |||
d4fddf8600 | |||
|
4b1862fa48 | ||
|
82115ed8d7 | ||
3359492f13 | |||
676e6739a6 | |||
|
872d3fff31 | ||
9c71827baa | |||
fc9ef06e7b | |||
|
9e63706de6 | ||
3958b1bdc2 | |||
6d6843223b | |||
|
46f5cb67f6 | ||
|
d51243d74f | ||
|
34cc671f12 | ||
|
16ce6a58dd |
@ -37,8 +37,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = Misc.data(this.object);
|
||||
|
||||
//this.actor.checkMonnaiePresence(this.actor.data.items); // Always check
|
||||
this.timerRecherche = undefined;
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@ -78,8 +77,8 @@ export class RdDActorSheet extends ActorSheet {
|
||||
};
|
||||
|
||||
formData.competences.forEach(item => {
|
||||
item.visible = this.options.cherchercompetence
|
||||
? RdDItemCompetence.nomContientTexte(item, this.options.cherchercompetence)
|
||||
item.visible = this.options.recherche
|
||||
? RdDItemCompetence.nomContientTexte(item, this.options.recherche.text)
|
||||
: (!this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(item));
|
||||
RdDItemCompetence.levelUp(item, formData.data.compteurs.experience.value);
|
||||
});
|
||||
@ -424,12 +423,31 @@ export class RdDActorSheet extends ActorSheet {
|
||||
this.options.editCaracComp = !this.options.editCaracComp;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.cherchercompetence').change(async event => {
|
||||
this.options.cherchercompetence = event.currentTarget.value;
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
html.find('.recherche')
|
||||
.each((index, field) => {
|
||||
if (this.options.recherche) {
|
||||
field.focus();
|
||||
field.setSelectionRange(this.options.recherche.start, this.options.recherche.end);
|
||||
}
|
||||
})
|
||||
.keyup(async event => {
|
||||
const nouvelleRecherche = this._optionRecherche(event.currentTarget);
|
||||
if (this.options.recherche?.text != nouvelleRecherche?.text){
|
||||
this.options.recherche = nouvelleRecherche;
|
||||
if (this.timerRecherche) {
|
||||
clearTimeout(this.timerRecherche);
|
||||
}
|
||||
this.timerRecherche = setTimeout(() => {
|
||||
this.timerRecherche = undefined;
|
||||
this.render(true);
|
||||
}, 500);
|
||||
}
|
||||
})
|
||||
.change(async event =>
|
||||
this.options.recherche = this._optionRecherche(event.currentTarget)
|
||||
);
|
||||
html.find('.vue-detaillee').click(async event => {
|
||||
console.log("CONTROLS", this.options.vueDetaillee)
|
||||
this.options.vueDetaillee = !this.options.vueDetaillee;
|
||||
this.render(true);
|
||||
});
|
||||
@ -515,6 +533,17 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
}
|
||||
|
||||
_optionRecherche(target) {
|
||||
if (!target.value?.length){
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
text: target.value,
|
||||
start: target.selectionStart,
|
||||
end: target.selectionEnd,
|
||||
};
|
||||
}
|
||||
|
||||
_getEventArmeCombat(event) {
|
||||
const li = $(event.currentTarget)?.parents(".item");
|
||||
let armeName = li.data("arme-name");
|
||||
|
@ -33,7 +33,8 @@ import { RollDataAjustements } from "./rolldata-ajustements.js";
|
||||
import { DialogItemAchat } from "./dialog-item-achat.js";
|
||||
import { RdDItem } from "./item.js";
|
||||
import { RdDPossession } from "./rdd-possession.js";
|
||||
import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/**
|
||||
@ -98,7 +99,6 @@ export class RdDActor extends Actor {
|
||||
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
||||
*
|
||||
*/
|
||||
|
||||
static async create(actorData, options) {
|
||||
// Case of compendium global import
|
||||
if (actorData instanceof Array) {
|
||||
@ -135,13 +135,6 @@ export class RdDActor extends Actor {
|
||||
this.encTotal = 0;
|
||||
this.prixTotalEquipement = 0;
|
||||
|
||||
/*
|
||||
// Auto-resize token
|
||||
if (this.isToken) {
|
||||
let tokenSize = actorData.data.carac.taille.value/10;
|
||||
this.token.update({height: tokenSize, width: tokenSize } );
|
||||
}*/
|
||||
|
||||
// Make separate methods for each Actor type (character, npc, etc.) to keep
|
||||
// things organized.
|
||||
if (actorData.type === 'personnage') this._prepareCharacterData(actorData);
|
||||
@ -247,7 +240,7 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getForce() {
|
||||
if (this.isEntiteCauchemar()) {
|
||||
if (this.isEntite()) {
|
||||
return Misc.toInt(Misc.templateData(this).carac.reve?.value);
|
||||
}
|
||||
return Misc.toInt(Misc.templateData(this).carac.force?.value);
|
||||
@ -620,7 +613,10 @@ export class RdDActor extends Actor {
|
||||
content: "Remise à neuf de " + this.name
|
||||
};
|
||||
const actorData = Misc.data(this);
|
||||
if (this.isEntiteCauchemar()) {
|
||||
if (this.isEntite([ENTITE_NONINCARNE])) {
|
||||
return;
|
||||
}
|
||||
if (this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
|
||||
await this.santeIncDec("endurance", actorData.data.sante.endurance.max - actorData.data.sante.endurance.value);
|
||||
}
|
||||
else {
|
||||
@ -1221,21 +1217,39 @@ export class RdDActor extends Actor {
|
||||
if (srcId != destId && itemId != destId) { // déplacement de l'objet
|
||||
const dest = this.getObjet(destId);
|
||||
const src = this.getObjet(srcId);
|
||||
// changer de conteneur
|
||||
if (this.conteneurPeutContenir(dest, item)) {
|
||||
await this.enleverDeConteneur(item, src, params.onEnleverConteneur);
|
||||
await this.ajouterDansConteneur(item, dest, params.onAjouterDansConteneur);
|
||||
}
|
||||
else if (dest?.isEquipementSimilaire(item)) {
|
||||
if (dest?.isEquipementSimilaire(item)) {
|
||||
await this.regrouperEquipementsSimilaires(item, dest);
|
||||
result = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
const cible = this.getContenantOrParent(dest);
|
||||
// changer de conteneur
|
||||
if (cible == undefined) {
|
||||
await this.enleverDeConteneur(item, src, params.onEnleverConteneur);
|
||||
}
|
||||
else if (this.conteneurPeutContenir(cible, item)) {
|
||||
await this.enleverDeConteneur(item, src, params.onEnleverConteneur);
|
||||
await this.ajouterDansConteneur(item, cible, params.onAjouterDansConteneur);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
await this.computeEncombrementTotalEtMalusArmure();
|
||||
return result;
|
||||
}
|
||||
|
||||
getContenantOrParent(dest) {
|
||||
if (!dest || dest.isConteneur()) {
|
||||
return dest;
|
||||
}
|
||||
return this.getContenant(dest);
|
||||
}
|
||||
|
||||
getContenant(item) {
|
||||
return this.items.find(it => it.isConteneur() && Misc.templateData(it).contenu.includes(item.id));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
conteneurPeutContenir(dest, item) {
|
||||
if (!dest) {
|
||||
@ -1630,7 +1644,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async setSonne(sonne = true) {
|
||||
if (this.isEntiteCauchemar()) {
|
||||
if (this.isEntite()) {
|
||||
return;
|
||||
}
|
||||
if (!game.combat && sonne) {
|
||||
@ -1642,7 +1656,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSConst() {
|
||||
if (this.isEntiteCauchemar()) {
|
||||
if (this.isEntite()) {
|
||||
return 0;
|
||||
}
|
||||
return RdDCarac.calculSConst(Misc.templateData(this).carac.constitution.value);
|
||||
@ -1759,7 +1773,7 @@ export class RdDActor extends Actor {
|
||||
result.newValue = Math.max(minValue, Math.min(compteur.value + inc, compteur.max));
|
||||
//console.log("New value ", inc, minValue, result.newValue);
|
||||
let fatigue = 0;
|
||||
if (name == "endurance" && !this.isEntiteCauchemar()) {
|
||||
if (name == "endurance" && !this.isEntite()) {
|
||||
if (result.newValue == 0 && inc < 0 && !isCritique) { // perte endurance et endurance devient 0 (sauf critique) -> -1 vie
|
||||
sante.vie.value--;
|
||||
result.perteVie = true;
|
||||
@ -1796,7 +1810,7 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
isDead() {
|
||||
return !this.isEntiteCauchemar() && Misc.templateData(this).sante.vie.value < -this.getSConst()
|
||||
return !this.isEntite() && Misc.templateData(this).sante.vie.value < -this.getSConst()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -3150,7 +3164,11 @@ export class RdDActor extends Actor {
|
||||
case 'chance-actuelle': case 'chance actuelle':
|
||||
return carac.chance;
|
||||
}
|
||||
let entry = Misc.findFirstLike(name, Object.entries(carac), { mapper: it => it[1].label, description: 'caractéristique' });
|
||||
const caracList = Object.entries(carac);
|
||||
let entry = Misc.findFirstLike(name, caracList, { mapper: it => it[0], description: 'caractéristique' });
|
||||
if (!entry || entry.length ==0) {
|
||||
entry = Misc.findFirstLike(name, caracList, { mapper: it => it[1].label, description: 'caractéristique' });
|
||||
}
|
||||
return entry && entry.length > 0 ? carac[entry[0]] : undefined;
|
||||
}
|
||||
|
||||
@ -3355,7 +3373,7 @@ export class RdDActor extends Actor {
|
||||
let encaissement = await this.jetEncaissement(rollData);
|
||||
|
||||
this.ajouterBlessure(encaissement); // Will upate the result table
|
||||
const perteVie = this.isEntiteCauchemar()
|
||||
const perteVie = this.isEntite()
|
||||
? { newValue: 0 }
|
||||
: await this.santeIncDec("vie", - encaissement.vie);
|
||||
const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance, encaissement.critiques > 0);
|
||||
@ -3370,7 +3388,7 @@ export class RdDActor extends Actor {
|
||||
sonne: perteEndurance.sonne,
|
||||
jetEndurance: perteEndurance.jetEndurance,
|
||||
endurance: santeOrig.endurance.value - perteEndurance.newValue,
|
||||
vie: this.isEntiteCauchemar() ? 0 : (santeOrig.vie.value - perteVie.newValue),
|
||||
vie: this.isEntite() ? 0 : (santeOrig.vie.value - perteVie.newValue),
|
||||
show: defenderRoll?.show ?? {}
|
||||
});
|
||||
|
||||
@ -3560,8 +3578,8 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async accorder(entite, when = 'avant-encaissement') {
|
||||
if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
|
||||
|| !entite.isEntiteCauchemar()
|
||||
|| entite.isEntiteCauchemarAccordee(this)) {
|
||||
|| !entite.isEntite([ENTITE_INCARNE])
|
||||
|| entite.isEntiteAccordee(this)) {
|
||||
return true;
|
||||
}
|
||||
const tplData = Misc.templateData(this);
|
||||
@ -3585,29 +3603,32 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
isEntiteCauchemar() {
|
||||
return this.data.type == 'entite';
|
||||
isEntite(typeentite = [] ) {
|
||||
return this.data.type == 'entite' && (typeentite.length == 0 || typeentite.includes(this.data.data.definition.typeentite));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
isEntiteCauchemarAccordee(attaquant) {
|
||||
if (!this.isEntiteCauchemar()) { return true; }
|
||||
isEntiteAccordee(attaquant) {
|
||||
if (!this.isEntite([ENTITE_INCARNE])) {
|
||||
return true;
|
||||
}
|
||||
let resonnance = Misc.templateData(this).sante.resonnance;
|
||||
return (resonnance.actors.find(it => it == attaquant._id));
|
||||
console.log("RESONN", resonnance)
|
||||
return (resonnance.actors.find(it => it == attaquant.id));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async setEntiteReveAccordee(attaquant) {
|
||||
if (!this.isEntiteCauchemar()) {
|
||||
if (!this.isEntite([ENTITE_INCARNE])) {
|
||||
ui.notifications.error("Impossible de s'accorder à " + this.name + ": ce n'est pas une entite de cauchemer/rêve");
|
||||
return;
|
||||
}
|
||||
let resonnance = duplicate(Misc.templateData(this).sante.resonnance);
|
||||
if (resonnance.actors.find(it => it == attaquant._id)) {
|
||||
if (resonnance.actors.find(it => it == attaquant.id)) {
|
||||
// déjà accordé
|
||||
return;
|
||||
}
|
||||
resonnance.actors.push(attaquant._id);
|
||||
resonnance.actors.push(attaquant.id);
|
||||
await this.update({ "data.sante.resonnance": resonnance });
|
||||
return;
|
||||
}
|
||||
@ -4161,7 +4182,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async setStatusEffect(label, status, updates = {}) {
|
||||
if (this.isEntiteCauchemar() || this.data.type == 'vehicule') {
|
||||
if (this.isEntite() || this.data.type == 'vehicule') {
|
||||
return;
|
||||
}
|
||||
console.log("setStatusEffect", label, status, updates)
|
||||
|
@ -3,3 +3,7 @@ export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon';
|
||||
|
||||
export const HIDE_DICE = 'hide';
|
||||
export const SHOW_DICE = 'show';
|
||||
|
||||
export const ENTITE_INCARNE = 'incarne';
|
||||
export const ENTITE_NONINCARNE = 'nonincarne';
|
||||
export const ENTITE_BLURETTE = 'blurette';
|
||||
|
@ -55,7 +55,7 @@ export class DialogItemAchat extends Dialog {
|
||||
|
||||
static prepareVenteData(buttonAcheter, vendeurId, vendeur, acheteur) {
|
||||
const jsondata = buttonAcheter.attributes['data-jsondata']?.value;
|
||||
const prixLot = buttonAcheter.attributes['data-prixLot']?.value ?? 0;
|
||||
const prixLot = parseInt(buttonAcheter.attributes['data-prixLot']?.value ?? 0);
|
||||
let venteData = {
|
||||
item: JSON.parse(jsondata),
|
||||
vendeurId: vendeurId,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ChatUtility } from "./chat-utility.js";
|
||||
import { HIDE_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { ENTITE_INCARNE, ENTITE_NONINCARNE, HIDE_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { Grammar } from "./grammar.js";
|
||||
import { RdDItemArme } from "./item-arme.js";
|
||||
import { RdDItemCompetence } from "./item-competence.js";
|
||||
@ -100,14 +100,14 @@ export class RdDCombatManager extends Combat {
|
||||
const carac = combatant.actor.data.data.carac[competence.data.defaut_carac].value;
|
||||
const niveau = competence.data.niveau;
|
||||
const bonusEcaille = (armeCombat?.data.magique) ? armeCombat.data.ecaille_efficacite : 0;
|
||||
rollFormula = RdDCombatManager.formuleInitiative(2, carac, niveau, bonusEcaille);
|
||||
rollFormula = RdDCombatManager.formuleInitiative(2, carac, niveau, bonusEcaille);
|
||||
}
|
||||
}
|
||||
}
|
||||
//console.log("Combatat", c);
|
||||
const roll = combatant.getInitiativeRoll(rollFormula);
|
||||
if ( !roll.total) {
|
||||
roll.evaluate( {async: false});
|
||||
if (!roll.total) {
|
||||
roll.evaluate({ async: false });
|
||||
}
|
||||
if (roll.total <= 0) roll.total = 0.00;
|
||||
console.log("Compute init for", rollFormula, roll.total, combatant);
|
||||
@ -187,7 +187,7 @@ export class RdDCombatManager extends Combat {
|
||||
action.data.dommagesReels = Number(tableauDegats[0]);
|
||||
arme2main.data.dommagesReels = Number(tableauDegats[1]);
|
||||
}
|
||||
else{
|
||||
else {
|
||||
ui.notifications.info("Les dommages de l'arme à 1/2 mains " + action.name + " ne sont pas corrects (ie sous la forme X/Y)");
|
||||
}
|
||||
}
|
||||
@ -197,24 +197,23 @@ export class RdDCombatManager extends Combat {
|
||||
}
|
||||
|
||||
static listActionsPossessions(actor) {
|
||||
return RdDCombatManager._indexActions(actor.getPossessions().map(p =>
|
||||
{
|
||||
return {
|
||||
name: p.name,
|
||||
action: 'conjurer',
|
||||
data: {
|
||||
competence: p.name,
|
||||
possessionid: p.data.data.possessionid,
|
||||
}
|
||||
return RdDCombatManager._indexActions(actor.getPossessions().map(p => {
|
||||
return {
|
||||
name: p.name,
|
||||
action: 'conjurer',
|
||||
data: {
|
||||
competence: p.name,
|
||||
possessionid: p.data.data.possessionid,
|
||||
}
|
||||
}));
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static listActionsCombat(combatant) {
|
||||
const actor = combatant.actor;
|
||||
let actions = RdDCombatManager.listActionsPossessions(actor);
|
||||
if (actions.length>0) {
|
||||
if (actions.length > 0) {
|
||||
return actions;
|
||||
}
|
||||
let items = actor.data.items;
|
||||
@ -320,7 +319,7 @@ export class RdDCombatManager extends Combat {
|
||||
initOffset = 10;
|
||||
caracForInit = combatant.actor.getReveActuel();
|
||||
initInfo = "Possession"
|
||||
} else if (action.name == 'autre') {
|
||||
} else if (action.action == 'autre') {
|
||||
initOffset = 2;
|
||||
initInfo = "Autre Action"
|
||||
} else if (action.action == 'haut-reve') {
|
||||
@ -329,19 +328,19 @@ export class RdDCombatManager extends Combat {
|
||||
} else {
|
||||
compData = Misc.data(RdDItemCompetence.findCompetence(combatant.actor.data.items, action.data.competence));
|
||||
compNiveau = compData.data.niveau;
|
||||
initInfo = action.name + " / " + action.data.competence;
|
||||
|
||||
if (combatant.actor.data.type == 'creature' || combatant.actor.data.type == 'entite') {
|
||||
caracForInit = compData.data.carac_value;
|
||||
if (compData.data.categorie == "lancer") {
|
||||
initOffset = 7;
|
||||
}
|
||||
else {
|
||||
initOffset = 5;
|
||||
}
|
||||
} else {
|
||||
caracForInit = Misc.data(combatant.actor).data.carac[compData.data.defaut_carac].value;
|
||||
initOffset = RdDCombatManager._baseInitOffset(compData.data.categorie, action);
|
||||
initInfo = action.name + " / " + action.data.competence;
|
||||
|
||||
if (combatant.actor.data.type == 'creature' || combatant.actor.data.type == 'entite') {
|
||||
caracForInit = compData.data.carac_value;
|
||||
if (compData.data.categorie == "lancer") {
|
||||
initOffset = 7;
|
||||
}
|
||||
else {
|
||||
initOffset = 5;
|
||||
}
|
||||
} else {
|
||||
caracForInit = Misc.data(combatant.actor).data.carac[compData.data.defaut_carac].value;
|
||||
initOffset = RdDCombatManager._baseInitOffset(compData.data.categorie, action);
|
||||
}
|
||||
}
|
||||
|
||||
@ -372,7 +371,7 @@ export class RdDCombatManager extends Combat {
|
||||
static displayInitiativeMenu(html, combatantId) {
|
||||
console.log("Combatant ; ", combatantId);
|
||||
const combatant = game.combat.combatants.get(combatantId);
|
||||
if (! (combatant?.actor) ) {
|
||||
if (!(combatant?.actor)) {
|
||||
ui.notifications.warn(`Le combatant ${combatant.name ?? combatantId} n'est pas associé à un acteur, impossible de déterminer ses actions de combat!`)
|
||||
return;
|
||||
}
|
||||
@ -457,7 +456,7 @@ export class RdDCombat {
|
||||
else {
|
||||
const defender = target?.actor;
|
||||
const defenderTokenId = target?.data._id;
|
||||
if ( defender.type == 'entite' && defender.data.data.definition.typeentite == 'nonincarne') {
|
||||
if (defender.type == 'entite' && defender.data.data.definition.typeentite == ENTITE_NONINCARNE) {
|
||||
ui.notifications.warn("Vous ne pouvez pas cibler une entité non incarnée !!!!");
|
||||
} else {
|
||||
return this.create(attacker, defender, defenderTokenId, target)
|
||||
@ -567,7 +566,7 @@ export class RdDCombat {
|
||||
async onEvent(button, event) {
|
||||
const chatMessage = ChatUtility.getChatMessage(event);
|
||||
const defenderRoll = ChatUtility.getMessageData(chatMessage, 'defender-roll');
|
||||
const attackerRoll = defenderRoll?.attackerRoll ?? ChatUtility.getMessageData(chatMessage, 'attacker-roll') ;
|
||||
const attackerRoll = defenderRoll?.attackerRoll ?? ChatUtility.getMessageData(chatMessage, 'attacker-roll');
|
||||
console.log('RdDCombat', attackerRoll, defenderRoll);
|
||||
const defenderTokenId = event.currentTarget.attributes['data-defenderTokenId']?.value;
|
||||
|
||||
@ -760,7 +759,7 @@ export class RdDCombat {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onAttaqueParticuliere(rollData) {
|
||||
|
||||
|
||||
const isMeleeDiffNegative = (rollData.competence.type == 'competencecreature' || rollData.selectedCarac.label == "Mêlée") && rollData.diffLibre < 0;
|
||||
// force toujours, sauf empoignade
|
||||
// finesse seulement en mélée, pour l'empoignade, ou si la difficulté libre est de -1 minimum
|
||||
@ -778,7 +777,7 @@ export class RdDCombat {
|
||||
else if (!isForce && !isFinesse && isRapide) {
|
||||
return await this.choixParticuliere(rollData, "rapidite");
|
||||
}
|
||||
|
||||
|
||||
const choixParticuliere = await ChatMessage.create({
|
||||
alias: this.attacker.name,
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.attacker.name),
|
||||
@ -799,7 +798,7 @@ export class RdDCombat {
|
||||
async _onAttaqueNormale(attackerRoll) {
|
||||
console.log("RdDCombat.onAttaqueNormale >>>", attackerRoll);
|
||||
|
||||
attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker.getBonusDegat(), this.defender.isEntiteCauchemar());
|
||||
attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker.getBonusDegat(), this.defender.isEntite());
|
||||
let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
|
||||
attackerRoll.show = {
|
||||
cible: this.target ? this.defender.data.name : 'la cible',
|
||||
@ -817,7 +816,7 @@ export class RdDCombat {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
isPossession( attackerRoll) {
|
||||
isPossession(attackerRoll) {
|
||||
return attackerRoll.selectedCarac.label.toLowerCase() == 'possession';
|
||||
}
|
||||
|
||||
@ -962,9 +961,8 @@ export class RdDCombat {
|
||||
const arme = this.defender.getArmeParade(armeParadeId);
|
||||
console.log("RdDCombat.parade >>>", attackerRoll, armeParadeId, arme);
|
||||
const competence = Misc.templateData(arme)?.competence;
|
||||
if (competence == undefined)
|
||||
{
|
||||
console.error("Pas de compétence de parade associée à ", arme) ;
|
||||
if (competence == undefined) {
|
||||
console.error("Pas de compétence de parade associée à ", arme);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1247,10 +1245,12 @@ export class RdDCombat {
|
||||
/* -------------------------------------------- */
|
||||
/* retourne true si on peut continuer, false si on ne peut pas continuer */
|
||||
async accorderEntite(when = 'avant-encaissement') {
|
||||
console.log("TETETET", game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar"), this.defender.isEntite([ENTITE_INCARNE]), this.defender.isEntiteAccordee(this.attacker))
|
||||
|
||||
if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
|
||||
|| this.defender == undefined
|
||||
|| !this.defender.isEntiteCauchemar()
|
||||
|| this.defender.isEntiteCauchemarAccordee(this.attacker)) {
|
||||
|| !this.defender.isEntite([ENTITE_INCARNE])
|
||||
|| this.defender.isEntiteAccordee(this.attacker)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,19 +1,29 @@
|
||||
import { RdDActor } from "./actor.js";
|
||||
import { Misc } from "./misc.js";
|
||||
import { RdDDice } from "./rdd-dice.js";
|
||||
|
||||
const words = [ 'pore', 'pre', 'flor', 'lane', 'turlu', 'pin', 'a', 'alph', 'i', 'onse', 'iane', 'ane', 'zach', 'arri', 'ba', 'bo', 'bi',
|
||||
'alta', 'par', 'pir', 'zor', 'zir', 'de', 'pol', 'tran', 'no', 'la', 'al' , 'pul', 'one', 'ner', 'nur', 'mac', 'mery',
|
||||
'cat', 'do', 'di', 'der', 'er', 'el', 'far', 'fer', 'go', 'guer', 'hot', 'jor', 'jar', 'ji', 'kri', 'ket', 'lor', 'hur',
|
||||
'lar', 'lir', 'lu', 'pot', 'pro', 'pra', 'pit', 'qua', 'qui', 're', 'ral', 'sal', 'sen', 'ted', 'to', 'ta', 'lars', 'ver',
|
||||
'vin', 'ov', 'wal', 'ry', 'ly', '' ];
|
||||
const words = ['pore', 'pre', 'flor', 'lane', 'turlu', 'pin', 'a', 'alph', 'i', 'onse', 'iane', 'ane', 'zach', 'arri', 'ba', 'bo', 'bi',
|
||||
'alta', 'par', 'pir', 'zor', 'zir', 'de', 'pol', 'tran', 'no', 'la', 'al', 'pul', 'one', 'ner', 'nur', 'mac', 'mery',
|
||||
'cat', 'do', 'di', 'der', 'er', 'el', 'far', 'fer', 'go', 'guer', 'hot', 'jor', 'jar', 'ji', 'kri', 'ket', 'lor', 'hur',
|
||||
'lar', 'lir', 'lu', 'pot', 'pro', 'pra', 'pit', 'qua', 'qui', 're', 'ral', 'sal', 'sen', 'ted', 'to', 'ta', 'lars', 'ver',
|
||||
'vin', 'ov', 'wal', 'ry', 'ly', ''];
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDNameGen {
|
||||
|
||||
static async getName( msg, params ) {
|
||||
let name = Misc.upperFirst( await RdDDice.rollOneOf(words) + await RdDDice.rollOneOf(words) )
|
||||
//console.log(name);
|
||||
ChatMessage.create( { content: `Nom : ${name}`, whisper: ChatMessage.getWhisperRecipients("GM") } );
|
||||
static async getName(msg, params) {
|
||||
const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-command-nom.html`, {
|
||||
nom: Misc.upperFirst(await RdDDice.rollOneOf(words) + await RdDDice.rollOneOf(words))
|
||||
});
|
||||
ChatMessage.create({ content: html, whisper: ChatMessage.getWhisperRecipients("GM") });
|
||||
}
|
||||
|
||||
static async onCreerActeur(event) {
|
||||
const button = event.currentTarget;
|
||||
await RdDActor.create({
|
||||
name: button.attributes['data-nom'].value,
|
||||
type: button.attributes['data-type'].value
|
||||
},
|
||||
{renderSheet: true});
|
||||
}
|
||||
}
|
@ -158,6 +158,7 @@ export class RdDResolutionTable {
|
||||
if (difficulte < -10) {
|
||||
return duplicate(levelDown.find(levelData => levelData.level == difficulte));
|
||||
}
|
||||
console.log("DATA :", caracValue, difficulte)
|
||||
return duplicate(RdDResolutionTable.resolutionTable[caracValue][difficulte + 10]);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE } from "./constants.js";
|
||||
|
||||
/**
|
||||
* Extend the base Dialog entity by defining a custom window to perform roll.
|
||||
* @extends {Dialog}
|
||||
@ -7,15 +9,19 @@ export class RdDEncaisser extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
constructor(html, actor) {
|
||||
// Common conf
|
||||
const buttonsCreatures = {
|
||||
"mortel": { label: "Mortel", callback: html => this.performEncaisser("mortel") },
|
||||
"non-mortel": { label: "Non-mortel", callback: html => this.performEncaisser("non-mortel") },
|
||||
"sonne": { label: "Sonné", callback: html => this.actor.setSonne() },
|
||||
};
|
||||
const buttonsEntitesCauchemar = {
|
||||
"cauchemar": { label: "cauchemar", callback: html => this.performEncaisser("cauchemar") }
|
||||
};
|
||||
const buttons = actor.isEntiteCauchemar() ? buttonsEntitesCauchemar : buttonsCreatures;
|
||||
let buttons = {};
|
||||
if (!actor.isEntite()){
|
||||
buttons = {
|
||||
"mortel": { label: "Mortel", callback: html => this.performEncaisser("mortel") },
|
||||
"non-mortel": { label: "Non-mortel", callback: html => this.performEncaisser("non-mortel") },
|
||||
"sonne": { label: "Sonné", callback: html => this.actor.setSonne() },
|
||||
};
|
||||
}
|
||||
else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])){
|
||||
buttons = {
|
||||
"cauchemar": { label: "cauchemar", callback: html => this.performEncaisser("cauchemar") }
|
||||
}
|
||||
}
|
||||
|
||||
let dialogConf = {
|
||||
title: "Jet d'Encaissement",
|
||||
@ -24,7 +30,6 @@ export class RdDEncaisser extends Dialog {
|
||||
default: "mortel"
|
||||
}
|
||||
|
||||
|
||||
let dialogOptions = {
|
||||
classes: ["rdddialog"],
|
||||
width: 320,
|
||||
|
@ -11,6 +11,7 @@ import { RdDDice } from "./rdd-dice.js";
|
||||
import { RdDItem } from "./item.js";
|
||||
import { Monnaie } from "./item-monnaie.js";
|
||||
import { RdDPossession } from "./rdd-possession.js";
|
||||
import { RdDNameGen } from "./rdd-namegen.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
// This table starts at 0 -> niveau -10
|
||||
@ -121,8 +122,12 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-liste-blessures-partial.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-blessure-partial.html',
|
||||
// Conteneur/item in Actor sheet
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-item.html',
|
||||
"systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html",
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-animaux.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-suivants.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-vehicules.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-editor-notes-mj.html',
|
||||
//Items
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item-competence-sheet.html',
|
||||
@ -234,36 +239,38 @@ export class RdDUtility {
|
||||
Handlebars.registerHelper('typeTmr-name', coord => TMRUtility.typeTmrName(coord));
|
||||
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
||||
|
||||
Handlebars.registerHelper('sortCompetence', competences => competences.sort((a, b) => {
|
||||
if (a.name.startsWith("Survie") && b.name.startsWith("Survie")) {
|
||||
if (a.name.includes("Cité")) return -1;
|
||||
if (b.name.includes("Cité")) return 1;
|
||||
if (a.name.includes("Extérieur")) return -1;
|
||||
if (b.name.includes("Extérieur")) return 1;
|
||||
Handlebars.registerHelper('filtreTriCompetences', competences => competences.filter(it => it.visible)
|
||||
.sort((a, b) => {
|
||||
if (a.name.startsWith("Survie") && b.name.startsWith("Survie")) {
|
||||
if (a.name.includes("Cité")) return -1;
|
||||
if (b.name.includes("Cité")) return 1;
|
||||
if (a.name.includes("Extérieur")) return -1;
|
||||
if (b.name.includes("Extérieur")) return 1;
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
if (a.data.categorie.startsWith("melee") && b.data.categorie.startsWith("melee")) {
|
||||
if (a.name.includes("Corps")) return -1;
|
||||
if (b.name.includes("Corps")) return 1;
|
||||
if (a.name.includes("Dague")) return -1;
|
||||
if (b.name.includes("Dague")) return 1;
|
||||
if (a.name.includes("Esquive")) return -1;
|
||||
if (b.name.includes("Esquive")) return 1;
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
if (a.name.startsWith("Voie") && b.name.startsWith("Voie")) {
|
||||
if (a.name.includes("Oniros")) return -1;
|
||||
if (b.name.includes("Oniros")) return 1;
|
||||
if (a.name.includes("Hypnos")) return -1;
|
||||
if (b.name.includes("Hypnos")) return 1;
|
||||
if (a.name.includes("Narcos")) return -1;
|
||||
if (b.name.includes("Narcos")) return 1;
|
||||
if (a.name.includes("Thanatos")) return -1;
|
||||
if (b.name.includes("Thanatos")) return 1;
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
if (a.data.categorie.startsWith("melee") && b.data.categorie.startsWith("melee")) {
|
||||
if (a.name.includes("Corps")) return -1;
|
||||
if (b.name.includes("Corps")) return 1;
|
||||
if (a.name.includes("Dague")) return -1;
|
||||
if (b.name.includes("Dague")) return 1;
|
||||
if (a.name.includes("Esquive")) return -1;
|
||||
if (b.name.includes("Esquive")) return 1;
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
if (a.name.startsWith("Voie") && b.name.startsWith("Voie")) {
|
||||
if (a.name.includes("Oniros")) return -1;
|
||||
if (b.name.includes("Oniros")) return 1;
|
||||
if (a.name.includes("Hypnos")) return -1;
|
||||
if (b.name.includes("Hypnos")) return 1;
|
||||
if (a.name.includes("Narcos")) return -1;
|
||||
if (b.name.includes("Narcos")) return 1;
|
||||
if (a.name.includes("Thanatos")) return -1;
|
||||
if (b.name.includes("Thanatos")) return 1;
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
return a.name.localeCompare(b.name);
|
||||
}));
|
||||
})
|
||||
);
|
||||
|
||||
return loadTemplates(templatePaths);
|
||||
}
|
||||
@ -464,34 +471,32 @@ export class RdDUtility {
|
||||
/** Construit la structure récursive des conteneurs, avec imbrication potentielle
|
||||
*
|
||||
*/
|
||||
static buildConteneur(objet, niveau) {
|
||||
if (!niveau) niveau = 1;
|
||||
objet.niveau = niveau;
|
||||
//console.log("OBJ:", objet);
|
||||
let str = Handlebars.partials['systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html']({ item: objet });
|
||||
if (objet.type == 'conteneur') {
|
||||
const afficherContenu = this.getAfficheContenu(objet._id);
|
||||
str = str + RdDUtility.buildContenu(objet, niveau, afficherContenu);
|
||||
}
|
||||
return str;
|
||||
static buildConteneur(objet, profondeur) {
|
||||
if (!profondeur) profondeur = 1;
|
||||
objet.niveau = profondeur;
|
||||
const isConteneur = objet.type == 'conteneur';
|
||||
const isOuvert = isConteneur && this.getAfficheContenu(objet._id);
|
||||
const isVide = isConteneur && Misc.templateData(objet).contenu.length == 0;
|
||||
const conteneur = Handlebars.partials['systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-item.html']({
|
||||
item: objet,
|
||||
vide: isVide,
|
||||
ouvert: isOuvert
|
||||
});
|
||||
const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert) : '';
|
||||
return conteneur + contenu;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildContenu(objet, niveau, afficherContenu) {
|
||||
if (!niveau) niveau = 1;
|
||||
objet.niveau = niveau;
|
||||
let strContenu = "";
|
||||
static buildContenu(objet, profondeur, afficherContenu) {
|
||||
if (!profondeur) profondeur = 1;
|
||||
objet.niveau = profondeur;
|
||||
const display = afficherContenu ? 'item-display-show' : 'item-display-hide';
|
||||
//console.log("ITEM DISPLAYED", objet );
|
||||
if (afficherContenu) {
|
||||
strContenu = "<ul class='item-list alterne-list item-display-show list-item-margin" + niveau + "'>";
|
||||
} else {
|
||||
strContenu = "<ul class='item-list alterne-list item-display-hide list-item-margin" + niveau + "'>";
|
||||
}
|
||||
let strContenu = `<ul class='item-list alterne-list ${display} list-item-margin${profondeur}'>`;
|
||||
for (let subItem of objet.subItems) {
|
||||
strContenu = strContenu + this.buildConteneur(subItem, niveau + 1);
|
||||
strContenu += this.buildConteneur(subItem, profondeur + 1);
|
||||
}
|
||||
strContenu = strContenu + "</ul>";
|
||||
return strContenu;
|
||||
return strContenu + "</ul>";
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -704,6 +709,7 @@ export class RdDUtility {
|
||||
|
||||
// gestion bouton tchat Acheter
|
||||
html.on("click", '.button-acheter', event => DialogItemAchat.onButtonAcheter(event));
|
||||
html.on("click", '.button-creer-acteur', event => RdDNameGen.onCreerActeur(event));
|
||||
|
||||
// Gestion du bouton payer
|
||||
html.on("click", '.payer-button', event => {
|
||||
|
@ -65,7 +65,11 @@
|
||||
--debug-box-shadow-blue: inset 0 0 2px blue;
|
||||
--debug-box-shadow-green: inset 0 0 2px green;
|
||||
|
||||
/* =================== 3. some constants ============ */
|
||||
/* =================== 3. some constants ============ */
|
||||
--color-controls:rgba(0, 0, 0, 0.9);
|
||||
--color-controls-hover:rgba(255, 255, 128, 0.7);
|
||||
--color-control-border-hover:rgba(255, 128, 0, 0.8);
|
||||
--color-gold: rgba(191, 149, 63, 0.8);
|
||||
--gradient-gold: linear-gradient(30deg, rgba(191, 149, 63, 0.3), rgba(252, 246, 186, 0.3), rgba(179, 135, 40, 0.3), rgba(251, 245, 183, 0.3), rgba(170, 119, 28, 0.3));
|
||||
--gradient-silver: linear-gradient(30deg, rgba(61, 55, 93, 0.3), rgba(178, 179, 196, 0.3), rgba(59, 62, 63, 0.6), rgba(206, 204, 199, 0.3), rgba(61, 46, 49, 0.3));
|
||||
--gradient-green: linear-gradient(30deg, rgba(7, 76, 0, 0.3), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.1), rgba(66, 163, 65, 0.2), rgba(184, 226, 163, 0.3));
|
||||
@ -104,6 +108,9 @@
|
||||
.strong-text{
|
||||
font-weight: bold;
|
||||
}
|
||||
i:is(.fas, .far) {
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
|
||||
text-shadow: 1px 0px 0px #ff6600;
|
||||
@ -225,6 +232,26 @@ table {border: 1px solid #7a7971;}
|
||||
flex-grow : 3;
|
||||
}
|
||||
/* Styles limited to foundryvtt-reve-de-dragon sheets */
|
||||
.equipement-nom {
|
||||
flex-grow : 4;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
text-align: left;
|
||||
}
|
||||
.equipement-detail {
|
||||
margin: 0;
|
||||
flex: 'flex-shrink' ;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
.equipement-actions {
|
||||
margin: 0;
|
||||
flex-grow: 2;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.foundryvtt-reve-de-dragon .sheet-header {
|
||||
-webkit-box-flex: 0;
|
||||
@ -266,14 +293,8 @@ table {border: 1px solid #7a7971;}
|
||||
height: 8%;
|
||||
max-height: 48px;
|
||||
border-width: 0;
|
||||
border: 1px solid rgba(0, 0, 0, 0);
|
||||
border: 1px solid rgba(0, 0, 0, 0);
|
||||
}
|
||||
.button-img:hover {
|
||||
color: rgba(255, 255, 128, 0.7);
|
||||
border: 1px solid rgba(255, 128, 0, 0.8);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.button-effect-img {
|
||||
vertical-align: baseline;
|
||||
width: 16px;
|
||||
@ -281,9 +302,16 @@ table {border: 1px solid #7a7971;}
|
||||
height: 16;
|
||||
border-width: 0;
|
||||
}
|
||||
.button-effect-img:hover {
|
||||
color: rgba(255, 255, 128, 0.7);
|
||||
border: 1px solid rgba(255, 128, 0, 0.8);
|
||||
.small-button-direction {
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
border: 0;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
:is(.button-img,.button-effect-img:hover,.small-button-direction):hover {
|
||||
color: var(--color-controls-hover);
|
||||
border: 1px solid var(--color-control-border-hover);
|
||||
text-shadow: 1px 0px 0px #ff6600;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@ -294,18 +322,6 @@ table {border: 1px solid #7a7971;}
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.small-button-direction {
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
border: 0;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.small-button-direction:hover {
|
||||
color: rgba(255, 255, 128, 0.7);
|
||||
border: 1px solid rgba(255, 128, 0, 0.8);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.foundryvtt-reve-de-dragon .sheet-header .header-fields {
|
||||
-webkit-box-flex: 1;
|
||||
-ms-flex: 1;
|
||||
@ -346,25 +362,25 @@ table {border: 1px solid #7a7971;}
|
||||
flex-grow: 0;
|
||||
}
|
||||
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique {
|
||||
flex-wrap: nowrap;
|
||||
justify-content: stretch;
|
||||
}
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence > .carac-label {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique > .carac-label {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence > .attribut-label {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique > .attribut-label {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence > .competence-value.total {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique > .competence-value.total {
|
||||
flex-grow: 1;
|
||||
text-align: right;
|
||||
}
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence > .utiliser-attribut {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique > .utiliser-attribut {
|
||||
flex-basis: available;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .competence > * {
|
||||
.rdd.sheet .window-content .sheet-body .carac-list .caracteristique > * {
|
||||
flex-basis: 13%;
|
||||
flex-grow: 0;
|
||||
}
|
||||
@ -469,13 +485,18 @@ table {border: 1px solid #7a7971;}
|
||||
flex: 0 0 86px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.competence-list .item-controls {
|
||||
display: contents !important;
|
||||
}
|
||||
.competence-list .item-controls.hidden-controls {
|
||||
display: none !important;
|
||||
}
|
||||
.item-controls i:is(.fas,.far) {
|
||||
color: var(--color-controls);
|
||||
}
|
||||
.item-controls i:is(.fas,.far):hover {
|
||||
opacity: 0.7 ;
|
||||
}
|
||||
|
||||
.rdddialog .dialog-roll-sort s{
|
||||
width: 600px;
|
||||
@ -567,7 +588,7 @@ table {border: 1px solid #7a7971;}
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
border: 0 none;
|
||||
margin-bottom: 0.25rem;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
||||
@ -601,7 +622,7 @@ section.sheet-body{padding: 0.25rem 0.5rem;}
|
||||
|
||||
nav.sheet-tabs .item {
|
||||
position: relative;
|
||||
padding: 0 0.25rem;
|
||||
padding: 0 0.2rem;
|
||||
}
|
||||
|
||||
nav.sheet-tabs .item:after {
|
||||
@ -627,11 +648,15 @@ section.sheet-body:after {
|
||||
.sheet header.sheet-header .flex-compteurs {text-align: right;}
|
||||
.sheet header.sheet-header .resource-content {width: 2rem;}
|
||||
|
||||
.ctn-vie span, .ctn-endu span, .ctn-fatigue span, .ctn-reve span {
|
||||
.compteur span {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
width: 2rem;
|
||||
}
|
||||
.compteur a i:is(.fas,.far):hover {
|
||||
opacity: 0.7 ;
|
||||
}
|
||||
|
||||
.select-diff {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
@ -644,17 +669,6 @@ section.sheet-body:after {
|
||||
max-width: 90%;
|
||||
}
|
||||
|
||||
.plus-moins {
|
||||
display: inline-block;
|
||||
width: 1.25rem;
|
||||
background: rgba(30, 25, 20, 1);
|
||||
text-align: center;
|
||||
border: 1px solid rgba(72, 46, 28, 1);
|
||||
border-radius: 0.25rem;
|
||||
line-height: 1.25rem;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
.alchimie-tache {
|
||||
font-weight: bold;
|
||||
background: rgb(182, 180, 179);
|
||||
@ -711,10 +725,13 @@ ul, ol {
|
||||
ul, li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.sheet .caracteristique li {
|
||||
margin: 0.1rem;
|
||||
padding: 0.2rem;
|
||||
}
|
||||
.sheet li {
|
||||
margin: 0.125rem;
|
||||
padding: 0.25rem;
|
||||
margin: 0.1rem;
|
||||
padding: 0.1rem;
|
||||
}
|
||||
.header-fields li {
|
||||
margin: 0;
|
||||
@ -731,23 +748,19 @@ ul, li {
|
||||
background: rgb(160, 130, 100, 0.05);
|
||||
}
|
||||
.xp-level-up {
|
||||
margin: 0.125rem;
|
||||
margin: 0.1rem;
|
||||
box-shadow: inset 0px 0px 1px #00000096;
|
||||
border-radius: 0.25rem;
|
||||
padding: 0.125rem;
|
||||
padding: 0.1rem;
|
||||
flex: 1 1 5rem;
|
||||
background: var(--gradient-gold) !important;
|
||||
}
|
||||
.niveau-archetype {
|
||||
background: var(--gradient-silver-light) !important;
|
||||
}
|
||||
.fa-arrow-alt-circle-up.allouer-stress {
|
||||
color: rgba(83, 60, 14, 0.8);
|
||||
.item-controls i.fas.allouer-stress.level-up {
|
||||
color: var(--color-gold);
|
||||
}
|
||||
.fa-arrow-alt-circle-up.allouer-stress-level-up {
|
||||
color: rgba(191, 149, 63, 0.8);
|
||||
}
|
||||
|
||||
.blessures-list ul {
|
||||
display: flex;
|
||||
}
|
||||
@ -766,18 +779,18 @@ ul, li {
|
||||
font-weight: bold;
|
||||
}
|
||||
.list-item {
|
||||
margin: 0.125rem;
|
||||
margin: 0.1rem;
|
||||
box-shadow: inset 0px 0px 1px #00000096;
|
||||
border-radius: 0.25rem;
|
||||
padding: 0.125rem;
|
||||
padding: 0.1rem;
|
||||
flex: 1 1 5rem;
|
||||
display: flex !important;
|
||||
align-items: baseline !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
.table-row {
|
||||
margin: 0.125rem;
|
||||
padding: 0.125rem;
|
||||
margin: 0.1rem;
|
||||
padding: 0.1rem;
|
||||
flex: 1 1 5rem;
|
||||
}
|
||||
|
||||
@ -801,28 +814,37 @@ ul, li {
|
||||
background: rgb(200, 10, 100, 0.25);
|
||||
}
|
||||
|
||||
.item-quantite {
|
||||
margin-left: 0.5rem;
|
||||
.item-column {
|
||||
margin-left: 0.2rem;
|
||||
margin-right: 0.2rem;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.list-item-margin1 {
|
||||
margin-left: 1rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
.list-item-margin2 {
|
||||
margin-left: 2rem;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
.list-item-margin3 {
|
||||
margin-left: 3rem;
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
.list-item-margin4 {
|
||||
margin-left: 4rem;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
.list-item-margin5 {
|
||||
margin-left: 2.5rem;
|
||||
}
|
||||
.list-item-margin6 {
|
||||
margin-left: 3rem;
|
||||
}
|
||||
|
||||
.sheet-competence-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
flex-grow: 0;
|
||||
margin-right: 0.25rem;
|
||||
margin-right: 0.2rem;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.competence-column {
|
||||
@ -866,20 +888,20 @@ ul, li {
|
||||
.competence-value {
|
||||
flex-grow: 0;
|
||||
flex-basis: 2rem;
|
||||
margin-right: 0.25rem;
|
||||
margin-left: 0.25rem;
|
||||
margin-right: 0.2rem;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
.description-value {
|
||||
flex-grow: 0;
|
||||
flex-basis: 4rem;
|
||||
margin-right: 0.25rem;
|
||||
margin-left: 0.25rem;
|
||||
margin-right: 0.2rem;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
.competence-xp {
|
||||
flex-grow: 0;
|
||||
flex-basis: 2rem;
|
||||
margin-right: 0.25rem;
|
||||
margin-left: 0.25rem;
|
||||
margin-right: 0.2rem;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
.blessures-title {
|
||||
font-weight: bold;
|
||||
@ -957,7 +979,7 @@ ul, li {
|
||||
flex-basis: auto;
|
||||
padding: 0;
|
||||
line-height: 1rem;
|
||||
margin: 0.25rem;
|
||||
margin: 0.2rem;
|
||||
}
|
||||
.control-icon.tokenhudicon.right {
|
||||
margin-left: 8px;
|
||||
@ -975,7 +997,7 @@ ul, li {
|
||||
border-left: none;
|
||||
font-weight: 500;
|
||||
font-size: 1rem;
|
||||
color: black;
|
||||
color: var(--color-controls);
|
||||
padding-top: 5px;
|
||||
margin-right: 0px;
|
||||
width: 45px;
|
||||
@ -1075,7 +1097,7 @@ ul, li {
|
||||
.sidebar-tab .directory-list .entity {
|
||||
border-top: 1px dashed rgba(0,0,0,0.25);
|
||||
border-bottom: 0 none;
|
||||
padding: 0.25rem 0;
|
||||
padding: 0.2rem 0;
|
||||
}
|
||||
|
||||
.sidebar-tab .directory-list .entity:hover {
|
||||
@ -1153,11 +1175,11 @@ ul, li {
|
||||
border-image-width: 4px;
|
||||
border-image-outset: 0px;
|
||||
}
|
||||
#controls .control-tools {
|
||||
max-height: calc(100vh - 156px);
|
||||
height: auto;
|
||||
#controls .control-tools {
|
||||
max-height: calc(100vh - 156px);
|
||||
height: auto;
|
||||
}
|
||||
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover {
|
||||
#controls :is(.scene-control.active,.control-tool.active, .scene-control:hover, .control-tool:hover) {
|
||||
background: rgba(72, 46, 28, 1);
|
||||
background-origin: padding-box;
|
||||
border-image: url(img/ui/footer-button.webp) 10 repeat;
|
||||
@ -1343,8 +1365,8 @@ ul, li {
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.calendar-btn:hover {
|
||||
color: rgba(255, 255, 128, 0.7);
|
||||
border: 1px solid rgba(255, 128, 0, 0.8);
|
||||
color: var(--color-controls-hover);
|
||||
border: 1px solid var(--color-control-border-hover);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
|
||||
"license": "LICENSE.txt",
|
||||
"flags": {},
|
||||
"version": "1.5.82",
|
||||
"version": "1.5.90",
|
||||
"minimumCoreVersion": "0.8.0",
|
||||
"compatibleCoreVersion": "9",
|
||||
"scripts": [],
|
||||
@ -500,7 +500,7 @@
|
||||
"dependencies": [],
|
||||
"socket": true,
|
||||
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v1.5/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-1.5.82.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-1.5.90.zip",
|
||||
"protected": false,
|
||||
"gridDistance": 1,
|
||||
"gridUnits": "m",
|
||||
|
@ -1,5 +1,5 @@
|
||||
<tr class="table-row alterne-row item" data-blessure-type="{{gravite}}" data-attribute={{key}} data-blessure-index="{{key}}" >
|
||||
<td class="item-control blessure-control" title="Blessure {{title}}" data-blessure-active="{{bless.active}}">
|
||||
<td class="blessure-control" title="Blessure {{title}}" data-blessure-active="{{bless.active}}">
|
||||
{{#if bless.active}}
|
||||
<i class="fas fa-skull-crossbones blessure-active-{{gravite}}" name="blessure-{{gravite}}-{{key}}-active"></i>
|
||||
{{else}}
|
||||
|
@ -108,8 +108,8 @@
|
||||
<input class="competence-value creature-dommages" type="text" compname="{{comp.name}}"
|
||||
value="{{numberFormat comp.data.dommages decimals=0 sign=true}}" data-dtype="number" />
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -126,35 +126,7 @@
|
||||
|
||||
{{!-- Equipment Tab --}}
|
||||
<div class="tab items" data-group="primary" data-tab="items">
|
||||
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html" monnaie=monnaie}}
|
||||
|
||||
<span class="item-name"><h4>Equipement porté</h4></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 class="creer-un-objet">Créer un objet</a></span>
|
||||
{{#if options.isGM}}
|
||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||
{{/if}}
|
||||
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<img class="sheet-competence-img" src="{{img}}" title="Equipement"/>
|
||||
<span class="competence-title flex-grow">Nom</span>
|
||||
<span class="competence-title">Q.</span>
|
||||
<span class="competence-title">Enc.</span>
|
||||
<span class="competence-title flex-grow">Equiper/Editer/Suppr.</span>
|
||||
</li>
|
||||
{{#each objets as |item id|}}
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.type 'conteneur')}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html" item=item }}
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#each conteneurs as |conteneur id|}}
|
||||
{{buildConteneur this}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire.html"}}
|
||||
</div>
|
||||
|
||||
{{!-- Biography Tab --}}
|
||||
|
@ -33,7 +33,7 @@
|
||||
<div class="flex-group-left flexcol">
|
||||
<ol class="carac-list alterne-list">
|
||||
{{#each data.carac as |carac key|}}
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
{{#if (eq key 'taille')}}
|
||||
<span class="carac-label flexrow" name="data.carac.{{key}}.label">{{carac.label}}</span>
|
||||
{{else}}
|
||||
@ -50,7 +50,7 @@
|
||||
<div class="flex-group-left flexcol">
|
||||
|
||||
<ol class="carac-list alterne-list">
|
||||
<li class="competence flexrow list-item">
|
||||
<li class="caracteristique flexrow list-item">
|
||||
<span class="carac-label flexrow" name="catEntite">Catégorie : </span>
|
||||
<select name="data.definition.categorieentite" value="{{data.definition.categorieentite}}" data-dtype="String">
|
||||
{{#select data.definition.categorieentite}}
|
||||
@ -59,23 +59,24 @@
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
<li class="competence flexrow list-item">
|
||||
<li class="caracteristique flexrow list-item">
|
||||
<span class="carac-label flexrow" name="typeEntite">Type d'entité : </span>
|
||||
<select name="data.definition.typeentite" value="{{data.definition.typeentite}}" data-dtype="String">
|
||||
{{#select data.definition.typeentite}}
|
||||
<option value="incarne">Incarnée</option>
|
||||
<option value="nonincarne">Non Incarnée</option>
|
||||
<option value="blurette">Blurete</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
{{#each data.attributs as |attr key|}}
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="data.attributs.{{key}}.label">{{attr.label}} : </span>
|
||||
<span><input class="attribut-value flexrow" type="text" name="data.attributs.{{key}}.value"
|
||||
value="{{attr.value}}" data-dtype="{{attr.type}}" /></span>
|
||||
</li>
|
||||
{{/each}}
|
||||
<li class="competence flexrow list-item" data-attribute="endurance">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="endurance">
|
||||
<span class="competence-label flexrow" name="data.sante.endurance.label">Endurance : </span>
|
||||
<span><input class="sante-value flexrow" type="text" name="data.sante.endurance.value"
|
||||
value="{{data.sante.endurance.value}}" data-dtype="Number" /></span><span>/ </span>
|
||||
@ -103,8 +104,8 @@
|
||||
<input class="competence-value creature-dommages" type="text" compname="{{comp.name}}"
|
||||
value="{{numberFormat comp.data.dommages decimals=0 sign=true}}" data-dtype="number" />
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -117,8 +118,8 @@
|
||||
<img class="sheet-competence-img" src="{{possession.img}}" />
|
||||
<span class="competence-label">{{possession.name}}</span>
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
|
@ -1,27 +1,31 @@
|
||||
<header class="competence-header flexrow">
|
||||
<span class="competence-title">{{categorie}}</span>
|
||||
</header>
|
||||
<ul class="item-list alterne-list competence-list">
|
||||
{{#if @root.options.vueDetaillee}}
|
||||
<li class="item flexrow list-item ">
|
||||
|
||||
<span class="competence-label"></span>
|
||||
<span class="competence-value" >Niv.</span>
|
||||
<span class="competence-xp">xp</span>
|
||||
{{#if (eq categorie 'Draconic')}}
|
||||
<span class="competence-xp-sort">sort</span>
|
||||
{{/if}}
|
||||
<div class="item-controls">
|
||||
<i class="far fa-arrow-alt-circle-up"></i>
|
||||
<span class="competence-archetype">Arch</span>
|
||||
<i class="far fa-edit"></i>
|
||||
{{#if @root.options.isGM}}
|
||||
<i class="far fa-trash"></i>
|
||||
{{#if competences}}
|
||||
<div class="flex-shrink">
|
||||
<header class="competence-header flexrow">
|
||||
<span class="competence-title">{{categorie}}</span>
|
||||
</header>
|
||||
<ul class="item-list alterne-list competence-list">
|
||||
{{#if @root.options.vueDetaillee}}
|
||||
<li class="item flexrow list-item ">
|
||||
|
||||
<span class="competence-label"></span>
|
||||
<span class="competence-value" >Niv.</span>
|
||||
<span class="competence-xp">xp</span>
|
||||
{{#if (eq categorie 'Draconic')}}
|
||||
<span class="competence-xp-sort">sort</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#each competences as |comp key|}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
<div class="item-controls">
|
||||
<i class="far fa-arrow-alt-circle-up"></i>
|
||||
<span class="competence-archetype">Arch</span>
|
||||
<i class="far fa-edit"></i>
|
||||
{{#if @root.options.isGM}}
|
||||
<i class="far fa-trash"></i>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#each competences as |comp key|}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-competence-partial.html" comp}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
{{#if data.isLevelUp}}
|
||||
<span class="tooltiptext ttt-xp">Vous pouvez dépenser {{data.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}}</span>
|
||||
<a class="item-control competence-xp-augmenter" compname="{{name}}" title="Augmenter">
|
||||
<a class="competence-xp-augmenter" compname="{{name}}" title="Augmenter">
|
||||
<i class="fas fa-arrow-alt-circle-up"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
@ -31,9 +31,9 @@
|
||||
{{#if @root.options.vueDetaillee}}
|
||||
<div class="item-controls">
|
||||
{{#if data.stressXpMax}}
|
||||
<a class="item-control competence-stress-augmenter" compname="{{name}}"
|
||||
<a class="competence-stress-augmenter" compname="{{name}}"
|
||||
title="Dépenser {{data.stressXpMax}} points de stress {{#if data.isStressLevelUp}} pour augmenter d'un niveau {{/if}}">
|
||||
<i class="fas fa-arrow-alt-circle-up allouer-stress{{#if data.isStressLevelUp}}-level-up{{/if}}"></i>
|
||||
<i class="fas fa-arrow-alt-circle-up allouer-stress {{#if data.isStressLevelUp}}level-up{{/if}}"></i>
|
||||
</a>
|
||||
{{else}}
|
||||
<i class="far fa-circle"></i>
|
||||
@ -41,9 +41,9 @@
|
||||
<input class="competence-archetype niveau-archetype" type="text" compname="{{name}}" name="comp-archetype-{{name}}"
|
||||
value="{{numberFormat data.niveau_archetype decimals=0 sign=true}}" data-dtype="number"
|
||||
{{#unless @root.options.editCaracComp}}disabled{{/unless}} />
|
||||
<a class="item-control item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
{{#if @root.options.isGM}}
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
@ -1,32 +0,0 @@
|
||||
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
|
||||
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
|
||||
|
||||
{{#if (eq item.type 'conteneur')}}
|
||||
<span class="item-name conteneur-name flex-grow"><a data-item-id="{{item._id}}">+{{item.name}}</a></span>
|
||||
{{else}}
|
||||
<span class="item-name flex-grow">{{item.name}}</span>
|
||||
{{/if}}
|
||||
<span class="item-quantite">{{item.data.quantite}}
|
||||
{{#if (gt item.data.quantite 1)}}
|
||||
<a class="item-control item-split" title="Séparer"><i class="fas fa-unlink"></i></a>
|
||||
{{/if}}
|
||||
</span>
|
||||
<span class="item-quantite">{{numberFormat item.data.encTotal decimals=2}}</span>
|
||||
<div class="item-controls flex-grow">
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.type 'conteneur')}}
|
||||
<a class="item-control item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-hand-rock"></i>{{else}}<i class="far fa-hand-paper"></i>{{/if}}</a>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
<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>
|
||||
{{#if (or (eq item.type 'arme') (eq item.type 'conteneur') item.data.quantite)}}
|
||||
|
||||
<a class="item-control item-vendre" title="Vendre ou donner"><i class="fas fa-comments-dollar"></i></a>
|
||||
{{/if}}
|
||||
<a class="item-control item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
|
||||
{{#if item.data.actionPrincipale}}
|
||||
<a class="item-name item-action">{{item.data.actionPrincipale}}</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
48
templates/actor-sheet-inventaire-item.html
Normal file
48
templates/actor-sheet-inventaire-item.html
Normal file
@ -0,0 +1,48 @@
|
||||
<li class="item flexrow list-item" data-item-id="{{item._id}}" draggable="true">
|
||||
<span class="equipement-nom {{#if (eq item.type 'conteneur')}}conteneur-name{{/if}} ">
|
||||
{{#if (eq item.type 'conteneur')}}
|
||||
{{#if vide}}
|
||||
<i class="far fa-square"></i>
|
||||
{{else}}
|
||||
<a data-item-id="{{item._id}}">
|
||||
{{#if ouvert}}
|
||||
<i class="far fa-minus-square"></i>
|
||||
{{else}}
|
||||
<i class="far fa-plus-square"></i>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{/if}}
|
||||
<a data-item-id="{{item._id}}">
|
||||
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
|
||||
<span>{{item.name}}</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<img class="sheet-competence-img" src="{{item.img}}" title="{{item.name}}"/>
|
||||
<span>{{item.name}}</span>
|
||||
{{/if}}
|
||||
</span>
|
||||
<span class="equipement-detail">{{item.data.quantite}}
|
||||
{{#if (gt item.data.quantite 1)}}
|
||||
<a class="item-split" title="Séparer"><i class="fas fa-unlink"></i></a>
|
||||
{{/if}}
|
||||
</span>
|
||||
<span class="equipement-detail">{{numberFormat item.data.encTotal decimals=2}}</span>
|
||||
<span class="equipement-actions item-controls">
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.type 'conteneur')}}
|
||||
<a class="item-equip" title="Equiper">{{#if item.data.equipe}}<i class="fas fa-hand-rock"></i>{{else}}<i class="far fa-hand-paper"></i>{{/if}}</a>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
|
||||
{{#if (or (eq item.type 'arme') (eq item.type 'conteneur') item.data.quantite)}}
|
||||
<a class="item-vendre" title="Vendre ou donner"><i class="fas fa-comments-dollar"></i></a>
|
||||
{{/if}}
|
||||
<a class="item-montrer" title="Montrer"><i class="fas fa-comment"></i></a>
|
||||
{{#if item.data.actionPrincipale}}
|
||||
<a class="item-action">{{item.data.actionPrincipale}}</a>
|
||||
{{/if}}
|
||||
</span>
|
||||
</li>
|
||||
|
@ -3,16 +3,26 @@
|
||||
{{#each monnaie as |piece id|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{piece._id}}">
|
||||
<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 plus-moins">+</a>
|
||||
<a class="monnaie-moins plus-moins">-</a>
|
||||
<span class="equipement-nom">{{piece.name}}</span>
|
||||
<span class="equipement-detail item-controls">
|
||||
<a class="monnaie-moins"><i class="fas fa-minus-square"></i></a>
|
||||
</span>
|
||||
<span class="equipement-detail">
|
||||
<span>{{piece.data.quantite}}</span>
|
||||
</span>
|
||||
<span class="equipement-detail item-controls">
|
||||
<a class="monnaie-plus"><i class="fas fa-plus-square"></i></a>
|
||||
</span>
|
||||
|
||||
<!-- <span class="equipement-detail">
|
||||
<span class="flex-shrink"><a class="monnaie-moins"><i class="fas fa-minus-square"></i></a></span>
|
||||
<span>{{piece.data.quantite}}</span>
|
||||
<span class="flex-shrink"><a class="monnaie-plus"><i class="fas fa-plus-square"></i></a></span>
|
||||
</span> -->
|
||||
<span class="equipement-actions item-controls">
|
||||
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<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>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
26
templates/actor-sheet-inventaire.html
Normal file
26
templates/actor-sheet-inventaire.html
Normal file
@ -0,0 +1,26 @@
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html" monnaie=monnaie}}
|
||||
|
||||
<span class="item-name"><h4>Equipement</h4></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 class="creer-un-objet">Créer un objet</a></span>
|
||||
{{#if options.isGM}}
|
||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||
{{/if}}
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<span class="equipement-nom">Nom</span>
|
||||
<span class="equipement-detail">Q.</span>
|
||||
<span class="equipement-detail">Enc.</span>
|
||||
<span class="equipement-actions">Actions</span>
|
||||
</li>
|
||||
{{#each objets as |item id|}}
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.type 'conteneur')}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-item.html" item=item vide=true ouvert=true }}
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#each conteneurs as |conteneur id|}}
|
||||
{{buildConteneur this}}
|
||||
{{/each}}
|
||||
</ul>
|
12
templates/actor-sheet-liens-animaux.html
Normal file
12
templates/actor-sheet-liens-animaux.html
Normal file
@ -0,0 +1,12 @@
|
||||
<span class="item-name"><h4>Compagnons animaux</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.montures as |monture id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{monture.id}}">
|
||||
<img class="sheet-competence-img" src="{{monture.img}}" title="{{monture.name}}"/>
|
||||
<span class="subacteur-label"><a>{{monture.name}}</a></span>
|
||||
<div class="flex-shrink">
|
||||
<a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
12
templates/actor-sheet-liens-suivants.html
Normal file
12
templates/actor-sheet-liens-suivants.html
Normal file
@ -0,0 +1,12 @@
|
||||
<span class="item-name"><h4>Suivants</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.suivants as |suivant id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{suivant.id}}">
|
||||
<img class="sheet-competence-img" src="{{suivant.img}}" title="{{suivant.name}}"/>
|
||||
<span class="competence-title subacteur-label"><a>{{suivant.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
15
templates/actor-sheet-liens-vehicules.html
Normal file
15
templates/actor-sheet-liens-vehicules.html
Normal file
@ -0,0 +1,15 @@
|
||||
<span class="item-name"><h4>Véhicules</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.vehicules as |vehicule id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{vehicule.id}}">
|
||||
<img class="sheet-competence-img" src="{{vehicule.img}}" title="{{vehicule.name}}"/>
|
||||
<span class="flex-grow subacteur-label"><a>{{vehicule.name}}</a></span>
|
||||
<span>{{vehicule.categorie}}</span>
|
||||
<span>{{vehicule.structure}}</span>
|
||||
<div class="flex-shrink">
|
||||
<a class="subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
@ -4,8 +4,8 @@
|
||||
<a>{{oeuvre.name}} (niveau {{oeuvre.data.niveau}})</a>
|
||||
</span>
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
@ -10,40 +10,40 @@
|
||||
<div class="flexrow">
|
||||
<ul class="flex-group-center flex-compteurs">
|
||||
<li>
|
||||
<label class="ctn-vie">
|
||||
<label class="compteur">
|
||||
<a class="jet-vie">Vie</a>
|
||||
<a class="vie-moins plus-moins">-</a>
|
||||
<a class="vie-moins"><i class="fas fa-minus-square"></i></a>
|
||||
<input class="resource-content" type="text" name="data.sante.vie.value" value="{{data.sante.vie.value}}" data-dtype="Number"/>
|
||||
<span>/ {{data.sante.vie.max}}</span>
|
||||
<a class="vie-plus plus-moins">+</a>
|
||||
<a class="vie-plus"><i class="fas fa-plus-square"></i></a>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label class="ctn-endu">
|
||||
<a class="jet-endurance">Endurance</a>
|
||||
<a class="endurance-moins plus-moins">-</a>
|
||||
<label class="compteur">
|
||||
<a class="jet-endurance">Endurance</a>
|
||||
<a class="endurance-moins"><i class="fas fa-minus-square"></i></a>
|
||||
<input class="resource-content" type="text" name="data.sante.endurance.value" value="{{data.sante.endurance.value}}" data-dtype="Number"/>
|
||||
<span>/ {{data.sante.endurance.max}}</span>
|
||||
<a class="endurance-plus plus-moins">+</a>
|
||||
<a class="endurance-plus"><i class="fas fa-plus-square"></i></a>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label class="appliquerFatigue ctn-fatigue tooltip">
|
||||
<label class="appliquerFatigue compteur tooltip">
|
||||
<span class="tooltiptext ttt-fatigue">{{{calc.fatigue.html}}}</span>
|
||||
Fatigue
|
||||
<a class="fatigue-moins plus-moins">-</a>
|
||||
<a class="fatigue-moins"><i class="fas fa-minus-square"></i></a>
|
||||
<input class="resource-content" id="fatigue-value" type="text" name="data.sante.fatigue.value" value="{{data.sante.fatigue.value}}" data-dtype="Number" />
|
||||
<span>/ {{data.sante.fatigue.max}}</span>
|
||||
<a class="fatigue-plus plus-moins">+</a>
|
||||
<a class="fatigue-plus"><i class="fas fa-plus-square"></i></a>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label class="ctn-reve">
|
||||
<label class="compteur">
|
||||
<span class="ptreve-actuel"><a>Rêve</a></span>
|
||||
<a class="ptreve-actuel-moins plus-moins">-</a>
|
||||
<a class="ptreve-actuel-moins"><i class="fas fa-minus-square"></i></a>
|
||||
<input class="resource-content" id="pointsreve-value" type="text" name="data.reve.reve.value" value="{{data.reve.reve.value}}" data-dtype="Number" />
|
||||
<span>/ {{data.reve.seuil.value}}</span>
|
||||
<a class="ptreve-actuel-plus plus-moins">+</a>
|
||||
<a class="ptreve-actuel-plus"><i class="fas fa-plus-square"></i></a>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
@ -102,9 +102,9 @@
|
||||
<ul class="carac-list alterne-list">
|
||||
{{#each data.carac as |carac key|}}
|
||||
{{#if carac.isLevelUp}}
|
||||
<li class="competence flexrow item-list xp-level-up" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow item-list xp-level-up" data-attribute="{{key}}">
|
||||
{{else}}
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
{{/if}}
|
||||
{{#if (eq key 'taille')}}
|
||||
<span class="carac-label" name="data.carac.{{key}}.label">{{carac.label}}</span>
|
||||
@ -131,7 +131,7 @@
|
||||
<span class="tooltiptext ttt-xp">Vous devez acquérir {{carac.xpNext}} points d'Experience pour augmenter de 1 votre {{carac.label}}</span>
|
||||
</span>
|
||||
{{#if carac.isLevelUp}}
|
||||
<a class="item-control carac-xp-augmenter" name="augmenter.{{key}}" title="Augmenter">
|
||||
<a class="carac-xp-augmenter" name="augmenter.{{key}}" title="Augmenter">
|
||||
<i class="fas fa-arrow-alt-circle-up"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
@ -139,22 +139,22 @@
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/each}}
|
||||
<li class="competence flexrow">
|
||||
<li class="caracteristique flexrow">
|
||||
<span class="carac-label" name="carac-total">Total Caractéristiques </span>
|
||||
<span class="competence-value total" name="carac-total-value">{{calc.caracTotal}} </span>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="flex-group-left flexcol" >
|
||||
<ul class="carac-list">
|
||||
<li class="competence flexrow list-item">
|
||||
<li class="caracteristique flexrow list-item">
|
||||
<span class="carac-label" name="beaute">Beauté :</span>
|
||||
<input class="description-value" type="text" name="data.beaute" value="{{data.beaute}}" data-dtype="String" {{#unless @root.options.editCaracComp}}disabled{{/unless}}/>
|
||||
<label class="carac-xp"/>
|
||||
</li>
|
||||
{{#each data.attributs as |attr key|}}
|
||||
{{#unless (eq key 'hautrevant')}}
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label" name="data.attributs.{{key}}.label">{{attr.label}} :</span>
|
||||
{{#if (eq key 'protection')}}
|
||||
<input class="description-value" id="attribut-protection-edit" type="text" name="{{key}}" value="{{attr.value}}" data-dtype="number"/>
|
||||
@ -167,16 +167,16 @@
|
||||
{{/each}}
|
||||
</ul>
|
||||
<ul class="carac-list alterne-list">
|
||||
<li class="competence flexrow list-item">
|
||||
<li class="caracteristique flexrow list-item">
|
||||
<span class="attribut-label chance-actuelle"><a>Chance actuelle</a></span>
|
||||
<input class="description-value compteur-edit" type="text" name="chance" value="{{data.compteurs.chance.value}}" data-dtype="number"/>
|
||||
<span class="utiliser-attribut" style="padding-left: 5px"><a class="item-control chance-appel">Utiliser</a></span>
|
||||
<span class="utiliser-attribut" style="padding-left: 5px"><a class="chance-appel">Utiliser</a></span>
|
||||
</li>
|
||||
{{#each data.compteurs as |compteur key|}}
|
||||
{{#if (eq compteur.label 'Chance')}}
|
||||
{{else if (eq compteur.label 'Experience')}}
|
||||
{{else if compteur.isInput}}
|
||||
<li class="competence flexrow list-item">
|
||||
<li class="caracteristique flexrow list-item">
|
||||
<span class="attribut-label">{{compteur.label}}</span>
|
||||
{{#if (eq compteur.label 'Ethylisme')}}
|
||||
<select class="description-value" name="data.compteurs.ethylisme.value" id="ethylisme" data-dtype="Number">
|
||||
@ -189,9 +189,9 @@
|
||||
{{/if}}
|
||||
<span class="utiliser-attribut" style="padding-left: 5px">
|
||||
{{#if compteur.isStress}}
|
||||
<a class="item-control stress-test" title="Transformer">Transformer</a>
|
||||
<a class="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">Boire</a>
|
||||
<a class="ethylisme-test" id="ethylisme-test" title="Jet d'Ethylisme">Boire</a>
|
||||
{{else if (eq compteur.label 'Moral')}}
|
||||
<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>
|
||||
@ -215,11 +215,9 @@
|
||||
<span><a class="lock-unlock-sheet"><img class="small-button-container"
|
||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer">
|
||||
{{#if options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}</a></span>
|
||||
<span class="flexrow">
|
||||
<i class="fas fa-search"></i>
|
||||
<input class="cherchercompetence" type="text" value="{{options.cherchercompetence}}" name="cherchercompetence"
|
||||
size="8" data-dtype="String" placeholder="chercher"/>
|
||||
<span></span>
|
||||
<span>
|
||||
<input class="recherche flex-grow" type="text" value="{{options.recherche.text}}" name="recherche"
|
||||
size="8" data-dtype="String" placeholder="chercher"/>
|
||||
</span>
|
||||
<span><a class="show-hide-competences"><img class="small-button-container"
|
||||
src="systems/foundryvtt-reve-de-dragon/icons/{{#if options.showCompNiveauBase}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer tout">
|
||||
@ -232,18 +230,18 @@
|
||||
</div>
|
||||
<div class="grid grid-2col">
|
||||
<div class="flex-group-left flexcol competence-column">
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.generale) categorie="Compétences générales"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.particuliere) categorie="Compétences Particulières"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.specialisee) categorie="Compétences Spécialisées"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.generale) categorie="Compétences générales"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.particuliere) categorie="Compétences Particulières"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.specialisee) categorie="Compétences Spécialisées"}}
|
||||
</div>
|
||||
|
||||
<div class="flex-group-left flexcol competence-column">
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.melee) categorie="Compétences de Mêlée"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.tir) categorie="Compétences de Tir"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.lancer) categorie="Compétences de Lancer"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.connaissance) categorie="Connaissances"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.melee) categorie="Compétences de Mêlée"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.tir) categorie="Compétences de Tir"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.lancer) categorie="Compétences de Lancer"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.connaissance) categorie="Connaissances"}}
|
||||
{{#if (or data.attributs.hautrevant.value options.vueDetaillee)}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(sortCompetence competenceByCategory.draconic) categorie="Draconic"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-categorie-competences-partial.html" competences=(filtreTriCompetences competenceByCategory.draconic) categorie="Draconic"}}
|
||||
{{/if}}
|
||||
|
||||
<div>
|
||||
@ -349,8 +347,8 @@
|
||||
{{/if}}
|
||||
</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -372,8 +370,8 @@
|
||||
</span>
|
||||
<span class="competence-label">{{possession.data.type}}</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-control item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-edit" title="Modifier"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -391,8 +389,8 @@
|
||||
(or @root.options.isGM (not tache.data.cacher_points_de_tache))
|
||||
}}/{{tache.data.points_de_tache}}{{/if}})</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -421,8 +419,8 @@
|
||||
{{#each jeux as |jeu id|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{jeu._id}}"><span class="competence-title jeu-label"><a>{{jeu.name}} (base {{jeu.data.base}})</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -432,8 +430,8 @@
|
||||
{{#each recettesAlchimiques as |recette id|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{recette._id}}"><span class="competence-title recette-label item-edit"><a>{{recette.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<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>
|
||||
<a class="item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -519,7 +517,7 @@
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{queue._id}}">{{queue.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -532,7 +530,7 @@
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{ombre._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{ombre._id}}">{{ombre.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -545,7 +543,7 @@
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{souffle._id}}">{{souffle.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -558,7 +556,7 @@
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{tete._id}}">{{tete.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -573,7 +571,7 @@
|
||||
<span class="display-label flex-grow"> <a data-item-id="{{signe._id}}">{{signe.name}}</a></span>
|
||||
<span class="flex-shrink">{{signe.data.difficulte}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -591,7 +589,7 @@
|
||||
<span>{{upperFirst rencontre.heure}}, le {{rencontre.date}}</span>
|
||||
{{/if}}
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control rencontre-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="rencontre-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -606,7 +604,7 @@
|
||||
<span class="display-label">{{reserve.sort.name}} r{{reserve.sort.data.ptreve_reel}}</span>
|
||||
<span>{{reserve.coord}} - {{caseTmr-label reserve.coord}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -626,7 +624,7 @@
|
||||
</span>
|
||||
<span>{{sort.data.draconic}} / {{sort.data.difficulte}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -638,8 +636,8 @@
|
||||
<li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}">
|
||||
<span class="meditation-label flex-grow"><a data-item-id="{{meditation._id}}">{{meditation.name}} - {{meditation.data.competence}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<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>
|
||||
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -653,7 +651,7 @@
|
||||
<span class="display-label"><a data-item-id="{{casetmr._id}}">{{casetmr.name}}</a></span>
|
||||
<span>{{casetmr.data.coord}} - {{caseTmr-label casetmr.data.coord}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
@ -666,79 +664,10 @@
|
||||
{{!-- Equipment Tab --}}
|
||||
<div class="tab items" data-group="primary" data-tab="items">
|
||||
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html" monnaie=monnaie}}
|
||||
|
||||
<span class="item-name"><h4>Equipement porté</h4></span>
|
||||
<div>
|
||||
<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 calc.prixTotalEquipement decimals=2}} Sols</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="item-name"><a class="creer-un-objet">Créer un objet</a></span>
|
||||
{{#if options.isGM}}
|
||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<img class="sheet-competence-img" src="{{img}}" title="Equipement"/>
|
||||
<span class="competence-title flex-grow">Nom</span>
|
||||
<span class="competence-title">Q.</span>
|
||||
<span class="competence-title">Enc.</span>
|
||||
<span class="competence-title flex-grow">Equiper/Editer/Suppr.</span>
|
||||
</li>
|
||||
{{#each objets as |item id|}}
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.type 'conteneur')}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-conteneur.html" item=item }}
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#each conteneurs as |conteneur id|}}
|
||||
{{buildConteneur this}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<span class="item-name"><h4>Compagnons animaux</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.montures as |monture id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{monture.id}}">
|
||||
<img class="sheet-competence-img" src="{{monture.img}}" title="{{monture.name}}"/>
|
||||
<span class="competence-title subacteur-label"><a>{{monture.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<span class="item-name"><h4>Véhicules</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.vehicules as |vehicule id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{vehicule.id}}">
|
||||
<img class="sheet-competence-img" src="{{vehicule.img}}" title="{{vehicule.name}}"/>
|
||||
<span class="competence-title subacteur-label"><a>{{vehicule.name}}</a></span>
|
||||
<span class="competence-title">{{vehicule.categorie}}</span>
|
||||
<span class="competence-title">{{vehicule.structure}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<span class="item-name"><h4>Suivants</h4></span>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each subacteurs.suivants as |suivant id|}}
|
||||
<li class="item flexrow list-item" data-actor-id="{{suivant.id}}">
|
||||
<img class="sheet-competence-img" src="{{suivant.img}}" title="{{suivant.name}}"/>
|
||||
<span class="competence-title subacteur-label"><a>{{suivant.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-control subacteur-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire.html"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-animaux.html"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-suivants.html"}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-vehicules.html"}}
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
<div class="grid grid-2col">
|
||||
<div class="flex-group-left flexcol">
|
||||
<ol class="carac-list alterne-list">
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Catégorie</span>
|
||||
<select name="data.categorie" class="categorie" data-dtype="String">
|
||||
{{#select data.categorie}}
|
||||
@ -33,31 +33,31 @@
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Résistance</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.resistance" value="{{data.resistance}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Structure</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.structure" value="{{data.structure}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Vitesse</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.vitesse" value="{{data.vitesse}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Bonus</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.bonus" value="{{data.bonus}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Manoeuvrabilité</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.manoeuvrabilite" value="{{data.manoeuvrabilite}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Equipage</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.equipage" value="{{data.equipage}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="competence flexrow list-item" data-attribute="{{key}}">
|
||||
<li class="caracteristique flexrow list-item" data-attribute="{{key}}">
|
||||
<span class="carac-label flexrow" name="categorie">Capacité d'Encombrement</span>
|
||||
<input class="competence-value flexrow" type="text" name="data.capacite_encombrement" value="{{data.capacite_encombrement}}" data-dtype="Number" />
|
||||
</li>
|
||||
@ -69,47 +69,9 @@
|
||||
{{!-- Equipment Tab --}}
|
||||
<div class="tab items" data-group="primary" data-tab="items">
|
||||
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html" monnaie=monnaie}}
|
||||
|
||||
<span class="item-name"><h4>Equipement chargé</h4></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 class="creer-un-objet">Créer un objet</a></span>
|
||||
{{#if options.isGM}}
|
||||
<span class="item-name"> - <a id="nettoyer-conteneurs">Vider tout les conteneurs</a></span>
|
||||
{{/if}}
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<img class="sheet-competence-img" src="{{img}}" title="Equipement"/>
|
||||
<span class="competence-title competence-label flex-grow">Nom</span>
|
||||
<span class="competence-title competence-label">Q.</span>
|
||||
<span class="competence-title competence-value">Enc.</span>
|
||||
<span class="competence-title competence-value">Equiper/Editer/Suppr.</span>
|
||||
</li>
|
||||
{{#each objets as |item id|}}
|
||||
{{#unless item.estContenu}}
|
||||
{{#if (ne item.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 flex-grow">{{item.name}}</span>
|
||||
<span class="item-quantite">{{item.data.quantite}}</span>
|
||||
<span class="item-quantite">{{numberFormat item.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-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>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{/each}}
|
||||
{{#each conteneurs as |conteneur id|}}
|
||||
{{buildConteneur this}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire.html"}}
|
||||
|
||||
|
||||
{{!-- Biography Tab --}}
|
||||
<div class="tab description" data-group="primary" data-tab="description">
|
||||
<div class="form-group editor">
|
||||
|
16
templates/chat-command-nom.html
Normal file
16
templates/chat-command-nom.html
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
<h4>Proposition de nom: {{nom}}</h4>
|
||||
<span class="chat-card-button-area">
|
||||
<a class="button-creer-acteur chat-card-button"
|
||||
data-nom='{{nom}}'
|
||||
data-type='personnage'
|
||||
>
|
||||
Créer un Personnage</a>
|
||||
</span>
|
||||
<span class="chat-card-button-area">
|
||||
<a class="button-creer-acteur chat-card-button"
|
||||
data-nom='{{nom}}'
|
||||
data-type='creature'>
|
||||
Créer une créature</a>
|
||||
</span>
|
||||
|
@ -2,7 +2,6 @@
|
||||
<img class="rdd-hud-togglebutton" src="icons/svg/sword.svg" width="36" height="36" title="Initiative" />
|
||||
<div class="rdd-hud-list tokenhudext right">
|
||||
{{#each actions as |action key|}}
|
||||
{{log 'action-hud-init' action}}
|
||||
<div class="control-icon tokenhudicon rdd-hud-menu"
|
||||
data-combatant-id="{{../combatant.id}}"
|
||||
data-action-index="{{action.index}}"
|
||||
|
@ -29,11 +29,10 @@
|
||||
<span><label>Contenu : </label></span>
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<img class="sheet-competence-img" src="{{img}}" title="Equipement"/>
|
||||
<span class="competence-title flex-grow">Nom</span>
|
||||
<span class="competence-title">Q.</span>
|
||||
<span class="competence-title">Enc.</span>
|
||||
<span class="competence-title flex-grow">Equiper/Editer/Suppr.</span>
|
||||
<span class="equipement-nom">Nom</span>
|
||||
<span class="equipement-detail">Q.</span>
|
||||
<span class="equipement-detail">Enc.</span>
|
||||
<span class="equipement-actions">Actions</span>
|
||||
</li>
|
||||
{{buildContenu this}}
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user