Corrections imports et ajouts sorts en réserve #731
@ -1,4 +1,7 @@
|
|||||||
# 12.0
|
# 12.0
|
||||||
|
## 12.0.28 - Les réserves d'Astrobazzarh
|
||||||
|
- possibilité de mettre en réserve depuis un sort connu
|
||||||
|
|
||||||
## 12.0.27 - Les vêtements d'Astrobazzarh
|
## 12.0.27 - Les vêtements d'Astrobazzarh
|
||||||
- Ajout de la liste des armures dans l'onglet caractéristiques
|
- Ajout de la liste des armures dans l'onglet caractéristiques
|
||||||
- Ajout d'une option pour choisir une carte des TMR alternatives
|
- Ajout d'une option pour choisir une carte des TMR alternatives
|
||||||
@ -115,11 +118,9 @@
|
|||||||
- encodage de l'export en windows-1252
|
- encodage de l'export en windows-1252
|
||||||
- export de l'esquive avec armure et sans armure
|
- export de l'esquive avec armure et sans armure
|
||||||
|
|
||||||
## 12.0.10 - Le scriptorium d'Astrobazzarh
|
## 12.0.9 - 12.0.10 - Le scriptorium d'Astrobazzarh
|
||||||
- corrections de l'export scriptarium
|
- corrections de l'export scriptarium
|
||||||
|
- ajout d'une fonction avancée pour un exporter "scriptarium" des personnages
|
||||||
## 12.0.9 - Le scriptorium d'Astrobazzarh
|
|
||||||
- ajout d'une fonction avancée pour exporter les personnages dans un format csv
|
|
||||||
|
|
||||||
## 12.0.8 - La quincaillerie d'Astrobazzarh
|
## 12.0.8 - La quincaillerie d'Astrobazzarh
|
||||||
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
- le propriétaire est indiqué dans les feuilles d'équipements/compétences/...
|
||||||
|
@ -183,7 +183,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
|
|
||||||
// Equip Inventory Item
|
// Equip Inventory Item
|
||||||
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
|
this.html.find('.item-equip').click(async event => this.actor.equiperObjet(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('.chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
|
this.html.find('.roll-chance-actuelle').click(async event => this.actor.rollCarac('chance-actuelle'))
|
||||||
|
|
||||||
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
|
this.html.find('.button-appel-chance').click(async event => this.actor.rollAppelChance())
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
// Boutons spéciaux MJs
|
// Boutons spéciaux MJs
|
||||||
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
|
this.html.find('.forcer-tmr-aleatoire').click(async event => this.actor.reinsertionAleatoire("Action MJ"))
|
||||||
this.html.find('.don-de-haut-reve').click(async event => this.actor.addDonDeHautReve())
|
this.html.find('.don-de-haut-reve').click(async event => this.actor.addDonDeHautReve())
|
||||||
this.html.find('.nouveau-sort-reserve').click(async event => this.actor.addSortReserve())
|
this.html.find('.sortreserve-add').click(async event => this.actor.addSortReserve(RdDSheetUtility.getItemId(event)))
|
||||||
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
|
this.html.find('.afficher-tmr').click(async event => this.actor.changeTMRVisible())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,6 +284,8 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
|||||||
|
|
||||||
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
|
this.html.find('.ptreve-actuel-plus').click(async event => this.actor.reveActuelIncDec(1))
|
||||||
this.html.find('.ptreve-actuel-moins').click(async event => this.actor.reveActuelIncDec(-1))
|
this.html.find('.ptreve-actuel-moins').click(async event => this.actor.reveActuelIncDec(-1))
|
||||||
|
this.html.find('.chance-actuelle-plus').click(async event => this.actor.chanceActuelleIncDec(1))
|
||||||
|
this.html.find('.chance-actuelle-moins').click(async event => this.actor.chanceActuelleIncDec(-1))
|
||||||
this.html.find('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
|
this.html.find('.fatigue-plus').click(async event => this.actor.santeIncDec("fatigue", 1))
|
||||||
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
|
this.html.find('.fatigue-moins').click(async event => this.actor.santeIncDec("fatigue", -1))
|
||||||
}
|
}
|
||||||
|
@ -95,11 +95,14 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
|
isHautRevant() { return this.system.attributs.hautrevant.value != "" }
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getAgilite() { return this.system.carac.agilite?.value ?? 0 }
|
getAgilite() { return Misc.toInt(this.system.carac.agilite?.value ?? 0) }
|
||||||
getChance() { return this.system.carac.chance?.value ?? 0 }
|
getChance() { return Misc.toInt(this.system.carac.chance?.value ?? 0) }
|
||||||
|
|
||||||
getReveActuel() { return this.system.reve?.reve?.value ?? this.carac.reve.value ?? 0 }
|
getReveActuel() { return Misc.toInt(this.system.reve?.reve?.value) ?? this.carac.reve.value ?? 0 }
|
||||||
getChanceActuel() { return this.system.compteurs.chance?.value ?? 10 }
|
getChanceActuel() {
|
||||||
|
return Number.isNumeric(this.system.compteurs.chance.value) ?
|
||||||
|
Misc.toInt(this.system.compteurs.chance.value) : this.getChance()
|
||||||
|
}
|
||||||
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
|
getMoralTotal() { return this.system.compteurs.moral?.value ?? 0 }
|
||||||
|
|
||||||
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
|
getEnduranceMax() { return Math.max(1, Math.max(this.getTaille() + this.getConstitution(), this.getVieMax() + this.getVolonte())) }
|
||||||
@ -991,21 +994,31 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async addSortReserve() {
|
async addSortReserve(itemId) {
|
||||||
|
if (itemId) {
|
||||||
|
const item = this.items.get(itemId)
|
||||||
|
if (item.type == ITEM_TYPES.sort && !item.system.isrituel) {
|
||||||
|
this.$createSortReserve(item)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
const selectSortReserve = {
|
const selectSortReserve = {
|
||||||
title: "Créer un sort en réserve",
|
title: "Créer un sort en réserve",
|
||||||
label: "Choisir un sort",
|
label: "Choisir un sort",
|
||||||
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
|
list: this.itemTypes[ITEM_TYPES.sort].filter(it => !it.system.isrituel)
|
||||||
}
|
}
|
||||||
DialogSelect.select(selectSortReserve, sort =>
|
DialogSelect.select(selectSortReserve, sort => this.$createSortReserve(sort))
|
||||||
this.createEmbeddedDocuments("Item",
|
}
|
||||||
[{
|
|
||||||
type: ITEM_TYPES.sortreserve,
|
$createSortReserve(sort) {
|
||||||
name: sort.name,
|
this.createEmbeddedDocuments("Item",
|
||||||
img: sort.img,
|
[{
|
||||||
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
|
type: ITEM_TYPES.sortreserve,
|
||||||
}],
|
name: sort.name,
|
||||||
{ renderSheet: true }))
|
img: sort.img,
|
||||||
|
system: { sortid: sort.id, draconic: sort.system.draconic, ptreve: Number(sort.system.ptreve.match(/\d+/)), coord: 'A1', heurecible: 'Vaisseau' }
|
||||||
|
}],
|
||||||
|
{ renderSheet: true })
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
async reinsertionAleatoire(raison, accessible = tmr => true) {
|
||||||
@ -1070,6 +1083,11 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
await this.update({ "system.reve.reve.value": reve });
|
await this.update({ "system.reve.reve.value": reve });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async chanceActuelleIncDec(value) {
|
||||||
|
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
|
||||||
|
await this.update({ "system.compteurs.chance.value": chance });
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async regainPointDeSeuil() {
|
async regainPointDeSeuil() {
|
||||||
const seuil = Misc.toInt(this.system.reve.seuil.value);
|
const seuil = Misc.toInt(this.system.reve.seuil.value);
|
||||||
@ -2254,12 +2272,6 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async chanceActuelleIncDec(value) {
|
|
||||||
const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0));
|
|
||||||
await this.updateCompteurValue("chance", chance);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
|
async appelDestinee(onSuccess = () => { }, onEchec = () => { }) {
|
||||||
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
let destinee = this.system.compteurs.destinee?.value ?? 0;
|
||||||
|
@ -48,6 +48,19 @@ export class RdDBaseActorReveSheet extends RdDBaseActorSheet {
|
|||||||
}], { renderSheet: true })
|
}], { renderSheet: true })
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (this.options.vueDetaillee) {
|
||||||
|
// On carac change
|
||||||
|
this.html.find('.carac-value').change(async event => {
|
||||||
|
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
|
||||||
|
this.actor.updateCarac(caracName, parseInt(event.target.value));
|
||||||
|
});
|
||||||
|
// On competence change
|
||||||
|
this.html.find('.competence-value').change(async event => {
|
||||||
|
let compName = event.currentTarget.attributes.compname.value;
|
||||||
|
//console.log("Competence changed :", compName);
|
||||||
|
this.actor.updateCompetence(compName, parseInt(event.target.value));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -177,21 +177,6 @@ export class RdDBaseActorSheet extends ActorSheet {
|
|||||||
this.options.vueDetaillee = !this.options.vueDetaillee;
|
this.options.vueDetaillee = !this.options.vueDetaillee;
|
||||||
this.render(true);
|
this.render(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.options.vueDetaillee) {
|
|
||||||
// On carac change
|
|
||||||
this.html.find('.carac-value').change(async event => {
|
|
||||||
let caracName = event.currentTarget.name.replace(".value", "").replace("system.carac.", "");
|
|
||||||
this.actor.updateCarac(caracName, parseInt(event.target.value));
|
|
||||||
});
|
|
||||||
// On competence change
|
|
||||||
this.html.find('.competence-value').change(async event => {
|
|
||||||
let compName = event.currentTarget.attributes.compname.value;
|
|
||||||
//console.log("Competence changed :", compName);
|
|
||||||
this.actor.updateCompetence(compName, parseInt(event.target.value));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_rechercherKeyup(event) {
|
_rechercherKeyup(event) {
|
||||||
|
@ -83,6 +83,7 @@ const MAPPING_BASE = [
|
|||||||
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
{ column: "protectionarmure", colName: 'Protection', getter: (actor, context) => Mapping.getProtectionArmure(actor, context) },
|
||||||
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
|
{ column: "malus_armure", getter: (actor, context) => Mapping.getMalusArmure(actor, context) },
|
||||||
{ column: "reve_actuel", rollClass: 'roll-reve-actuel', colName: 'Rêve actuel', getter: (actor, context) => actor.system.reve.reve.value },
|
{ column: "reve_actuel", rollClass: 'roll-reve-actuel', colName: 'Rêve actuel', getter: (actor, context) => actor.system.reve.reve.value },
|
||||||
|
{ column: "chance_actuel", rollClass: 'roll-chance-actuelle', colName: 'Chance actuelle', getter: (actor, context) => actor.system.compteurs.chance.value },
|
||||||
{ column: "vie_actuel", rollClass: 'jet-vie', getter: (actor, context) => actor.system.sante.vie.value },
|
{ column: "vie_actuel", rollClass: 'jet-vie', getter: (actor, context) => actor.system.sante.vie.value },
|
||||||
{ column: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
|
{ column: "endurance_actuel", rollClass: 'jet-endurance', getter: (actor, context) => actor.system.sante.endurance.value },
|
||||||
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
{ column: "esquive", getter: (actor, context) => Mapping.getEsquive(context) },
|
||||||
|
@ -26,7 +26,7 @@ const MANIEMENTS = {
|
|||||||
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
'de lancer': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
||||||
'de jet': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
'de jet': (weapon) => { return { name: weapon.system.lancer, categorie: 'lancer' } },
|
||||||
'à une main': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
|
'à une main': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
|
||||||
'à deux main': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 main"), categorie: 'melee' } },
|
'à deux mains': (weapon) => { return { name: weapon.system.competence.replace("à 1 main", "à 2 mains"), categorie: 'melee' } },
|
||||||
'mêlée': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
|
'mêlée': (weapon) => { return { name: weapon.system.competence, categorie: 'melee' } },
|
||||||
}
|
}
|
||||||
const XREGEXP_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
|
const XREGEXP_WEAPON_MANIEMENT = "(?<maniement>(" + Misc.join(Object.keys(MANIEMENTS), '|') + "))"
|
||||||
@ -267,7 +267,7 @@ export class RdDStatBlockParser {
|
|||||||
}
|
}
|
||||||
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
|
let weapMatch = XRegExp.exec(statString, XRegExp(weapon.name
|
||||||
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
|
+ "(\\s*" + XREGEXP_WEAPON_MANIEMENT + ")?"
|
||||||
+ "\\s+(?<value>\\+\\d+)", 'giu'));
|
+ "\\s+(?<value>[\\+\\-]?\\d+)", 'giu'));
|
||||||
if (weapMatch) {
|
if (weapMatch) {
|
||||||
weapon = weapon.toObject();
|
weapon = weapon.toObject();
|
||||||
weapon.system.equipe = 'true';
|
weapon.system.equipe = 'true';
|
||||||
@ -479,12 +479,12 @@ export class RdDStatBlockParser {
|
|||||||
let namePersonnage = "Importé"
|
let namePersonnage = "Importé"
|
||||||
if (statString.includes(", né")) {
|
if (statString.includes(", né")) {
|
||||||
// Name is all string before first comma ','
|
// Name is all string before first comma ','
|
||||||
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+),", 'giu'));
|
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\-\\s\\d]+),", 'giu'));
|
||||||
} else {
|
} else {
|
||||||
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\s\\d]+)\\s+TAILLE", 'giu'));
|
namePersonnage = XRegExp.exec(statString, XRegExp("(?<value>[\\p{Letter}\\-\\s\\d]+)\\s+TAILLE", 'giu'));
|
||||||
}
|
}
|
||||||
if (namePersonnage?.value) {
|
if (namePersonnage?.value) {
|
||||||
return Misc.upperFirst(namePersonnage?.value);
|
return Misc.upperFirst(namePersonnage?.value.toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu'));
|
const name = XRegExp.exec(statString, XRegExp("(?<value>.+)\\s+taille", 'giu'));
|
||||||
|
@ -261,8 +261,25 @@ export class RdDUtility {
|
|||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html',
|
'systems/foundryvtt-reve-de-dragon/templates/chat-fabriquer-potion-base.html',
|
||||||
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
|
'systems/foundryvtt-reve-de-dragon/templates/chat-signe-draconique-actor.html'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// foundry et options
|
||||||
|
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
|
||||||
|
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
|
||||||
|
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
|
||||||
|
|
||||||
|
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
|
||||||
|
|
||||||
|
// Handle v12 removal of this helper
|
||||||
|
Handlebars.registerHelper('select', function (selected, options) {
|
||||||
|
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
||||||
|
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
|
||||||
|
const html = options.fn(this);
|
||||||
|
return html.replace(rgx, "$& selected");
|
||||||
|
})
|
||||||
|
|
||||||
|
// logic
|
||||||
Handlebars.registerHelper('either', (a, b) => a ?? b);
|
Handlebars.registerHelper('either', (a, b) => a ?? b);
|
||||||
|
// string manipulation
|
||||||
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
Handlebars.registerHelper('upperFirst', str => Misc.upperFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
Handlebars.registerHelper('lowerFirst', str => Misc.lowerFirst(str ?? 'Null'));
|
||||||
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
|
Handlebars.registerHelper('uppercase', str => str?.toUpperCase() ?? '');
|
||||||
@ -271,48 +288,53 @@ export class RdDUtility {
|
|||||||
Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str));
|
Handlebars.registerHelper('grammar-apostrophe', (article, str) => Grammar.apostrophe(article, str));
|
||||||
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
|
Handlebars.registerHelper('grammar-un', str => Grammar.articleIndetermine(str));
|
||||||
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
|
Handlebars.registerHelper('grammar-accord', (genre, ...args) => Grammar.accord(genre, args));
|
||||||
|
|
||||||
Handlebars.registerHelper('RDD_CONFIG', path => RDD_CONFIG[path])
|
// math
|
||||||
|
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
||||||
|
Handlebars.registerHelper('repeat', function(n, block) {
|
||||||
|
let accum = '';
|
||||||
|
for(let i = 0; i < n; ++i){
|
||||||
|
accum += block.fn(i)
|
||||||
|
}
|
||||||
|
return accum
|
||||||
|
})
|
||||||
|
|
||||||
|
// tableaux, listes
|
||||||
|
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
|
||||||
|
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
|
||||||
|
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
|
||||||
|
|
||||||
|
// table de résolution
|
||||||
Handlebars.registerHelper('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
|
Handlebars.registerHelper('computeResolutionScore', (row, col) => RdDResolutionTable.computePercentage(row, col));
|
||||||
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
|
Handlebars.registerHelper('computeResolutionChances', (row, col) => RdDResolutionTable.computeChances(row, col));
|
||||||
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
|
|
||||||
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
|
|
||||||
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
|
|
||||||
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
|
|
||||||
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
|
|
||||||
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
|
|
||||||
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
|
|
||||||
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
|
|
||||||
|
|
||||||
|
// gestion des dates et heures
|
||||||
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
|
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
|
||||||
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
|
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
|
||||||
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
|
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
|
||||||
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
||||||
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
|
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
|
||||||
|
|
||||||
|
// informations sur les acteurs
|
||||||
Handlebars.registerHelper('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
|
Handlebars.registerHelper('actor-default', (actorType, ...path) => RdDBaseActor.getDefaultValue(actorType, path.slice(0, -1)));
|
||||||
|
|
||||||
Handlebars.registerHelper('array-includes', (array, value) => array.includes(value));
|
|
||||||
Handlebars.registerHelper('min', (...args) => Math.min(...args.slice(0, -1)));
|
|
||||||
Handlebars.registerHelper('isLastIndex', (index, list) => index + 1 >= list.length);
|
|
||||||
Handlebars.registerHelper('regle-optionnelle', (option) => ReglesOptionnelles.isUsing(option));
|
|
||||||
Handlebars.registerHelper('trier', list => list.sort((a, b) => a.name.localeCompare(b.name)));
|
|
||||||
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
|
Handlebars.registerHelper('filtreTriCompetences', competences => RdDItemCompetence.triVisible(competences));
|
||||||
Handlebars.registerHelper('linkCompendium', (pack, id, name) => RdDUtility.linkCompendium(pack, id, name));
|
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
|
||||||
|
|
||||||
|
// inventaire et marchands
|
||||||
|
Handlebars.registerHelper('buildLigneInventaire', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildLigneInventaire(item, options)); });
|
||||||
|
Handlebars.registerHelper('buildInventaireConteneur', (actorId, itemId, options) => { return new Handlebars.SafeString(RdDUtility.buildInventaireConteneur(actorId, itemId, options)); });
|
||||||
|
Handlebars.registerHelper('buildContenuConteneur', (item, options) => { return new Handlebars.SafeString(RdDUtility.buildContenuConteneur(item, options)); });
|
||||||
|
Handlebars.registerHelper('calculerPrixCommercant', item => item.calculerPrixCommercant());
|
||||||
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
|
Handlebars.registerHelper('uniteQuantite', (itemId, actorId) => RdDUtility.getItem(itemId, actorId)?.getUniteQuantite());
|
||||||
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
|
Handlebars.registerHelper('isFieldInventaireModifiable', (type, field) => RdDItem.isFieldInventaireModifiable(type, field));
|
||||||
|
// Items
|
||||||
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
|
Handlebars.registerHelper('rarete-getChamp', (rarete, field) => RdDRaretes.getChamp(rarete, field));
|
||||||
|
|
||||||
Handlebars.registerHelper('plusMoins', diff => (diff > 0 ? '+' : '') + Math.round(diff))
|
// TMRs
|
||||||
Handlebars.registerHelper('experienceLog-topic', topic => ExperienceLog.labelTopic(topic));
|
Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord));
|
||||||
|
Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord));
|
||||||
// Handle v12 removal of this helper
|
Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type));
|
||||||
Handlebars.registerHelper('select', function (selected, options) {
|
Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord));
|
||||||
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
|
||||||
const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']');
|
|
||||||
const html = options.fn(this);
|
|
||||||
return html.replace(rgx, "$& selected");
|
|
||||||
});
|
|
||||||
|
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
|
@ -816,12 +816,12 @@ input:is(.blessure-premiers_soins, .blessure-soins_complets) {
|
|||||||
.competence-list .item-controls.hidden-controls {
|
.competence-list .item-controls.hidden-controls {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
.item-controls i:is(.fas, .fa, .fa-solid) {
|
.item-controls i:is(.fas, .fa, .fa-solid, .fa-regular) {
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
color: var(--color-controls);
|
color: var(--color-controls);
|
||||||
}
|
}
|
||||||
.item-controls i:is(.fas, .far, .fa-solid):hover {
|
.item-controls i:is(.fas, .far, .fa-solid, .fa-regular):hover {
|
||||||
opacity: 0.7 ;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rdd-roll-dialog .description-sort {
|
.rdd-roll-dialog .description-sort {
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
<input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
|
<input class="derivee-value" type="number" name="system.compteurs.dissolution.value" value="{{system.compteurs.dissolution.value}}" data-dtype="number"/>
|
||||||
</li>
|
</li>
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
<label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a>Chance actuelle</a></label>
|
<label class="derivee-label chance-actuelle" data-tooltip="Jet de chance actuelle"><a class="roll-chance-actuelle">Chance actuelle</a></label>
|
||||||
<input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/>
|
<input class="derivee-value" type="number" name="system.compteurs.chance.value" value="{{system.compteurs.chance.value}}" data-dtype="number"/>
|
||||||
</li>
|
</li>
|
||||||
<li class="caracteristique flexrow list-item">
|
<li class="caracteristique flexrow list-item">
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.empathie}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.empathie}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.intellect}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.intellect}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.reve actuel=export.reve_actuel button-name='ptreve-actuel'}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.reve actuel=export.reve_actuel button-name='ptreve-actuel'}}
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac.hbs" carac=export.chance}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-compteur.hbs" carac=export.chance actuel=export.chance_actuel button-name='chance-actuelle'}}
|
||||||
</div>
|
</div>
|
||||||
<div class="flexcol flex-group-top">
|
<div class="flexcol flex-group-top">
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" carac=export.melee}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/carac-derivee.hbs" carac=export.melee}}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{{#if sortsReserve.length}}
|
{{#if sortsReserve.length}}
|
||||||
<h3>Sorts en Réserve{{#if options.isGM}} <a class="nouveau-sort-reserve"><i class="fa-solid fa-sparkles"></i>
|
<h3>Sorts en Réserve{{#if options.isGM}} <a class="sortreserve-add">
|
||||||
</a>{{/if}}
|
<i class="fa-solid fa-sparkles"></i>
|
||||||
|
</a>{{/if}}
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each (trier sortsReserve) as |sort key|}}
|
{{#each (trier sortsReserve) as |sort key|}}
|
||||||
|
@ -2,19 +2,28 @@
|
|||||||
<h3>Sorts</h3>
|
<h3>Sorts</h3>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
{{#each (trier sorts) as |sort key|}}
|
{{#each (trier sorts) as |sort key|}}
|
||||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
|
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}" data-tooltip="{{#if sort.system.isrituel}}Rituel{{else}}Sort{{/if}}: {{sort.name}}">
|
||||||
<img class="sheet-competence-img" src="{{sort.img}}"/>
|
<img class="sheet-competence-img" src="{{sort.img}}"/>
|
||||||
<span class="flex-shrink">{{itemSort-shortDraconic sort.system.draconic}}</span>
|
<span class="flex-shrink">{{itemSort-shortDraconic sort.system.draconic}}</span>
|
||||||
<span class="item-edit flex-grow-3">{{sort.name}}{{#if sort.system.isrituel}}
|
<span class="item-edit flex-grow-3">{{sort.name}}
|
||||||
<i class="fa-regular fa-book-sparkles"></i>{{/if}}</span>
|
{{#if sort.system.isrituel}}<i class="fa-solid fa-book-sparkles"></i>{{/if}}
|
||||||
|
{{#if sort.system.coutseuil}}
|
||||||
|
{{#repeat sort.system.coutseuil}}<i class="fa-solid fa-star-sharp" data-tooltip="coût de seuil: {{sort.system.coutseuil}}"></i>{{/repeat}}
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
<span class="flex-grow-2">
|
<span class="flex-grow-2">
|
||||||
{{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
{{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
||||||
</span>
|
</span>
|
||||||
<span class="flex-grow-1">R{{itemSort-spaceIfText sort.system.difficulte}} r{{itemSort-spaceIfText sort.system.ptreve}}</span>
|
<span class="flex-grow-1">R{{itemSort-spaceIfText sort.system.difficulte}} r{{itemSort-spaceIfText sort.system.ptreve}}</span>
|
||||||
<div class="item-controls flex-shrink">
|
<div class="item-controls flex-shrink">
|
||||||
<a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
|
<a class="item-edit" data-tooltip="Modifier"><i class="fas fa-edit"></i></a>
|
||||||
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
|
<a class="item-delete" data-tooltip="Supprimer"><i class="fas fa-trash"></i></a>
|
||||||
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
|
<a class="item-montrer" data-tooltip="Montrer"><i class="fas fa-comment"></i></a>
|
||||||
|
{{#if (and @root.options.isGM (not sort.system.isrituel))}}
|
||||||
|
<a class="sortreserve-add" data-tooltip="Ajouter ce sort en réserve">
|
||||||
|
<i class="fa-solid fa-sparkles"></i>
|
||||||
|
</a>
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
Loading…
Reference in New Issue
Block a user